From 9e1efc42d31b823ef7f11841fb50e51fd92faeb9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 09:12:18 +0000 Subject: [PATCH 001/640] Initial commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000000..dc55f7cd218c --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# sentry-unplugin From 3d19c3ca8edebaa6faf6151fe3befb404244e306 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 12:56:27 +0200 Subject: [PATCH 002/640] build(unplugin): Add `build` and `build:watch` commands (#9) --- .gitignore | 2 + lerna.json | 7 + package.json | 17 + packages/tsconfigs/base-config.json | 17 + packages/tsconfigs/package.json | 5 + packages/unplugin/.babelrc.json | 3 + packages/unplugin/.gitignore | 1 + packages/unplugin/package.json | 27 + packages/unplugin/rollup.config.js | 36 + packages/unplugin/src/index.ts | 5 + packages/unplugin/tsconfig.json | 8 + yarn.lock | 6611 +++++++++++++++++++++++++++ 12 files changed, 6739 insertions(+) create mode 100644 .gitignore create mode 100644 lerna.json create mode 100644 package.json create mode 100644 packages/tsconfigs/base-config.json create mode 100644 packages/tsconfigs/package.json create mode 100644 packages/unplugin/.babelrc.json create mode 100644 packages/unplugin/.gitignore create mode 100644 packages/unplugin/package.json create mode 100644 packages/unplugin/rollup.config.js create mode 100644 packages/unplugin/src/index.ts create mode 100644 packages/unplugin/tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..93cab344de41 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +yarn-error.log diff --git a/lerna.json b/lerna.json new file mode 100644 index 000000000000..ad32ca8d6f18 --- /dev/null +++ b/lerna.json @@ -0,0 +1,7 @@ +{ + "lerna": "3.4.0", + "version": "7.3.0", + "packages": "packages/*", + "npmClient": "yarn", + "useWorkspaces": true +} diff --git a/package.json b/package.json new file mode 100644 index 000000000000..bc1e81d487a5 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "sentry-unplugin-root", + "version": "0.0.0", + "description": "Root of the sentry unplugin monorepo.", + "repository": "git@github.com:lforst/sentry-unplugin.git", + "private": true, + "workspaces": [ + "packages/*" + ], + "scripts": { + "build": "lerna run --parallel build", + "build:watch": "lerna run --parallel build:watch" + }, + "devDependencies": { + "lerna": "3.13.4" + } +} diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json new file mode 100644 index 000000000000..71e1fd48700a --- /dev/null +++ b/packages/tsconfigs/base-config.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "moduleResolution": "node", + "skipLibCheck": true, + "isolatedModules": true, + "forceConsistentCasingInFileNames": true, + + "strict": true, + + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "exactOptionalPropertyTypes": false + } +} diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json new file mode 100644 index 000000000000..a64464ad6997 --- /dev/null +++ b/packages/tsconfigs/package.json @@ -0,0 +1,5 @@ +{ + "name": "sentry-unplugin-tsconfigs", + "version": "0.0.0", + "private": true +} diff --git a/packages/unplugin/.babelrc.json b/packages/unplugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/unplugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/unplugin/.gitignore b/packages/unplugin/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/unplugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json new file mode 100644 index 000000000000..e0c4129153ce --- /dev/null +++ b/packages/unplugin/package.json @@ -0,0 +1,27 @@ +{ + "name": "sentry-unplugin", + "version": "0.0.1", + "description": "Sentry unplugin.", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "repository": "https://github.com/lforst/sentry-unplugin", + "scripts": { + "build": "run-p build", + "build:watch": "run-p build:rollup:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch" + }, + "dependencies": {}, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-node-resolve": "13.3.0", + "@types/node": "^8", + "npm-run-all": "^4.1.5", + "rollup": "2.75.7", + "sentry-unplugin-tsconfigs": "*" + } +} diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js new file mode 100644 index 000000000000..fd4ab998e842 --- /dev/null +++ b/packages/unplugin/rollup.config.js @@ -0,0 +1,36 @@ +import commonjs from "@rollup/plugin-commonjs"; +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; + +const input = ["src/index.ts"]; + +const extensions = [".js", ".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies)], + plugins: [ + resolve({ extensions }), + commonjs(), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts new file mode 100644 index 000000000000..86fb756c209c --- /dev/null +++ b/packages/unplugin/src/index.ts @@ -0,0 +1,5 @@ +function helloWorld() { + console.log("Hello world!"); +} + +export { helloWorld }; diff --git a/packages/unplugin/tsconfig.json b/packages/unplugin/tsconfig.json new file mode 100644 index 000000000000..c99f63d208db --- /dev/null +++ b/packages/unplugin/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "sentry-unplugin-tsconfigs/base-config.json", + "compilerOptions": { + "esModuleInterop": true, + "types": ["node"] + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000000..40626e21665e --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6611 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + +"@babel/core@7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== + dependencies: + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.17.12" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-new-target@^7.17.12": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-typescript@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" + integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-typescript" "^7.17.12" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.17.12" + +"@babel/runtime@^7.8.4": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.4.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@lerna/add@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.3.tgz#f4c1674839780e458f0426d4f7b6d0a77b9a2ae9" + integrity sha512-T3/Lsbo9ZFq+vL3ssaHxA8oKikZAPTJTGFe4CRuQgWCDd/M61+51jeWsngdaHpwzSSRDRjxg8fJTG10y10pnfA== + dependencies: + "@lerna/bootstrap" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/npm-conf" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^1.2.0" + pacote "^9.5.0" + semver "^5.5.0" + +"@lerna/batch-packages@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.13.0.tgz#697fde5be28822af9d9dca2f750250b90a89a000" + integrity sha512-TgLBTZ7ZlqilGnzJ3xh1KdAHcySfHytgNRTdG9YomfriTU6kVfp1HrXxKJYVGs7ClPUNt2CTFEOkw0tMBronjw== + dependencies: + "@lerna/package-graph" "3.13.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/bootstrap@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.3.tgz#a0e5e466de5c100b49d558d39139204fc4db5c95" + integrity sha512-2XzijnLHRZOVQh8pwS7+5GR3cG4uh+EiLrWOishCq2TVzkqgjaS3GGBoef7KMCXfWHoLqAZRr/jEdLqfETLVqg== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/has-npm-version" "3.13.3" + "@lerna/npm-install" "3.13.3" + "@lerna/package-graph" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.13.3" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/symlink-binary" "3.13.0" + "@lerna/symlink-dependencies" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^3.2.0" + multimatch "^2.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^1.2.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^5.5.0" + +"@lerna/changed@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.4.tgz#c69d8a079999e49611dd58987f08437baee81ad4" + integrity sha512-9lfOyRVObasw6L/z7yCSfsEl1QKy0Eamb8t2Krg1deIoAt+cE3JXOdGGC1MhOSli+7f/U9LyLXjJzIOs/pc9fw== + dependencies: + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/listable" "3.13.0" + "@lerna/output" "3.13.0" + "@lerna/version" "3.13.4" + +"@lerna/check-working-tree@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.13.3.tgz#836a3ffd4413a29aca92ccca4a115e4f97109992" + integrity sha512-LoGZvTkne+V1WpVdCTU0XNzFKsQa2AiAFKksGRT0v8NQj6VAPp0jfVYDayTqwaWt2Ne0OGKOFE79Y5LStOuhaQ== + dependencies: + "@lerna/describe-ref" "3.13.3" + "@lerna/validation-error" "3.13.0" + +"@lerna/child-process@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.13.3.tgz#6c084ee5cca9fc9e04d6bf4fc3f743ed26ff190c" + integrity sha512-3/e2uCLnbU+bydDnDwyadpOmuzazS01EcnOleAnuj9235CU2U97DH6OyoG1EW/fU59x11J+HjIqovh5vBaMQjQ== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + +"@lerna/clean@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.3.tgz#5673a1238e0712d31711e7e4e8cb9641891daaea" + integrity sha512-xmNauF1PpmDaKdtA2yuRc23Tru4q7UMO6yB1a/TTwxYPYYsAWG/CBK65bV26J7x4RlZtEv06ztYGMa9zh34UXA== + dependencies: + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.13.3" + p-map "^1.2.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + +"@lerna/cli@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.13.0.tgz#3d7b357fdd7818423e9681a7b7f2abd106c8a266" + integrity sha512-HgFGlyCZbYaYrjOr3w/EsY18PdvtsTmDfpUQe8HwDjXlPeCCUgliZjXLOVBxSjiOvPeOSwvopwIHKWQmYbwywg== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^12.0.1" + +"@lerna/collect-updates@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.13.3.tgz#616648da59f0aff4a8e60257795cc46ca6921edd" + integrity sha512-sTpALOAxli/ZS+Mjq6fbmjU9YXqFJ2E4FrE1Ijl4wPC5stXEosg2u0Z1uPY+zVKdM+mOIhLxPVdx83rUgRS+Cg== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/describe-ref" "3.13.3" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^1.0.0" + +"@lerna/command@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.3.tgz#5b20b3f507224573551039e0460bc36c39f7e9d1" + integrity sha512-WHFIQCubJV0T8gSLRNr6exZUxTswrh+iAtJCb86SE0Sa+auMPklE8af7w2Yck5GJfewmxSjke3yrjNxQrstx7w== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/package-graph" "3.13.0" + "@lerna/project" "3.13.1" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^1.0.10" + lodash "^4.17.5" + npmlog "^4.1.2" + +"@lerna/conventional-commits@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.13.0.tgz#877aa225ca34cca61c31ea02a5a6296af74e1144" + integrity sha512-BeAgcNXuocmLhPxnmKU2Vy8YkPd/Uo+vu2i/p3JGsUldzrPC8iF3IDxH7fuXpEFN2Nfogu7KHachd4tchtOppA== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^4.0.4" + fs-extra "^7.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^3.0.0" + semver "^5.5.0" + +"@lerna/create-symlink@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.13.0.tgz#e01133082fe040779712c960683cb3a272b67809" + integrity sha512-PTvg3jAAJSAtLFoZDsuTMv1wTOC3XYIdtg54k7uxIHsP8Ztpt+vlilY/Cni0THAqEMHvfiToel76Xdta4TU21Q== + dependencies: + cmd-shim "^2.0.2" + fs-extra "^7.0.0" + npmlog "^4.1.2" + +"@lerna/create@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.3.tgz#6ded142c54b7f3cea86413c3637b067027b7f55d" + integrity sha512-4M5xT1AyUMwt1gCDph4BfW3e6fZmt0KjTa3FoXkUotf/w/eqTsc2IQ+ULz2+gOFQmtuNbqIZEOK3J4P9ArJJ/A== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/npm-conf" "3.13.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^7.0.0" + globby "^8.0.1" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pacote "^9.5.0" + pify "^3.0.0" + semver "^5.5.0" + slash "^1.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + +"@lerna/describe-ref@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.13.3.tgz#13318513613f6a407d37fc5dc025ec2cfb705606" + integrity sha512-5KcLTvjdS4gU5evW8ESbZ0BF44NM5HrP3dQNtWnOUSKJRgsES8Gj0lq9AlB2+YglZfjEftFT03uOYOxnKto4Uw== + dependencies: + "@lerna/child-process" "3.13.3" + npmlog "^4.1.2" + +"@lerna/diff@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.3.tgz#883cb3a83a956dbfc2c17bc9a156468a5d3fae17" + integrity sha512-/DRS2keYbnKaAC+5AkDyZRGkP/kT7v1GlUS0JGZeiRDPQ1H6PzhX09EgE5X6nj0Ytrm0sUasDeN++CDVvgaI+A== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/exec@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.3.tgz#5d2eda3f6e584f2f15b115e8a4b5bc960ba5de85" + integrity sha512-c0bD4XqM96CTPV8+lvkxzE7mkxiFyv/WNM4H01YvvbFAJzk+S4Y7cBtRkIYFTfkFZW3FLo8pEgtG1ONtIdM+tg== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/validation-error" "3.13.0" + +"@lerna/filter-options@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.13.3.tgz#aa42a4ab78837b8a6c4278ba871d27e92d77c54f" + integrity sha512-DbtQX4eRgrBz1wCFWRP99JBD7ODykYme9ykEK79+RrKph40znhJQRlLg4idogj6IsUEzwo1OHjihCzSfnVo6Cg== + dependencies: + "@lerna/collect-updates" "3.13.3" + "@lerna/filter-packages" "3.13.0" + dedent "^0.7.0" + +"@lerna/filter-packages@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.13.0.tgz#f5371249e7e1a15928e5e88c544a242e0162c21c" + integrity sha512-RWiZWyGy3Mp7GRVBn//CacSnE3Kw82PxE4+H6bQ3pDUw/9atXn7NRX+gkBVQIYeKamh7HyumJtyOKq3Pp9BADQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^2.1.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.13.0.tgz#335e40d77f3c1855aa248587d3e0b2d8f4b06e16" + integrity sha512-EgSim24sjIjqQDC57bgXD9l22/HCS93uQBbGpkzEOzxAVzEgpZVm7Fm1t8BVlRcT2P2zwGnRadIvxTbpQuDPTg== + dependencies: + fs-extra "^7.0.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.13.3.tgz#bcf9b4ff40bdd104cb40cd257322f052b41bb9ce" + integrity sha512-fcJkjab4kX0zcLLSa/DCUNvU3v8wmy2c1lhdIbL7s7gABmDcV0QZq93LhnEee3VkC9UpnJ6GKG4EkD7eIifBnA== + dependencies: + "@lerna/child-process" "3.13.3" + "@octokit/plugin-enterprise-rest" "^2.1.1" + "@octokit/rest" "^16.16.0" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + +"@lerna/has-npm-version@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.13.3.tgz#167e3f602a2fb58f84f93cf5df39705ca6432a2d" + integrity sha512-mQzoghRw4dBg0R9FFfHrj0TH0glvXyzdEZmYZ8Isvx5BSuEEwpsryoywuZSdppcvLu8o7NAdU5Tac8cJ/mT52w== + dependencies: + "@lerna/child-process" "3.13.3" + semver "^5.5.0" + +"@lerna/import@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.4.tgz#e9a1831b8fed33f3cbeab3b84c722c9371a2eaf7" + integrity sha512-dn6eNuPEljWsifBEzJ9B6NoaLwl/Zvof7PBUPA4hRyRlqG5sXRn6F9DnusMTovvSarbicmTURbOokYuotVWQQA== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^7.0.0" + p-map-series "^1.0.0" + +"@lerna/init@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.3.tgz#ebd522fee9b9d7d3b2dacb0261eaddb4826851ff" + integrity sha512-bK/mp0sF6jT0N+c+xrbMCqN4xRoiZCXQzlYsyACxPK99KH/mpHv7hViZlTYUGlYcymtew6ZC770miv5A9wF9hA== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + fs-extra "^7.0.0" + p-map "^1.2.0" + write-json-file "^2.3.0" + +"@lerna/link@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.3.tgz#11124d4a0c8d0b79752fbda3babedfd62dd57847" + integrity sha512-IHhtdhA0KlIdevCsq6WHkI2rF3lHWHziJs2mlrEWAKniVrFczbELON1KJAgdJS1k3kAP/WeWVqmIYZ2hJDxMvg== + dependencies: + "@lerna/command" "3.13.3" + "@lerna/package-graph" "3.13.0" + "@lerna/symlink-dependencies" "3.13.0" + p-map "^1.2.0" + slash "^1.0.0" + +"@lerna/list@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.3.tgz#fa93864d43cadeb4cd540a4e78a52886c57dbe74" + integrity sha512-rLRDsBCkydMq2FL6WY1J/elvnXIjxxRtb72lfKHdvDEqVdquT5Qgt9ci42hwjmcocFwWcFJgF6BZozj5pbc13A== + dependencies: + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/listable" "3.13.0" + "@lerna/output" "3.13.0" + +"@lerna/listable@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.13.0.tgz#babc18442c590b549cf0966d20d75fea066598d4" + integrity sha512-liYJ/WBUYP4N4MnSVZuLUgfa/jy3BZ02/1Om7xUY09xGVSuNVNEeB8uZUMSC+nHqFHIsMPZ8QK9HnmZb1E/eTA== + dependencies: + "@lerna/batch-packages" "3.13.0" + chalk "^2.3.1" + columnify "^1.5.4" + +"@lerna/log-packed@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.13.0.tgz#497b5f692a8d0e3f669125da97b0dadfd9e480f3" + integrity sha512-Rmjrcz+6aM6AEcEVWmurbo8+AnHOvYtDpoeMMJh9IZ9SmZr2ClXzmD7wSvjTQc8BwOaiWjjC/ukcT0UYA2m7wg== + dependencies: + byte-size "^4.0.3" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.13.0.tgz#6b434ed75ff757e8c14381b9bbfe5d5ddec134a7" + integrity sha512-Jg2kANsGnhg+fbPEzE0X9nX5oviEAvWj0nYyOkcE+cgWuT7W0zpnPXC4hA4C5IPQGhwhhh0IxhWNNHtjTuw53g== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +"@lerna/npm-dist-tag@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.13.0.tgz#49ecbe0e82cbe4ad4a8ea6de112982bf6c4e6cd4" + integrity sha512-mcuhw34JhSRFrbPn0vedbvgBTvveG52bR2lVE3M3tfE8gmR/cKS/EJFO4AUhfRKGCTFn9rjaSEzlFGYV87pemQ== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npm-registry-fetch "^3.9.0" + npmlog "^4.1.2" + +"@lerna/npm-install@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.13.3.tgz#9b09852732e51c16d2e060ff2fd8bfbbb49cf7ba" + integrity sha512-7Jig9MLpwAfcsdQ5UeanAjndChUjiTjTp50zJ+UZz4CbIBIDhoBehvNMTCL2G6pOEC7sGEg6sAqJINAqred6Tg== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^7.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + +"@lerna/npm-publish@3.13.2": + version "3.13.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.13.2.tgz#ad713ca6f91a852687d7d0e1bda7f9c66df21768" + integrity sha512-HMucPyEYZfom5tRJL4GsKBRi47yvSS2ynMXYxL3kO0ie+j9J7cb0Ir8NmaAMEd3uJWJVFCPuQarehyfTDZsSxg== + dependencies: + "@lerna/run-lifecycle" "3.13.0" + figgy-pudding "^3.5.1" + fs-extra "^7.0.0" + libnpmpublish "^1.1.1" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^3.0.0" + read-package-json "^2.0.13" + +"@lerna/npm-run-script@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.13.3.tgz#9bb6389ed70cd506905d6b05b6eab336b4266caf" + integrity sha512-qR4o9BFt5hI8Od5/DqLalOJydnKpiQFEeN0h9xZi7MwzuX1Ukwh3X22vqsX4YRbipIelSFtrDzleNVUm5jj0ow== + dependencies: + "@lerna/child-process" "3.13.3" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.13.1.tgz#5ad4d0945f86a648f565e24d53c1e01bb3a912d1" + integrity sha512-kXnyqrkQbCIZOf1054N88+8h0ItC7tUN5v9ca/aWpx298gsURpxUx/1TIKqijL5TOnHMyIkj0YJmnH/PyBVLKA== + dependencies: + "@lerna/get-packed" "3.13.0" + "@lerna/package" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + figgy-pudding "^3.5.1" + npm-packlist "^1.4.1" + npmlog "^4.1.2" + tar "^4.4.8" + temp-write "^3.4.0" + +"@lerna/package-graph@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.13.0.tgz#607062f8d2ce22b15f8d4a0623f384736e67f760" + integrity sha512-3mRF1zuqFE1HEFmMMAIggXy+f+9cvHhW/jzaPEVyrPNLKsyfJQtpTNzeI04nfRvbAh+Gd2aNksvaW/w3xGJnnw== + dependencies: + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + semver "^5.5.0" + +"@lerna/package@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.13.0.tgz#4baeebc49a57fc9b31062cc59f5ee38384429fc8" + integrity sha512-kSKO0RJQy093BufCQnkhf1jB4kZnBvL7kK5Ewolhk5gwejN+Jofjd8DGRVUDUJfQ0CkW1o6GbUeZvs8w8VIZDg== + dependencies: + load-json-file "^4.0.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + +"@lerna/project@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.13.1.tgz#bce890f60187bd950bcf36c04b5260642e295e79" + integrity sha512-/GoCrpsCCTyb9sizk1+pMBrIYchtb+F1uCOn3cjn9yenyG/MfYEnlfrbV5k/UDud0Ei75YBLbmwCbigHkAKazQ== + dependencies: + "@lerna/package" "3.13.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.1.0" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^3.1.0" + globby "^8.0.1" + load-json-file "^4.0.0" + npmlog "^4.1.2" + p-map "^1.2.0" + resolve-from "^4.0.0" + write-json-file "^2.3.0" + +"@lerna/prompt@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.13.0.tgz#53571462bb3f5399cc1ca6d335a411fe093426a5" + integrity sha512-P+lWSFokdyvYpkwC3it9cE0IF2U5yy2mOUbGvvE4iDb9K7TyXGE+7lwtx2thtPvBAfIb7O13POMkv7df03HJeA== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + +"@lerna/publish@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.4.tgz#25b678c285110897a7fc5198a35bdfa9db7f9cc1" + integrity sha512-v03pabiPlqCDwX6cVNis1PDdT6/jBgkVb5Nl4e8wcJXevIhZw3ClvtI94gSZu/wdoVFX0RMfc8QBVmaimSO0qg== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/check-working-tree" "3.13.3" + "@lerna/child-process" "3.13.3" + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/describe-ref" "3.13.3" + "@lerna/log-packed" "3.13.0" + "@lerna/npm-conf" "3.13.0" + "@lerna/npm-dist-tag" "3.13.0" + "@lerna/npm-publish" "3.13.2" + "@lerna/output" "3.13.0" + "@lerna/pack-directory" "3.13.1" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.13.4" + figgy-pudding "^3.5.1" + fs-extra "^7.0.0" + libnpmaccess "^3.0.1" + npm-package-arg "^6.1.0" + npm-registry-fetch "^3.9.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^1.2.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + pacote "^9.5.0" + semver "^5.5.0" + +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== + dependencies: + npmlog "^4.1.2" + +"@lerna/resolve-symlink@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.13.0.tgz#3e6809ef53b63fe914814bfa071cd68012e22fbb" + integrity sha512-Lc0USSFxwDxUs5JvIisS8JegjA6SHSAWJCMvi2osZx6wVRkEDlWG2B1JAfXUzCMNfHoZX0/XX9iYZ+4JIpjAtg== + dependencies: + fs-extra "^7.0.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" + +"@lerna/rimraf-dir@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.13.3.tgz#3a8e71317fde853893ef0262bc9bba6a180b7227" + integrity sha512-d0T1Hxwu3gpYVv73ytSL+/Oy8JitsmvOYUR5ouRSABsmqS7ZZCh5t6FgVDDGVXeuhbw82+vuny1Og6Q0k4ilqw== + dependencies: + "@lerna/child-process" "3.13.3" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" + +"@lerna/run-lifecycle@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.13.0.tgz#d8835ee83425edee40f687a55f81b502354d3261" + integrity sha512-oyiaL1biZdjpmjh6X/5C4w07wNFyiwXSSHH5GQB4Ay4BPwgq9oNhCcxRoi0UVZlZ1YwzSW8sTwLgj8emkIo3Yg== + dependencies: + "@lerna/npm-conf" "3.13.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^2.1.0" + npmlog "^4.1.2" + +"@lerna/run-parallel-batches@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.13.0.tgz#0276bb4e7cd0995297db82d134ca2bd08d63e311" + integrity sha512-bICFBR+cYVF1FFW+Tlm0EhWDioTUTM6dOiVziDEGE1UZha1dFkMYqzqdSf4bQzfLS31UW/KBd/2z8jy2OIjEjg== + dependencies: + p-map "^1.2.0" + p-map-series "^1.0.0" + +"@lerna/run@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.3.tgz#0781c82d225ef6e85e28d3e763f7fc090a376a21" + integrity sha512-ygnLIfIYS6YY1JHWOM4CsdZiY8kTYPsDFOLAwASlRnlAXF9HiMT08GFXLmMHIblZJ8yJhsM2+QgraCB0WdxzOQ== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/npm-run-script" "3.13.3" + "@lerna/output" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^1.2.0" + +"@lerna/symlink-binary@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.13.0.tgz#36a9415d468afcb8105750296902f6f000a9680d" + integrity sha512-obc4Y6jxywkdaCe+DB0uTxYqP0IQ8mFWvN+k/YMbwH4G2h7M7lCBWgPy8e7xw/50+1II9tT2sxgx+jMus1sTJg== + dependencies: + "@lerna/create-symlink" "3.13.0" + "@lerna/package" "3.13.0" + fs-extra "^7.0.0" + p-map "^1.2.0" + +"@lerna/symlink-dependencies@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.13.0.tgz#76c23ecabda7824db98a0561364f122b457509cf" + integrity sha512-7CyN5WYEPkbPLbqHBIQg/YiimBzb5cIGQB0E9IkLs3+racq2vmUNQZn38LOaazQacAA83seB+zWSxlI6H+eXSg== + dependencies: + "@lerna/create-symlink" "3.13.0" + "@lerna/resolve-symlink" "3.13.0" + "@lerna/symlink-binary" "3.13.0" + fs-extra "^7.0.0" + p-finally "^1.0.0" + p-map "^1.2.0" + p-map-series "^1.0.0" + +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.4.tgz#ea23b264bebda425ccbfcdcd1de13ef45a390e59" + integrity sha512-pptWUEgN/lUTQZu34+gfH1g4Uhs7TDKRcdZY9A4T9k6RTOwpKC2ceLGiXdeR+ZgQJAey2C4qiE8fo5Z6Rbc6QA== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/check-working-tree" "3.13.3" + "@lerna/child-process" "3.13.3" + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/conventional-commits" "3.13.0" + "@lerna/github-client" "3.13.3" + "@lerna/output" "3.13.0" + "@lerna/prompt" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^1.2.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^5.5.0" + slash "^1.0.0" + temp-write "^3.4.0" + +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^2.3.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@octokit/auth-token@^2.4.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + dependencies: + "@octokit/types" "^6.0.3" + +"@octokit/endpoint@^6.0.1": + version "6.0.12" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + dependencies: + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^12.4.0": + version "12.4.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.4.0.tgz#fd8bf5db72bd566c5ba2cb76754512a9ebe66e71" + integrity sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA== + +"@octokit/plugin-enterprise-rest@^2.1.1": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.2.2.tgz#c0e22067a043e19f96ff9c7832e2a3019f9be75c" + integrity sha512-CTZr64jZYhGWNTDGlSJ2mvIlFsm9OEO3LqWn9I/gmoHI4jRBp4kpHoFYNemG4oA75zUAcmbuWblb7jjP877YZw== + +"@octokit/plugin-paginate-rest@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== + dependencies: + "@octokit/types" "^2.0.1" + +"@octokit/plugin-request-log@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== + dependencies: + "@octokit/types" "^2.0.1" + deprecation "^2.3.1" + +"@octokit/request-error@^1.0.2": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request-error@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + dependencies: + "@octokit/types" "^6.0.3" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.2.0": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.16.1" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/rest@^16.16.0": + version "16.43.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" + integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/plugin-paginate-rest" "^1.1.1" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "2.4.0" + "@octokit/request" "^5.2.0" + "@octokit/request-error" "^1.0.2" + atob-lite "^2.0.0" + before-after-hook "^2.0.0" + btoa-lite "^1.0.0" + deprecation "^2.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + once "^1.4.0" + universal-user-agent "^4.0.0" + +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== + dependencies: + "@types/node" ">= 8" + +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": + version "6.37.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.37.1.tgz#600a9c9643f696ba68f229c8d71abbc1040ad6a6" + integrity sha512-Q1hXSP2YumHkDdD+V4wFKr7vJ9+8tjocixrTSb75JzJ4GpjSyu5B4kpgrXxO6GOs4nOmVyRwRgS4/RO/Lf9oEA== + dependencies: + "@octokit/openapi-types" "^12.4.0" + +"@rollup/plugin-babel@5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-commonjs@22.0.1": + version "22.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" + integrity sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-node-resolve@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + deepmerge "^4.2.2" + is-builtin-module "^3.1.0" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/estree@*": + version "0.0.52" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" + integrity sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/node@*", "@types/node@>= 8": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + +"@types/node@^8": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +JSONStream@^1.0.4, JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atob-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +before-after-hook@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" + integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^4.20.2, browserslist@^4.21.0: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + dependencies: + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" + +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== + +byte-size@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" + integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== + +cacache@^11.3.3: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^12.0.0, cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q== + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001358: + version "1.0.30001359" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" + integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^2.0.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +cmd-shim@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.1.0.tgz#e59a08d4248dda3bb502044083a4db4ac890579a" + integrity sha512-A5C0Cyf2H8sKsHqX0tvIWRXw5/PK++3Dc0lDbsugr90nOECLLuSPahVQBG8pgmgiXgm/TzBWMqI2rWdZwHduAw== + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +columnify@^1.5.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +conventional-changelog-angular@^5.0.3: + version "5.0.13" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-core@^3.1.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== + dependencies: + conventional-changelog-writer "^4.0.6" + conventional-commits-parser "^3.0.3" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.3" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^3.0.0" + +conventional-changelog-preset-loader@^2.1.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^4.0.6: + version "4.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" + integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== + dependencies: + compare-func "^2.0.0" + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.0.2, conventional-commits-parser@^3.0.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +conventional-recommended-bump@^4.0.4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-4.1.1.tgz#37014fadeda267d0607e2fc81124da840a585127" + integrity sha512-JT2vKfSP9kR18RXXf55BRY1O3AHG8FPg5btP3l7LYfcWJsiXI6MCf30DepQ98E8Qhowvgv7a8iev0J1bEDkTFA== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.1.1" + conventional-commits-filter "^2.0.2" + conventional-commits-parser "^3.0.2" + git-raw-commits "2.0.0" + git-semver-tags "^2.0.2" + meow "^4.0.0" + q "^1.5.1" + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" + integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== + dependencies: + browserslist "^4.21.0" + semver "7.0.0" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== + +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw== + dependencies: + number-is-nan "^1.0.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== + +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + dependencies: + clone "^1.0.2" + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +dezalgo@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dot-prop@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" + integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== + dependencies: + is-obj "^1.0.0" + +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-to-chromium@^1.4.164: + version "1.4.170" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" + integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg== + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +git-raw-commits@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^2.0.2, git-semver-tags@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" + integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== + dependencies: + meow "^4.0.0" + semver "^6.0.0" + +git-up@^4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" + integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== + dependencies: + is-ssh "^1.3.0" + parse-url "^6.0.0" + +git-url-parse@^11.1.2: + version "11.6.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" + integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== + dependencies: + git-up "^4.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +handlebars@^4.7.6: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-unicode@^2.0.0, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + +ignore-walk@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.2, ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +inquirer@^6.2.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +is-core-module@^2.5.0, is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-ssh@^1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" + integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== + dependencies: + protocols "^1.1.0" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +lerna@3.13.4: + version "3.13.4" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.4.tgz#03026c11c5643f341fda42e4fb1882e2df35e6cb" + integrity sha512-qTp22nlpcgVrJGZuD7oHnFbTk72j2USFimc2Pj4kC0/rXmcU2xPtCiyuxLl8y6/6Lj5g9kwEuvKDZtSXujjX/A== + dependencies: + "@lerna/add" "3.13.3" + "@lerna/bootstrap" "3.13.3" + "@lerna/changed" "3.13.4" + "@lerna/clean" "3.13.3" + "@lerna/cli" "3.13.0" + "@lerna/create" "3.13.3" + "@lerna/diff" "3.13.3" + "@lerna/exec" "3.13.3" + "@lerna/import" "3.13.4" + "@lerna/init" "3.13.3" + "@lerna/link" "3.13.3" + "@lerna/list" "3.13.3" + "@lerna/publish" "3.13.4" + "@lerna/run" "3.13.3" + "@lerna/version" "3.13.4" + import-local "^1.0.0" + npmlog "^4.1.2" + +libnpmaccess@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" + integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== + dependencies: + aproba "^2.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + +libnpmpublish@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" + integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + semver "^5.5.1" + ssri "^6.0.1" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.template@^4.0.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +macos-release@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" + integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-fetch-happen@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" + integrity sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA== + dependencies: + agentkeepalive "^3.4.1" + cacache "^11.3.3" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multimatch@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + integrity sha512-0mzK8ymiWdehTBiJh0vClAzGyQbdtyWqzSVx//EK4N/D+599RFlGfTAsKw2zMSABtDG9C6Ul2+t8f2Lbdjf5mA== + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-gyp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-4.0.0.tgz#972654af4e5dd0cd2a19081b4b46fe0442ba6f45" + integrity sha512-2XiryJ8sICNo6ej8d0idXDEMKfVfFK7kekGCtJAuelGsYHQxhj13KTf95swTCN2dZ/4lTfZ84Fu31jqJEEgjWA== + dependencies: + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^4.4.8" + which "1" + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-url@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-bundled@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-lifecycle@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.1.tgz#0027c09646f0fd346c5c93377bdaba59c6748fdf" + integrity sha512-+Vg6I60Z75V/09pdcH5iUo/99Q/vop35PaI99elvxk56azSVVsdsSsS/sXqKDNwbRRNN1qSxkcO45ZOu0yOWew== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^4.0.0" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.12, npm-packlist@^1.4.1: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-registry-fetch@^3.9.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz#00ff6e4e35d3f75a172b332440b53e93f4cb67de" + integrity sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^4.0.2" + npm-package-arg "^6.1.0" + +npm-registry-fetch@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7" + integrity sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" + +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + dependencies: + array.prototype.reduce "^1.0.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +osenv@0, osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg== + dependencies: + p-reduce "^1.0.0" + +p-map@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-pipe@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +p-waterfall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg== + dependencies: + p-reduce "^1.0.0" + +pacote@^9.5.0: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== + dependencies: + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-path@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + qs "^6.9.4" + query-string "^6.13.8" + +parse-url@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" + integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== + dependencies: + is-ssh "^1.3.0" + normalize-url "^6.1.0" + parse-path "^4.0.0" + protocols "^1.4.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== + dependencies: + find-up "^2.1.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw== + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.8" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qs@^6.9.4: + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^6.13.8: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +read-cmd-shim@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.1.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-tree@^5.1.6: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw== + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rollup@2.75.7: + version "2.75.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== + optionalDependencies: + fsevents "~2.3.2" + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shell-quote@^1.6.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== + +smart-buffer@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== + dependencies: + through2 "^2.0.2" + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.0, ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string.prototype.padend@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" + integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strong-log-transformer@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^4.4.10, tar@^4.4.8: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-write@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q== + dependencies: + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" + +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +through2@^2.0.0, through2@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +uglify-js@^3.1.4: + version "3.16.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.1.tgz#0e7ec928b3d0b1e1d952bce634c384fd56377317" + integrity sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ== + +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== + +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universal-user-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== + dependencies: + os-name "^3.1.0" + +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +update-browserslist-db@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA== + dependencies: + object.getownpropertydescriptors "^2.0.3" + +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@1, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +windows-release@^3.1.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" + integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== + dependencies: + execa "^1.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-json-file@^2.2.0, write-json-file@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-pkg@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^12.0.1: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" From 18005a4f04e53e4e0ddf085fcf9e90ae843c3710 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 14:36:32 +0200 Subject: [PATCH 003/640] build: Add GH action to check for successful build (#10) --- .github/workflows/checks.yml | 21 +++++++++++++++++++++ packages/unplugin/package.json | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/checks.yml diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 000000000000..6c9d891b20dc --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,21 @@ +name: Checks + +on: + push: + branches: [main] + pull_request: + +env: + DEFAULT_NODE_VERSION: "16.15.1" + +jobs: + build: + name: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn build diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index e0c4129153ce..1b96b01893f3 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -6,7 +6,7 @@ "module": "dist/esm/index.js", "repository": "https://github.com/lforst/sentry-unplugin", "scripts": { - "build": "run-p build", + "build": "run-p build:rollup", "build:watch": "run-p build:rollup:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch" From ce25bccd509470edf035f4e27e7cd8dba10b2a5e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 12:48:01 +0000 Subject: [PATCH 004/640] build(unplugin): Build types --- packages/unplugin/package.json | 12 ++++++++---- packages/unplugin/tsconfig.json | 1 + packages/unplugin/tsconfig.types.json | 10 ++++++++++ yarn.lock | 5 +++++ 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 packages/unplugin/tsconfig.types.json diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 1b96b01893f3..2353a4e14011 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -4,12 +4,15 @@ "description": "Sentry unplugin.", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", "repository": "https://github.com/lforst/sentry-unplugin", "scripts": { - "build": "run-p build:rollup", - "build:watch": "run-p build:rollup:watch", + "build": "run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch" + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project tsconfig.types.json", + "build:types:watch": "tsc --project tsconfig.types.json --watch --preserveWatchOutput" }, "dependencies": {}, "devDependencies": { @@ -22,6 +25,7 @@ "@types/node": "^8", "npm-run-all": "^4.1.5", "rollup": "2.75.7", - "sentry-unplugin-tsconfigs": "*" + "sentry-unplugin-tsconfigs": "*", + "typescript": "^4.7.4" } } diff --git a/packages/unplugin/tsconfig.json b/packages/unplugin/tsconfig.json index c99f63d208db..a110dfd8d42b 100644 --- a/packages/unplugin/tsconfig.json +++ b/packages/unplugin/tsconfig.json @@ -1,6 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "sentry-unplugin-tsconfigs/base-config.json", + "include": ["./src/**/*"], "compilerOptions": { "esModuleInterop": true, "types": ["node"] diff --git a/packages/unplugin/tsconfig.types.json b/packages/unplugin/tsconfig.types.json new file mode 100644 index 000000000000..10d65ba754f2 --- /dev/null +++ b/packages/unplugin/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/yarn.lock b/yarn.lock index 40626e21665e..6ddc8af50364 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6278,6 +6278,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typescript@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + uglify-js@^3.1.4: version "3.16.1" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.1.tgz#0e7ec928b3d0b1e1d952bce634c384fd56377317" From 2d03a15efd4be392f65d808962785ada48b79402 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 12:52:22 +0000 Subject: [PATCH 005/640] build(unplugin): Add type check --- .github/workflows/checks.yml | 11 +++++++++++ package.json | 3 ++- packages/unplugin/package.json | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6c9d891b20dc..209e837f5453 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -19,3 +19,14 @@ jobs: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - run: yarn build + + type-check: + name: check typing + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn check:types diff --git a/package.json b/package.json index bc1e81d487a5..843098c6ba49 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ ], "scripts": { "build": "lerna run --parallel build", - "build:watch": "lerna run --parallel build:watch" + "build:watch": "lerna run --parallel build:watch", + "check:types": "lerna run --parallel check:types" }, "devDependencies": { "lerna": "3.13.4" diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 2353a4e14011..13849863b1f0 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -12,7 +12,8 @@ "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project tsconfig.types.json", - "build:types:watch": "tsc --project tsconfig.types.json --watch --preserveWatchOutput" + "build:types:watch": "tsc --project tsconfig.types.json --watch --preserveWatchOutput", + "check:types": "tsc --project tsconfig.json --noEmit" }, "dependencies": {}, "devDependencies": { From 5d7f69c54f240b26d4584c5665342db68fdc066f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 15:23:49 +0200 Subject: [PATCH 006/640] build: Add prettier (#12) build: Add prettier --- .github/workflows/checks.yml | 13 ++- .husky/pre-commit | 4 + .prettierrc.json | 3 + package.json | 10 +- yarn.lock | 193 ++++++++++++++++++++++++++++++++++- 5 files changed, 219 insertions(+), 4 deletions(-) create mode 100755 .husky/pre-commit create mode 100644 .prettierrc.json diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 209e837f5453..36c78ee2b63a 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -21,7 +21,7 @@ jobs: - run: yarn build type-check: - name: check typing + name: Check typing runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -30,3 +30,14 @@ jobs: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - run: yarn check:types + + formatting-check: + name: Check formatting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn check:formatting diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000000..0da96d6baa59 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx pretty-quick --staged diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000000..de753c537d23 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "printWidth": 100 +} diff --git a/package.json b/package.json index 843098c6ba49..c8b7b8b66644 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,15 @@ "scripts": { "build": "lerna run --parallel build", "build:watch": "lerna run --parallel build:watch", - "check:types": "lerna run --parallel check:types" + "check:types": "lerna run --parallel check:types", + "check:formatting": "prettier --check .", + "fix:formatting": "prettier --write .", + "prepare": "husky install" }, "devDependencies": { - "lerna": "3.13.4" + "husky": "^8.0.0", + "lerna": "3.13.4", + "prettier": "^2.7.1", + "pretty-quick": "^3.1.3" } } diff --git a/yarn.lock b/yarn.lock index 6ddc8af50364..87fec13f1a2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1759,6 +1759,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" @@ -1862,6 +1867,13 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1907,6 +1919,11 @@ array-differ@^1.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -1924,6 +1941,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1950,6 +1972,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -2275,6 +2302,14 @@ chalk@^2.0.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2354,11 +2389,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + columnify@^1.5.4: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -2575,6 +2622,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2911,6 +2967,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3220,6 +3291,13 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -3377,6 +3455,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-property-descriptors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" @@ -3481,6 +3564,11 @@ https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -3488,6 +3576,11 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" +husky@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" + integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3519,6 +3612,11 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^5.1.4: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3879,6 +3977,11 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -4388,6 +4491,11 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -4429,7 +4537,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -4531,6 +4639,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.5: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4556,6 +4669,17 @@ multimatch@^2.1.0: arrify "^1.0.0" minimatch "^3.0.0" +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4764,6 +4888,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -4861,6 +4992,13 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -5117,6 +5255,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -5192,6 +5335,23 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-quick@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" + integrity sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA== + dependencies: + chalk "^3.0.0" + execa "^4.0.0" + find-up "^4.1.0" + ignore "^5.1.4" + mri "^1.1.5" + multimatch "^4.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5719,11 +5879,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@^1.6.1: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" @@ -6066,6 +6238,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -6101,6 +6278,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -6503,6 +6687,13 @@ which@1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" From c4764f3d1319543bb99bfd494572e0bb91aa5948 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 15:55:27 +0200 Subject: [PATCH 007/640] test(unplugin): Add unit test setup (#13) --- .github/workflows/checks.yml | 17 +- package.json | 1 + packages/unplugin/jest.config.js | 6 + packages/unplugin/package.json | 11 +- packages/unplugin/test/example.test.ts | 5 + packages/unplugin/test/tsconfig.json | 8 + ...sconfig.types.json => types.tsconfig.json} | 0 yarn.lock | 1473 ++++++++++++++++- 8 files changed, 1479 insertions(+), 42 deletions(-) create mode 100644 packages/unplugin/jest.config.js create mode 100644 packages/unplugin/test/example.test.ts create mode 100644 packages/unplugin/test/tsconfig.json rename packages/unplugin/{tsconfig.types.json => types.tsconfig.json} (100%) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 36c78ee2b63a..c74cccec765f 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -10,7 +10,7 @@ env: jobs: build: - name: build + name: Build packages runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -21,7 +21,7 @@ jobs: - run: yarn build type-check: - name: Check typing + name: Typing check runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -32,7 +32,18 @@ jobs: - run: yarn check:types formatting-check: - name: Check formatting + name: Formatting check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn check:formatting + + test: + name: Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/package.json b/package.json index c8b7b8b66644..d2fc3b2e1c74 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "build": "lerna run --parallel build", "build:watch": "lerna run --parallel build:watch", "check:types": "lerna run --parallel check:types", + "test": "lerna run --parallel test", "check:formatting": "prettier --check .", "fix:formatting": "prettier --write .", "prepare": "husky install" diff --git a/packages/unplugin/jest.config.js b/packages/unplugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/unplugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 13849863b1f0..438b2d4f4ccf 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -11,9 +11,10 @@ "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", - "build:types": "tsc --project tsconfig.types.json", - "build:types:watch": "tsc --project tsconfig.types.json --watch --preserveWatchOutput", - "check:types": "tsc --project tsconfig.json --noEmit" + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "check:types": "tsc --project tsconfig.json --noEmit", + "test": "jest" }, "dependencies": {}, "devDependencies": { @@ -23,7 +24,11 @@ "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-node-resolve": "13.3.0", + "@swc/core": "^1.2.205", + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", "@types/node": "^8", + "jest": "^28.1.1", "npm-run-all": "^4.1.5", "rollup": "2.75.7", "sentry-unplugin-tsconfigs": "*", diff --git a/packages/unplugin/test/example.test.ts b/packages/unplugin/test/example.test.ts new file mode 100644 index 000000000000..633e33fac47a --- /dev/null +++ b/packages/unplugin/test/example.test.ts @@ -0,0 +1,5 @@ +import { helloWorld } from "../src"; + +test("example", () => { + expect(helloWorld).toBeTruthy(); +}); diff --git a/packages/unplugin/test/tsconfig.json b/packages/unplugin/test/tsconfig.json new file mode 100644 index 000000000000..2b2ad253197e --- /dev/null +++ b/packages/unplugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/unplugin/tsconfig.types.json b/packages/unplugin/types.tsconfig.json similarity index 100% rename from packages/unplugin/tsconfig.types.json rename to packages/unplugin/types.tsconfig.json diff --git a/yarn.lock b/yarn.lock index 87fec13f1a2e..1899d5101afb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== @@ -22,7 +22,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== -"@babel/core@7.18.5": +"@babel/core@7.18.5", "@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.18.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== @@ -43,7 +43,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.2": +"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== @@ -258,7 +258,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.16.7", "@babel/parser@^7.18.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": version "7.18.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== @@ -414,7 +414,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13": +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -449,6 +456,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -456,7 +470,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -470,7 +484,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -505,14 +519,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5": +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.17.12": +"@babel/plugin-syntax-typescript@^7.17.12", "@babel/plugin-syntax-typescript@^7.7.2": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== @@ -888,7 +902,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7": +"@babel/template@^7.16.7", "@babel/template@^7.3.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== @@ -897,7 +911,7 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": version "7.18.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== @@ -913,7 +927,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== @@ -921,6 +935,238 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" + integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + slash "^3.0.0" + +"@jest/core@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" + integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== + dependencies: + "@jest/console" "^28.1.1" + "@jest/reporters" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@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.0.2" + jest-config "^28.1.1" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-resolve-dependencies "^28.1.1" + jest-runner "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + jest-watcher "^28.1.1" + micromatch "^4.0.4" + pretty-format "^28.1.1" + 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.yarnpkg.com/@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@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" + integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== + dependencies: + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-mock "^28.1.1" + +"@jest/expect-utils@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" + integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== + dependencies: + jest-get-type "^28.0.2" + +"@jest/expect@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" + integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== + dependencies: + expect "^28.1.1" + jest-snapshot "^28.1.1" + +"@jest/fake-timers@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" + integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== + dependencies: + "@jest/types" "^28.1.1" + "@sinonjs/fake-timers" "^9.1.1" + "@types/node" "*" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-util "^28.1.1" + +"@jest/globals@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" + integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/types" "^28.1.1" + +"@jest/reporters@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" + integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + "@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.1" + jest-util "^28.1.1" + jest-worker "^28.1.1" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + terminal-link "^2.0.0" + v8-to-istanbul "^9.0.0" + +"@jest/schemas@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" + integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== + dependencies: + "@sinclair/typebox" "^0.23.3" + +"@jest/source-map@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" + integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" + integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== + dependencies: + "@jest/console" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" + integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== + dependencies: + "@jest/test-result" "^28.1.1" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + slash "^3.0.0" + +"@jest/transform@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" + integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + 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.1" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + 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.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" + integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== + dependencies: + "@jest/schemas" "^28.0.2" + "@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.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -953,7 +1199,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== -"@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== @@ -1749,6 +1995,149 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sinclair/typebox@^0.23.3": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" + integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.1": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@swc/core-android-arm-eabi@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.205.tgz#d8ca076cbfbe92f17297de0e6b2754a7ae3a8e2f" + integrity sha512-HfiuVA1JDHMSRQ8nE1DcemUgZ1PKaPwit4i7q3xin0NVbVHY1xkJyQFuLVh3VxTvGKKkF3hi8GJMVQgOXWL6kg== + +"@swc/core-android-arm64@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.205.tgz#cb822dad076b1c30b990a2037147ae42f66bf98e" + integrity sha512-sRGZBV2dOnmh8gWWFo9HVOHdKa33zIsF8/8oYEGtq+2/s96UlAKltO2AA7HH9RaO/fT1tzBZStp+fEMUhDk/FA== + +"@swc/core-darwin-arm64@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.205.tgz#1a3340e21459cdeea2224057ddf031a330782424" + integrity sha512-JwVDfKS7vp7zzOQXWNwwcF41h4r3DWEpK6DQjz18WJyS1VVOcpVQGyuE7kSPjcnG01ZxBL9JPwwT353i/8IwDg== + +"@swc/core-darwin-x64@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.205.tgz#7a6552acd42482ecb84b1c90c0defad408ac81cc" + integrity sha512-malz2I+w6xFF1QyTmPGt0Y0NEMbUcrvfr5gUfZDGjxMhPPlS7k6fXucuZxVr9VVaM+JGq1SidVODmZ84jb1qHg== + +"@swc/core-freebsd-x64@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.205.tgz#d58f48d5de9a2babd609802338bd8e8934fec39a" + integrity sha512-/nZrG1z0T7h97AsOb/wOtYlnh4WEuNppv3XKQIMPj32YNQdMBVgpybVTVRIs1GQGZMd1/7jAy5BVQcwQjUbrLg== + +"@swc/core-linux-arm-gnueabihf@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.205.tgz#33f7f639ab64dc8c9229a2e63fc025db50905345" + integrity sha512-mTA3vETMdBmpecUyI9waZYsp7FABhew4e81psspmFpDyfty0SLISWZDnvPAn0pSnb2fWhzKwDC5kdXHKUmLJuA== + +"@swc/core-linux-arm64-gnu@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.205.tgz#ab3aef46cb3792368cfdb1ff1fa9af4df0664e17" + integrity sha512-qGzFGryeQE+O5SFK7Nn2ESqCEnv00rnzhf11WZF9V71EZ15amIhmbcwHqvFpoRSDw8hZnqoGqfPRfoJbouptnA== + +"@swc/core-linux-arm64-musl@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.205.tgz#20e79f0a3cfbe0d803ad256fd422ee17b52e3464" + integrity sha512-uLJoX9L/4Xg3sLMjAbIhzbTe5gD/MBA8VETBeEkLtgb7a0ys1kvn9xQ6qLw6A71amEPlI+VABnoTRdUEaBSV9Q== + +"@swc/core-linux-x64-gnu@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.205.tgz#7e698ca21854a038f973ed5cb2d195ae00b0707a" + integrity sha512-gQsjcYlkWKP1kceQIsoHGrOrG7ygW3ojNsSnYoZ5DG5PipRA4eeUfO9YIfrmoa29LiVNjmRPfUJa8O1UHDG5ew== + +"@swc/core-linux-x64-musl@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.205.tgz#e9aeb2bdf4aad466d1250d67aade0984cd6c4812" + integrity sha512-LR5ukqBltQc++2eX3qEj/H8KtOt0V3CmtgXNOiNCUxvPDT8mYz/8MJhYOrofonND0RKfXyyPW7dRxg62ceTLSQ== + +"@swc/core-win32-arm64-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.205.tgz#c46bf0adc703d199fd1eeef4a811913cb0e74164" + integrity sha512-NjcLWm4mOy78LAEt7pqFl+SLcCyqnSlUP729XRd1uRvKwt1Cwch5SQRdoaFqwf1DaEQy4H4iuGPynkfarlb1kQ== + +"@swc/core-win32-ia32-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.205.tgz#f1aa4a72670c6367282e39f81052d51287b23497" + integrity sha512-+6byrRxIXgZ0zmLL6ZeX1HBBrAqvCy8MR5Yz0SO26jR8OPZXJCgZXL9BTsZO+YEG4f32ZOlZh3nnHCl6Dcb4GA== + +"@swc/core-win32-x64-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.205.tgz#626b979203510c43c7f5a8014881a2c08426bf33" + integrity sha512-RRSkyAol0c7sU9gejtrpF8TLmdYdBjLutcmQHtLKbWTm74ZLidZpF28G0J2tD7HNmzQnMpLzyoT1jW9JgLwzVg== + +"@swc/core@^1.2.205": + version "1.2.205" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.205.tgz#b786644c1752bc9206bcd30b05a4f365ef60eed3" + integrity sha512-evq0/tFyYdYgOhKb//+G93fxe9zwFxtme7NL7wSiEF8+4/ON4Y5AI9eHLoqddXqs3W8Y0HQi+rJmlrkCibrseA== + optionalDependencies: + "@swc/core-android-arm-eabi" "1.2.205" + "@swc/core-android-arm64" "1.2.205" + "@swc/core-darwin-arm64" "1.2.205" + "@swc/core-darwin-x64" "1.2.205" + "@swc/core-freebsd-x64" "1.2.205" + "@swc/core-linux-arm-gnueabihf" "1.2.205" + "@swc/core-linux-arm64-gnu" "1.2.205" + "@swc/core-linux-arm64-musl" "1.2.205" + "@swc/core-linux-x64-gnu" "1.2.205" + "@swc/core-linux-x64-musl" "1.2.205" + "@swc/core-win32-arm64-msvc" "1.2.205" + "@swc/core-win32-ia32-msvc" "1.2.205" + "@swc/core-win32-x64-msvc" "1.2.205" + +"@swc/jest@^0.2.21": + version "0.2.21" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.21.tgz#e8c4e234016a914f4cfbb7d75844860a250c1d1c" + integrity sha512-/+NcExiZbxXANNhNPnIdFuGq62CeumulLS1bngwqIXd8H7d96LFUfrYzdt8tlTwLMel8tFtQ5aRjzVkyOTyPDw== + dependencies: + "@jest/create-cache-key-function" "^27.4.2" + +"@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + "@types/estree@*": version "0.0.52" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" @@ -1759,6 +2148,40 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.3.tgz#52f3f3e50ce59191ff5fbb1084896cc0cf30c9ce" + integrity sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw== + dependencies: + jest-matcher-utils "^28.0.0" + pretty-format "^28.0.0" + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -1784,6 +2207,11 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/prettier@^2.1.5": + version "2.6.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -1791,6 +2219,30 @@ dependencies: "@types/node" "*" +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1840,6 +2292,13 @@ ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1867,13 +2326,26 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2024,6 +2496,19 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +babel-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" + integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== + dependencies: + "@jest/transform" "^28.1.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -2031,6 +2516,27 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" + integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + babel-plugin-polyfill-corejs2@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" @@ -2055,6 +2561,32 @@ babel-plugin-polyfill-regenerator@^0.3.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" + integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== + dependencies: + babel-plugin-jest-hoist "^28.1.1" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -2114,6 +2646,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + browserslist@^4.20.2, browserslist@^4.21.0: version "4.21.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" @@ -2124,6 +2663,20 @@ browserslist@^4.20.2, browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -2242,6 +2795,11 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -2283,6 +2841,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-lite@^1.0.30001358: version "1.0.30001359" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" @@ -2310,6 +2873,19 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2325,6 +2901,16 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2356,6 +2942,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -2369,11 +2964,21 @@ cmd-shim@^2.0.2: graceful-fs "^4.1.2" mkdirp "~0.5.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2559,7 +3164,7 @@ conventional-recommended-bump@^4.0.4: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -2622,7 +3227,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2780,6 +3385,11 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + dezalgo@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" @@ -2788,6 +3398,11 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -2838,6 +3453,11 @@ electron-to-chromium@^1.4.164: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2934,6 +3554,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2982,6 +3607,26 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2995,6 +3640,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" + integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== + dependencies: + "@jest/expect-utils" "^28.1.1" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3065,11 +3721,18 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -3092,6 +3755,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + filter-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" @@ -3119,7 +3789,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3200,7 +3870,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -3254,6 +3924,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" @@ -3263,6 +3938,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.3" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -3298,6 +3978,11 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -3410,7 +4095,7 @@ globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -3534,6 +4219,11 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -3569,6 +4259,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -3633,6 +4328,14 @@ import-local@^1.0.0: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3878,6 +4581,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3916,6 +4624,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4052,6 +4765,406 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" + integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== + dependencies: + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" + integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + pretty-format "^28.1.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" + integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== + dependencies: + "@jest/core" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" + integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.1.1" + "@jest/types" "^28.1.1" + babel-jest "^28.1.1" + 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.1" + jest-environment-node "^28.1.1" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-runner "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^28.1.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" + integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== + dependencies: + detect-newline "^3.0.0" + +jest-each@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" + integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== + dependencies: + "@jest/types" "^28.1.1" + chalk "^4.0.0" + jest-get-type "^28.0.2" + jest-util "^28.1.1" + pretty-format "^28.1.1" + +jest-environment-node@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" + integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-mock "^28.1.1" + jest-util "^28.1.1" + +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + +jest-haste-map@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" + integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== + dependencies: + "@jest/types" "^28.1.1" + "@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.1" + jest-worker "^28.1.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" + integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== + dependencies: + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-matcher-utils@^28.0.0, jest-matcher-utils@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" + integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-message-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" + integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" + integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" + integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== + dependencies: + jest-regex-util "^28.0.2" + jest-snapshot "^28.1.1" + +jest-resolve@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" + integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-pnp-resolver "^1.2.2" + jest-util "^28.1.1" + jest-validate "^28.1.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" + integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== + dependencies: + "@jest/console" "^28.1.1" + "@jest/environment" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@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.1" + jest-haste-map "^28.1.1" + jest-leak-detector "^28.1.1" + jest-message-util "^28.1.1" + jest-resolve "^28.1.1" + jest-runtime "^28.1.1" + jest-util "^28.1.1" + jest-watcher "^28.1.1" + jest-worker "^28.1.1" + source-map-support "0.5.13" + throat "^6.0.1" + +jest-runtime@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" + integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/globals" "^28.1.1" + "@jest/source-map" "^28.0.2" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + 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.1" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" + integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== + 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.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@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.1" + graceful-fs "^4.2.9" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + jest-haste-map "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + natural-compare "^1.4.0" + pretty-format "^28.1.1" + semver "^7.3.5" + +jest-util@^28.0.0, jest-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" + integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" + integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== + dependencies: + "@jest/types" "^28.1.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^28.0.2" + leven "^3.1.0" + pretty-format "^28.1.1" + +jest-watcher@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" + integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== + dependencies: + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.1" + string-length "^4.0.1" + +jest-worker@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" + integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" + integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== + dependencies: + "@jest/core" "^28.1.1" + "@jest/types" "^28.1.1" + import-local "^3.0.2" + jest-cli "^28.1.1" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4156,6 +5269,11 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/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.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -4186,6 +5304,11 @@ lerna@3.13.4: import-local "^1.0.0" npmlog "^4.1.2" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + libnpmaccess@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" @@ -4285,6 +5408,11 @@ lodash.ismatch@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -4361,6 +5489,18 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + make-fetch-happen@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" @@ -4395,6 +5535,13 @@ make-fetch-happen@^5.0.0: socks-proxy-agent "^4.0.0" ssri "^6.0.0" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -4520,6 +5667,14 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -4707,6 +5862,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + neo-async@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -4750,6 +5910,11 @@ node-gyp@^4.0.0: tar "^4.4.8" which "1" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" @@ -4782,6 +5947,11 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + normalize-url@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" @@ -4888,7 +6058,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -4992,7 +6162,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -5188,7 +6358,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -5291,7 +6461,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.2.2: +picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -5323,6 +6493,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -5330,6 +6505,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -5340,6 +6522,16 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +pretty-format@^28.0.0, pretty-format@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" + integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== + dependencies: + "@jest/schemas" "^28.0.2" + 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.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" @@ -5370,6 +6562,14 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/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.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -5466,6 +6666,11 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -5733,6 +6938,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -5743,12 +6955,22 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0: +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -5782,6 +7004,13 @@ rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rollup@2.75.7: version "2.75.7" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" @@ -5840,18 +7069,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.4: +semver@7.x, semver@^7.3.4, semver@^7.3.5: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -5910,16 +7139,26 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -5994,6 +7233,14 @@ 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.yarnpkg.com/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-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -6004,7 +7251,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6100,6 +7347,13 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -6126,6 +7380,14 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -6135,7 +7397,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4": +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6214,7 +7476,7 @@ strip-ansi@^5.1.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -6233,6 +7495,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -6262,6 +7529,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strong-log-transformer@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -6278,13 +7550,28 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -6320,11 +7607,33 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -6360,6 +7669,11 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -6380,6 +7694,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6425,6 +7746,20 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-jest@^28.0.5: + version "28.0.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.5.tgz#31776f768fba6dfc8c061d488840ed0c8eeac8b9" + integrity sha512-Sx9FyP9pCY7pUzQpy4FgRZf2bhHY3za576HMKJFs+OnQ9jS96Du5vNsDKkyedQkik+sEabbKAnCliv9BEsHZgQ== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^28.0.0" + json5 "^2.2.1" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "^21.0.1" + tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -6442,11 +7777,21 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -6606,6 +7951,15 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-to-istanbul@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + 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.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6630,6 +7984,13 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -6721,6 +8082,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6735,6 +8105,14 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write-json-file@^2.2.0, write-json-file@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" @@ -6765,6 +8143,11 @@ xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -6788,6 +8171,11 @@ yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.0.0, yargs-parser@^21.0.1: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs@^12.0.1: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -6805,3 +8193,16 @@ yargs@^12.0.1: which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" + +yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" From d5c244e16b22f48c023e3a90657897b110be08b1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 15:57:41 +0200 Subject: [PATCH 008/640] build: Enable libcheck in tsconfigs (#14) --- packages/tsconfigs/base-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json index 71e1fd48700a..811e5b15f514 100644 --- a/packages/tsconfigs/base-config.json +++ b/packages/tsconfigs/base-config.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "moduleResolution": "node", - "skipLibCheck": true, + "skipLibCheck": false, "isolatedModules": true, "forceConsistentCasingInFileNames": true, From 811fae9925d8773231a3c96a819b323ca783680e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Jun 2022 16:29:34 +0200 Subject: [PATCH 009/640] build: Add eslint setup (#15) --- .github/workflows/checks.yml | 11 + package.json | 1 + packages/eslint-configs/base.js | 19 + packages/eslint-configs/jest.js | 13 + packages/eslint-configs/package.json | 19 + packages/unplugin/.eslintrc.js | 20 + packages/unplugin/package.json | 5 +- packages/unplugin/src/index.ts | 1 + yarn.lock | 721 +++++++++++++++++++++++++-- 9 files changed, 756 insertions(+), 54 deletions(-) create mode 100644 packages/eslint-configs/base.js create mode 100644 packages/eslint-configs/jest.js create mode 100644 packages/eslint-configs/package.json create mode 100644 packages/unplugin/.eslintrc.js diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index c74cccec765f..9559b098315c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -52,3 +52,14 @@ jobs: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - run: yarn check:formatting + + lint: + name: Linter check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn lint diff --git a/package.json b/package.json index d2fc3b2e1c74..6a817f611763 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "build:watch": "lerna run --parallel build:watch", "check:types": "lerna run --parallel check:types", "test": "lerna run --parallel test", + "lint": "lerna run --parallel lint", "check:formatting": "prettier --check .", "fix:formatting": "prettier --write .", "prepare": "husky install" diff --git a/packages/eslint-configs/base.js b/packages/eslint-configs/base.js new file mode 100644 index 000000000000..f53dbcf03858 --- /dev/null +++ b/packages/eslint-configs/base.js @@ -0,0 +1,19 @@ +/** @type {import('eslint').ESLint.Options} */ +module.exports = { + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "prettier", + ], + rules: { + "no-console": "error", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }, + ], + "no-undef": "error", // https://github.com/typescript-eslint/typescript-eslint/issues/4580#issuecomment-1047144015 + }, +}; diff --git a/packages/eslint-configs/jest.js b/packages/eslint-configs/jest.js new file mode 100644 index 000000000000..37b0cb5cc725 --- /dev/null +++ b/packages/eslint-configs/jest.js @@ -0,0 +1,13 @@ +/** @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 new file mode 100644 index 000000000000..bdbdec961fde --- /dev/null +++ b/packages/eslint-configs/package.json @@ -0,0 +1,19 @@ +{ + "name": "eslint-config-local", + "version": "0.0.0", + "private": true, + "peerDependencies": { + "eslint": "^8.14.0" + }, + "dependencies": { + "@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" + }, + "devDependencies": { + "eslint": "^8.14.0" + } +} diff --git a/packages/unplugin/.eslintrc.js b/packages/unplugin/.eslintrc.js new file mode 100644 index 000000000000..378f4e403c5e --- /dev/null +++ b/packages/unplugin/.eslintrc.js @@ -0,0 +1,20 @@ +const jestPackageJson = require("jest/package.json"); + +/** @type {import('eslint').ESLint.Options} */ +module.exports = { + root: true, + extends: ["local/jest", "local/base"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 438b2d4f4ccf..70ecd94450e6 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -14,7 +14,8 @@ "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "check:types": "tsc --project tsconfig.json --noEmit", - "test": "jest" + "test": "jest", + "lint": "eslint ./src ./test --max-warnings=0" }, "dependencies": {}, "devDependencies": { @@ -28,6 +29,8 @@ "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^8", + "eslint": "^8.18.0", + "eslint-config-local": "*", "jest": "^28.1.1", "npm-run-all": "^4.1.5", "rollup": "2.75.7", diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 86fb756c209c..1e4207008f6c 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -1,4 +1,5 @@ function helloWorld() { + // eslint-disable-next-line no-console console.log("Hello world!"); } diff --git a/yarn.lock b/yarn.lock index 1899d5101afb..27cf36c084ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -940,6 +940,35 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1836,11 +1865,32 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" @@ -2182,6 +2232,11 @@ jest-matcher-utils "^28.0.0" pretty-format "^28.0.0" +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -2243,6 +2298,93 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.13.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz#c67794d2b0fd0b4a47f50266088acdc52a08aab6" + integrity sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w== + dependencies: + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/type-utils" "5.29.0" + "@typescript-eslint/utils" "5.29.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.29.0.tgz#abed79020f623ac4fb76c7fdf917552a17171704" + integrity sha512-H4fqOVYiH6R15NjtMO2LVBZgzXgzjdPEXYb7x/meg4QbXsptLxdq8YlHK2NZOFKipuInY4sAPY5a6SQ/53s3dw== + dependencies: + "@typescript-eslint/utils" "5.29.0" + +"@typescript-eslint/parser@^5.13.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" + integrity sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw== + dependencies: + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/typescript-estree" "5.29.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" + integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== + dependencies: + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/visitor-keys" "5.29.0" + +"@typescript-eslint/type-utils@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" + integrity sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg== + dependencies: + "@typescript-eslint/utils" "5.29.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" + integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== + +"@typescript-eslint/typescript-estree@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" + integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== + dependencies: + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/visitor-keys" "5.29.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" + integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/typescript-estree" "5.29.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" + integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== + dependencies: + "@typescript-eslint/types" "5.29.0" + eslint-visitor-keys "^3.3.0" + JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -2256,6 +2398,16 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -2277,7 +2429,7 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2371,6 +2523,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2406,6 +2563,17 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== +array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2428,6 +2596,16 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + array.prototype.reduce@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" @@ -2663,13 +2841,6 @@ browserslist@^4.20.2, browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3227,7 +3398,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3288,7 +3459,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3323,6 +3494,11 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" @@ -3411,6 +3587,27 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dot-prop@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" @@ -3523,6 +3720,13 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3559,11 +3763,160 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.3.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/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.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.29.4: + version "7.30.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" + integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.14.0, eslint@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" + integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== + dependencies: + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== + dependencies: + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -3704,7 +4057,7 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -3721,11 +4074,34 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -3745,6 +4121,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3797,6 +4180,19 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3890,6 +4286,11 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + functions-have-names@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -4060,6 +4461,20 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -4082,6 +4497,25 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.15.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -4307,7 +4741,7 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^5.1.4: +ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -4320,6 +4754,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -4593,7 +5035,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -5108,7 +5550,7 @@ jest-snapshot@^28.1.1: pretty-format "^28.1.1" semver "^7.3.5" -jest-util@^28.0.0, jest-util@^28.1.1: +jest-util@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== @@ -5165,7 +5607,7 @@ jest@^28.1.1: import-local "^3.0.2" jest-cli "^28.1.1" -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -5178,6 +5620,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -5213,6 +5662,11 @@ json-schema@0.4.0: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5245,6 +5699,14 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" + integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.2" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5309,6 +5771,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + libnpmaccess@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" @@ -5408,10 +5878,10 @@ lodash.ismatch@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.set@^4.3.2: version "4.3.2" @@ -5448,6 +5918,13 @@ lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -5496,11 +5973,6 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - make-fetch-happen@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" @@ -5643,7 +6115,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -5702,7 +6174,7 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6085,7 +6557,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -6126,6 +6598,24 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + object.getownpropertydescriptors@^2.0.3: version "2.1.4" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" @@ -6136,6 +6626,14 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.4" es-abstract "^1.20.1" +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -6143,6 +6641,15 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -6169,6 +6676,18 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6338,6 +6857,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -6451,6 +6977,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6517,6 +7048,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" @@ -6577,6 +7113,15 @@ promzard@^0.3.0: dependencies: read "1" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -6656,6 +7201,11 @@ query-string@^6.13.8: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" @@ -6666,6 +7216,11 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -6845,7 +7400,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -6854,6 +7409,11 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + regexpu-core@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" @@ -6979,6 +7539,15 @@ resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.2 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6997,6 +7566,11 @@ retry@^0.10.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -7004,7 +7578,7 @@ rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -7023,6 +7597,13 @@ run-async@^2.2.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -7069,18 +7650,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.x, semver@^7.3.4, semver@^7.3.5: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -7414,6 +7995,20 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + string.prototype.padend@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" @@ -7529,7 +8124,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -7629,6 +8224,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -7746,25 +8346,18 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-jest@^28.0.5: - version "28.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.5.tgz#31776f768fba6dfc8c061d488840ed0c8eeac8b9" - integrity sha512-Sx9FyP9pCY7pUzQpy4FgRZf2bhHY3za576HMKJFs+OnQ9jS96Du5vNsDKkyedQkik+sEabbKAnCliv9BEsHZgQ== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^28.0.0" - json5 "^2.2.1" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "^21.0.1" - -tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -7777,6 +8370,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -7787,6 +8387,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -7951,6 +8556,11 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + v8-to-istanbul@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" @@ -8069,6 +8679,11 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -8171,7 +8786,7 @@ yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.0, yargs-parser@^21.0.1: +yargs-parser@^21.0.0: version "21.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== From 9a1dd17f824e7b5ca385f293d35de444167808ad Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sat, 2 Jul 2022 11:03:37 +0200 Subject: [PATCH 010/640] meta: Add devcontainer/codespaces setup (#16) --- .devcontainer/Dockerfile | 10 +++++++++ .devcontainer/devcontainer.json | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000000..9c5afb39c8ce --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,10 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/debian/.devcontainer/base.Dockerfile + +# [Choice] Debian version (use bullseye on local arm64/Apple Silicon): bullseye, buster +ARG VARIANT="buster" +FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT} + +# ** [Optional] Uncomment this section to install additional packages. ** +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000000..4bb1ca32196e --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,36 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/debian +{ + "name": "Debian", + "build": { + "dockerfile": "Dockerfile", + // Update 'VARIANT' to pick an Debian version: bullseye, buster + // Use bullseye on local arm64/Apple Silicon. + "args": { "VARIANT": "bullseye" } + }, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker. + // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], + + // Uncomment when using a ptrace-based debugger like C++, Go, and Rust + // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ], + "postCreateCommand": "yarn", + + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode", + "features": { + "docker-in-docker": "20.10", + "git": "os-provided", + "github-cli": "latest", + "node": "18", + "java": "17" + }, + "customizations": { + "vscode": { + "extensions": ["esbenp.prettier-vscode", "SonarSource.sonarlint-vscode"] + } + } +} From c6fef20990c7a617b5debd161830aafcf7a38b90 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sat, 2 Jul 2022 11:23:51 +0200 Subject: [PATCH 011/640] build(unplugin): Shuffle tsconfigs around (#17) --- packages/unplugin/.eslintrc.js | 2 +- packages/unplugin/package.json | 4 +++- packages/unplugin/{ => src}/tsconfig.json | 2 +- packages/unplugin/test/tsconfig.json | 2 +- packages/unplugin/types.tsconfig.json | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) rename packages/unplugin/{ => src}/tsconfig.json (87%) diff --git a/packages/unplugin/.eslintrc.js b/packages/unplugin/.eslintrc.js index 378f4e403c5e..fe53c9eb2e89 100644 --- a/packages/unplugin/.eslintrc.js +++ b/packages/unplugin/.eslintrc.js @@ -7,7 +7,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.js"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], + project: ["./src/tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 70ecd94450e6..099738f888d5 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -13,7 +13,9 @@ "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "check:types": "tsc --project tsconfig.json --noEmit", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "test": "jest", "lint": "eslint ./src ./test --max-warnings=0" }, diff --git a/packages/unplugin/tsconfig.json b/packages/unplugin/src/tsconfig.json similarity index 87% rename from packages/unplugin/tsconfig.json rename to packages/unplugin/src/tsconfig.json index a110dfd8d42b..9e6452f79c77 100644 --- a/packages/unplugin/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "sentry-unplugin-tsconfigs/base-config.json", - "include": ["./src/**/*"], + "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, "types": ["node"] diff --git a/packages/unplugin/test/tsconfig.json b/packages/unplugin/test/tsconfig.json index 2b2ad253197e..440aa770a89c 100644 --- a/packages/unplugin/test/tsconfig.json +++ b/packages/unplugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", + "extends": "sentry-unplugin-tsconfigs/base-config.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node", "jest"] diff --git a/packages/unplugin/types.tsconfig.json b/packages/unplugin/types.tsconfig.json index 10d65ba754f2..fb161bc4ab78 100644 --- a/packages/unplugin/types.tsconfig.json +++ b/packages/unplugin/types.tsconfig.json @@ -1,6 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", "declaration": true, From 011b558e127f3c95290ab1cde3b77d660bfc4eec Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 31 Jul 2022 10:24:16 +0200 Subject: [PATCH 012/640] feat(unplugin): Add proof of concept (#19) --- packages/tsconfigs/base-config.json | 2 +- packages/unplugin/package.json | 7 ++- packages/unplugin/rollup.config.js | 5 +- packages/unplugin/src/index.ts | 83 ++++++++++++++++++++++++-- packages/unplugin/src/tsconfig.json | 3 +- packages/unplugin/test/example.test.ts | 4 +- yarn.lock | 81 +++++++++++++++++++++---- 7 files changed, 163 insertions(+), 22 deletions(-) diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json index 811e5b15f514..71e1fd48700a 100644 --- a/packages/tsconfigs/base-config.json +++ b/packages/tsconfigs/base-config.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "moduleResolution": "node", - "skipLibCheck": false, + "skipLibCheck": true, "isolatedModules": true, "forceConsistentCasingInFileNames": true, diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 099738f888d5..ff75b761d56f 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -1,5 +1,5 @@ { - "name": "sentry-unplugin", + "name": "@sentry/unplugin", "version": "0.0.1", "description": "Sentry unplugin.", "main": "dist/cjs/index.js", @@ -19,7 +19,10 @@ "test": "jest", "lint": "eslint ./src ./test --max-warnings=0" }, - "dependencies": {}, + "dependencies": { + "magic-string": "^0.26.2", + "unplugin": "^0.7.2" + }, "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-env": "7.18.2", diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js index fd4ab998e842..112364f4b530 100644 --- a/packages/unplugin/rollup.config.js +++ b/packages/unplugin/rollup.config.js @@ -9,9 +9,10 @@ const extensions = [".js", ".ts"]; export default { input, - external: [...Object.keys(packageJson.dependencies)], + // external: [...Object.keys(packageJson.dependencies)], + external: ["path", "unplugin"], plugins: [ - resolve({ extensions }), + resolve({ extensions, preferBuiltins: true }), commonjs(), babel({ extensions, diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 1e4207008f6c..16fe080f57c5 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -1,6 +1,81 @@ -function helloWorld() { - // eslint-disable-next-line no-console - console.log("Hello world!"); +import { createUnplugin } from "unplugin"; +import MagicString from "magic-string"; +import * as path from "path"; + +function generateGlobalInjectorCode({ release }: { release: string }) { + return ` + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:"${release}"};`; +} + +// TODO: Replace this function with actual logic +function getReleaseName() { + return "default"; } -export { helloWorld }; +export interface Options { + debugLogging?: boolean; +} + +const unplugin = createUnplugin((options) => { + function debugLog(message: string) { + if (options?.debugLogging) { + // eslint-disable-next-line no-console + console.log(`[Sentry-plugin] ${message}`); + } + } + + const entrypoints = new Set(); + + return { + name: "sentry-plugin", + enforce: "pre", // needed for Vite to call resolveId hook + resolveId(id, _importer, { isEntry }) { + debugLog( + `Called "resolveId": ${JSON.stringify({ id, importer: _importer, options: { isEntry } })}` + ); + + if (isEntry) { + const entrypoint = path.normalize(path.isAbsolute(id) ? id : path.join(process.cwd(), id)); + entrypoints.add(entrypoint); + debugLog(`Added entrypoint: ${entrypoint}`); + } + + return undefined; + }, + transformInclude(id) { + const shouldTransform = entrypoints.has(id); + + debugLog(`Called "transformInclude": ${JSON.stringify({ id })}`); + debugLog(`Will transform "${id}": ${String(shouldTransform)}`); + + return shouldTransform; + }, + transform(code, id) { + if (entrypoints.has(path.normalize(id))) { + const ms = new MagicString(code); + ms.prepend(generateGlobalInjectorCode({ release: getReleaseName() })); + return { + code: ms.toString(), + map: ms.generateMap(), + }; + } else { + // Don't transform + return undefined; + } + }, + }; +}); + +export const sentryVitePlugin = unplugin.vite; +export const sentryRollupPlugin = unplugin.rollup; +export const sentryWebpackPlugin = unplugin.webpack; +export const sentryEsbuildPlugin = unplugin.esbuild; diff --git a/packages/unplugin/src/tsconfig.json b/packages/unplugin/src/tsconfig.json index 9e6452f79c77..55c9df824444 100644 --- a/packages/unplugin/src/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -4,6 +4,7 @@ "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, - "types": ["node"] + "types": ["node"], + "lib": ["ES2020"] } } diff --git a/packages/unplugin/test/example.test.ts b/packages/unplugin/test/example.test.ts index 633e33fac47a..9d6b3cdb2a09 100644 --- a/packages/unplugin/test/example.test.ts +++ b/packages/unplugin/test/example.test.ts @@ -1,5 +1,5 @@ -import { helloWorld } from "../src"; +import { sentryRollupPlugin } from "../src/index"; test("example", () => { - expect(helloWorld).toBeTruthy(); + expect(sentryRollupPlugin).toBeDefined(); }); diff --git a/yarn.lock b/yarn.lock index 27cf36c084ac..8f24d3573da6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2490,7 +2490,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -2795,6 +2795,11 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2824,7 +2829,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3062,6 +3067,21 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4461,7 +4481,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4901,6 +4921,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -5035,7 +5062,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -5959,6 +5986,13 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6419,7 +6453,7 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -6992,7 +7026,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -7344,6 +7378,13 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -8412,10 +8453,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@4.6.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" + integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== uglify-js@^3.1.4: version "3.16.1" @@ -8506,6 +8547,16 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unplugin@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.7.2.tgz#4127012fdc2c84ea4ce03ce75e3d4f54ea47bba1" + integrity sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ== + dependencies: + acorn "^8.7.1" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.4" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -8618,6 +8669,16 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz#a19fcf371923c59c4712d63d7d194b1e4d8262cc" + integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From c6315eaf04aff38118d8015df495722f717944ba Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 31 Jul 2022 11:22:05 +0200 Subject: [PATCH 013/640] chore(playground): Add playground scripts (#18) chore: Add playground scripts --- package.json | 2 +- packages/playground/.gitignore | 1 + packages/playground/build-esbuild.js | 12 + packages/playground/build-webpack4.js | 25 + packages/playground/build-webpack5.js | 27 + packages/playground/package.json | 25 + packages/playground/rollup.config.js | 19 + packages/playground/src/entrypoint1.js | 12 + packages/playground/src/entrypoint2.js | 16 + packages/playground/src/get-global.js | 3 + packages/playground/src/hello-world.js | 3 + packages/playground/vite.config.js | 18 + packages/tsconfigs/base-config.json | 2 +- packages/unplugin/package.json | 5 +- packages/unplugin/src/index.ts | 12 +- packages/unplugin/src/tsconfig.json | 2 +- packages/unplugin/test/tsconfig.json | 2 +- yarn.lock | 1686 +++++++++++++++++++++++- 18 files changed, 1831 insertions(+), 41 deletions(-) create mode 100644 packages/playground/.gitignore create mode 100644 packages/playground/build-esbuild.js create mode 100644 packages/playground/build-webpack4.js create mode 100644 packages/playground/build-webpack5.js create mode 100644 packages/playground/package.json create mode 100644 packages/playground/rollup.config.js create mode 100644 packages/playground/src/entrypoint1.js create mode 100644 packages/playground/src/entrypoint2.js create mode 100644 packages/playground/src/get-global.js create mode 100644 packages/playground/src/hello-world.js create mode 100644 packages/playground/vite.config.js diff --git a/package.json b/package.json index 6a817f611763..eade3485451e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "packages/*" ], "scripts": { - "build": "lerna run --parallel build", + "build": "lerna run --stream build", "build:watch": "lerna run --parallel build:watch", "check:types": "lerna run --parallel check:types", "test": "lerna run --parallel test", diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore new file mode 100644 index 000000000000..89f9ac04aac6 --- /dev/null +++ b/packages/playground/.gitignore @@ -0,0 +1 @@ +out/ diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js new file mode 100644 index 000000000000..80703d13154e --- /dev/null +++ b/packages/playground/build-esbuild.js @@ -0,0 +1,12 @@ +const { sentryEsbuildPlugin } = require("@sentry/unplugin"); +const { build } = require("esbuild"); + +build({ + entryPoints: ["./src/entrypoint1.js"], + outdir: "./out/esbuild", + plugins: [sentryEsbuildPlugin()], + minify: true, + bundle: true, + format: "cjs", + sourcemap: true, // currently we break source maps :(, we need to fix this upstream in unplugin +}); diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js new file mode 100644 index 000000000000..231743630c59 --- /dev/null +++ b/packages/playground/build-webpack4.js @@ -0,0 +1,25 @@ +// @ts-check +const path = require("path"); +const webpack4 = require("webpack4"); +const { sentryWebpackPlugin } = require("@sentry/unplugin"); + +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()], + devtool: "source-map", + }, + (err) => { + if (err) { + throw err; + } + } +); diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js new file mode 100644 index 000000000000..495384d13d19 --- /dev/null +++ b/packages/playground/build-webpack5.js @@ -0,0 +1,27 @@ +// @ts-check +const path = require("path"); +const webpack5 = require("webpack"); +const { sentryWebpackPlugin } = require("@sentry/unplugin"); + +webpack5( + { + cache: false, + entry: "./src/entrypoint1.js", + output: { + filename: "index.js", + path: path.resolve(__dirname, `./out/webpack5`), + library: { + type: "commonjs", + name: "ExampleBundle", + }, + }, + mode: "production", + plugins: [sentryWebpackPlugin()], + devtool: "source-map", + }, + (err) => { + if (err) { + throw err; + } + } +); diff --git a/packages/playground/package.json b/packages/playground/package.json new file mode 100644 index 000000000000..88e5265e5a87 --- /dev/null +++ b/packages/playground/package.json @@ -0,0 +1,25 @@ +{ + "name": "playground", + "version": "1.0.0", + "main": "index.js", + "author": "Luca Forstner", + "license": "MIT", + "private": true, + "scripts": { + "build": "run-p build:rollup build:vite build:webpack4 build:webpack5 build:esbuild", + "build:rollup": "rollup --config rollup.config.js", + "build:vite": "vite build --config vite.config.js", + "build:webpack4": "node build-webpack4.js", + "build:webpack5": "node build-webpack5.js", + "build:esbuild": "node build-esbuild.js" + }, + "dependencies": { + "@sentry/unplugin": "*", + "esbuild": "0.14.49", + "rollup": "2.77.0", + "vite": "3.0.0", + "webpack4": "npm:webpack@4.46.0", + "webpack": "5.74.0", + "npm-run-all": "4.1.5" + } +} diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.js new file mode 100644 index 000000000000..67a529a70ed3 --- /dev/null +++ b/packages/playground/rollup.config.js @@ -0,0 +1,19 @@ +// @ts-check +import commonjs from "@rollup/plugin-commonjs"; +import resolve from "@rollup/plugin-node-resolve"; +import { sentryRollupPlugin } from "@sentry/unplugin"; + +const input = ["src/entrypoint1.js"]; + +const extensions = [".js"]; + +export default { + input, + plugins: [resolve({ extensions }), commonjs(), sentryRollupPlugin()], + output: { + dir: "./out/rollup", + format: "cjs", + exports: "named", + sourcemap: true, + }, +}; diff --git a/packages/playground/src/entrypoint1.js b/packages/playground/src/entrypoint1.js new file mode 100644 index 000000000000..108d933192b2 --- /dev/null +++ b/packages/playground/src/entrypoint1.js @@ -0,0 +1,12 @@ +import { getGlobal } from "./get-global"; +import { helloWorld } from "./hello-world"; +export { getGlobal } from "./get-global"; + +console.log("entrypoint1.js loaded"); + +export function main() { + console.log("called main (entrypoint1.js)"); + helloWorld(); +} + +console.log("global:", getGlobal()); diff --git a/packages/playground/src/entrypoint2.js b/packages/playground/src/entrypoint2.js new file mode 100644 index 000000000000..daab1c5e4b28 --- /dev/null +++ b/packages/playground/src/entrypoint2.js @@ -0,0 +1,16 @@ +import { main as main1 } from "./entrypoint1"; +export { getGlobal } from "./get-global"; + +console.log("entrypoint2.js loaded"); + +export function main() { + console.log("called main (entrypoint2.js)"); + main1(); +} + +const asdf = () => { + console.log("defualt called (entrypoint2.js)"); +}; + +console.log("global:", getGlobal()); +export { asdf as default }; diff --git a/packages/playground/src/get-global.js b/packages/playground/src/get-global.js new file mode 100644 index 000000000000..59cb11384f1a --- /dev/null +++ b/packages/playground/src/get-global.js @@ -0,0 +1,3 @@ +export function getGlobal() { + return global.SENTRY_RELEASE; +} diff --git a/packages/playground/src/hello-world.js b/packages/playground/src/hello-world.js new file mode 100644 index 000000000000..5117dc2bf1b1 --- /dev/null +++ b/packages/playground/src/hello-world.js @@ -0,0 +1,3 @@ +export function helloWorld() { + console.log("Hello world!"); +} diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js new file mode 100644 index 000000000000..1632e01f806c --- /dev/null +++ b/packages/playground/vite.config.js @@ -0,0 +1,18 @@ +// @ts-check +import { sentryVitePlugin } from "@sentry/unplugin"; +import { defineConfig } from "vite"; +import * as path from "path"; + +export default defineConfig({ + build: { + outDir: "./out/vite", + lib: { + entry: path.resolve(__dirname, "./src/entrypoint1.js"), + name: "ExampleBundle", + fileName: "index", + formats: ["cjs"], + }, + sourcemap: true, + }, + plugins: [sentryVitePlugin()], +}); diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json index 71e1fd48700a..811e5b15f514 100644 --- a/packages/tsconfigs/base-config.json +++ b/packages/tsconfigs/base-config.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "moduleResolution": "node", - "skipLibCheck": true, + "skipLibCheck": false, "isolatedModules": true, "forceConsistentCasingInFileNames": true, diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index ff75b761d56f..c2ed6434d7ab 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -7,7 +7,7 @@ "types": "dist/types/index.d.ts", "repository": "https://github.com/lforst/sentry-unplugin", "scripts": { - "build": "run-p build:rollup build:types", + "build": "rimraf ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -33,11 +33,12 @@ "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", - "@types/node": "^8", + "@types/node": "^18.6.3", "eslint": "^8.18.0", "eslint-config-local": "*", "jest": "^28.1.1", "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", "rollup": "2.75.7", "sentry-unplugin-tsconfigs": "*", "typescript": "^4.7.4" diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 16fe080f57c5..280a20d05443 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -75,7 +75,11 @@ const unplugin = createUnplugin((options) => { }; }); -export const sentryVitePlugin = unplugin.vite; -export const sentryRollupPlugin = unplugin.rollup; -export const sentryWebpackPlugin = unplugin.webpack; -export const sentryEsbuildPlugin = unplugin.esbuild; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryVitePlugin: (options?: Options | undefined) => any = unplugin.vite; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryRollupPlugin: (options?: Options | undefined) => any = unplugin.rollup; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryWebpackPlugin: (options?: Options | undefined) => any = unplugin.webpack; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryEsbuildPlugin: (options?: Options | undefined) => any = unplugin.esbuild; diff --git a/packages/unplugin/src/tsconfig.json b/packages/unplugin/src/tsconfig.json index 55c9df824444..32067f493a24 100644 --- a/packages/unplugin/src/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -5,6 +5,6 @@ "compilerOptions": { "esModuleInterop": true, "types": ["node"], - "lib": ["ES2020"] + "lib": ["ES2020", "DOM"] // es2020 needed for "new Set()", DOM needed for various bundler types } } diff --git a/packages/unplugin/test/tsconfig.json b/packages/unplugin/test/tsconfig.json index 440aa770a89c..b73d9b533da9 100644 --- a/packages/unplugin/test/tsconfig.json +++ b/packages/unplugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "sentry-unplugin-tsconfigs/base-config.json", + "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node", "jest"] diff --git a/yarn.lock b/yarn.lock index 8f24d3573da6..04b26a618bd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1223,6 +1223,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.13" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" @@ -2188,6 +2196,22 @@ dependencies: "@babel/types" "^7.3.0" +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.5" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" + integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*": version "0.0.52" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" @@ -2198,6 +2222,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2232,7 +2261,7 @@ jest-matcher-utils "^28.0.0" pretty-format "^28.0.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -2252,10 +2281,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== -"@types/node@^8": - version "8.10.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== +"@types/node@^18.6.3": + version "18.6.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" + integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2279,6 +2308,15 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/webpack@^5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-5.28.0.tgz#78dde06212f038d77e54116cfe69e88ae9ed2c03" + integrity sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w== + dependencies: + "@types/node" "*" + tapable "^2.2.0" + webpack "^5" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -2385,6 +2423,282 @@ "@typescript-eslint/types" "5.29.0" eslint-visitor-keys "^3.3.0" +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@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.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -2398,11 +2712,26 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^8.5.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" @@ -2429,7 +2758,17 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2490,6 +2829,14 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -2632,6 +2979,16 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -2644,11 +3001,24 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2770,6 +3140,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -2795,16 +3170,43 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2813,7 +3215,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2836,6 +3238,82 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.14.5: + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + dependencies: + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" + node-releases "^2.0.6" + update-browserslist-db "^1.0.5" + browserslist@^4.20.2, browserslist@^4.21.0: version "4.21.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" @@ -2863,11 +3341,30 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + builtin-modules@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -3027,6 +3524,11 @@ caniuse-lite@^1.0.30001358: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== +caniuse-lite@^1.0.30001370: + version "1.0.30001373" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be" + integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -3067,7 +3569,26 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.3: +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -3087,6 +3608,11 @@ chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -3097,6 +3623,14 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" @@ -3217,6 +3751,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3268,11 +3807,21 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + conventional-changelog-angular@^5.0.3: version "5.0.13" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" @@ -3407,6 +3956,37 @@ cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3427,6 +4007,23 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3576,6 +4173,14 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -3599,6 +4204,15 @@ diff-sequences@^28.1.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -3628,6 +4242,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + dot-prop@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" @@ -3670,6 +4289,24 @@ electron-to-chromium@^1.4.164: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== +electron-to-chromium@^1.4.202: + version "1.4.206" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz#580ff85b54d7ec0c05f20b1e37ea0becdd7b0ee4" + integrity sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -3680,6 +4317,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encoding@^0.1.11: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -3694,11 +4336,35 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enhanced-resolve@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3740,6 +4406,11 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -3768,6 +4439,258 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +esbuild-android-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" + integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== + +esbuild-android-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz#414a087cb0de8db1e347ecca6c8320513de433db" + integrity sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ== + +esbuild-android-arm64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" + integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== + +esbuild-android-arm64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz#55de3bce2aab72bcd2b606da4318ad00fb9c8151" + integrity sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A== + +esbuild-darwin-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" + integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== + +esbuild-darwin-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz#4259f23ed6b4cea2ec8a28d87b7fb9801f093754" + integrity sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA== + +esbuild-darwin-arm64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" + integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== + +esbuild-darwin-arm64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a" + integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow== + +esbuild-freebsd-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" + integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== + +esbuild-freebsd-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz#27b6587b3639f10519c65e07219d249b01f2ad38" + integrity sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g== + +esbuild-freebsd-arm64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" + integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== + +esbuild-freebsd-arm64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz#63c435917e566808c71fafddc600aca4d78be1ec" + integrity sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg== + +esbuild-linux-32@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" + integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== + +esbuild-linux-32@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz#c3da774143a37e7f11559b9369d98f11f997a5d9" + integrity sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w== + +esbuild-linux-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" + integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== + +esbuild-linux-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz#5d92b67f674e02ae0b4a9de9a757ba482115c4ae" + integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA== + +esbuild-linux-arm64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" + integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== + +esbuild-linux-arm64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz#dac84740516e859d8b14e1ecc478dd5241b10c93" + integrity sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw== + +esbuild-linux-arm@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" + integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== + +esbuild-linux-arm@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz#b3ae7000696cd53ed95b2b458554ff543a60e106" + integrity sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg== + +esbuild-linux-mips64le@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" + integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== + +esbuild-linux-mips64le@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz#dad10770fac94efa092b5a0643821c955a9dd385" + integrity sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A== + +esbuild-linux-ppc64le@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" + integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== + +esbuild-linux-ppc64le@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz#b68c2f8294d012a16a88073d67e976edd4850ae0" + integrity sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ== + +esbuild-linux-riscv64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" + integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== + +esbuild-linux-riscv64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz#608a318b8697123e44c1e185cdf6708e3df50b93" + integrity sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA== + +esbuild-linux-s390x@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" + integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== + +esbuild-linux-s390x@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz#c9e7791170a3295dba79b93aa452beb9838a8625" + integrity sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw== + +esbuild-netbsd-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" + integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== + +esbuild-netbsd-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz#0abd40b8c2e37fda6f5cc41a04cb2b690823d891" + integrity sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A== + +esbuild-openbsd-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" + integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== + +esbuild-openbsd-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz#4adba0b7ea7eb1428bb00d8e94c199a949b130e8" + integrity sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA== + +esbuild-sunos-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" + integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== + +esbuild-sunos-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz#4b8a6d97dfedda30a6e39607393c5c90ebf63891" + integrity sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA== + +esbuild-windows-32@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" + integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== + +esbuild-windows-32@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz#d31d8ca0c1d314fb1edea163685a423b62e9ac17" + integrity sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg== + +esbuild-windows-64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" + integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== + +esbuild-windows-64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz#7d3c09c8652d222925625637bdc7e6c223e0085d" + integrity sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA== + +esbuild-windows-arm64@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" + integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== + +esbuild-windows-arm64@0.14.51: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz#0220d2304bfdc11bc27e19b2aaf56edf183e4ae9" + integrity sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g== + +esbuild@0.14.49: + version "0.14.49" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" + integrity sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw== + optionalDependencies: + esbuild-android-64 "0.14.49" + esbuild-android-arm64 "0.14.49" + esbuild-darwin-64 "0.14.49" + esbuild-darwin-arm64 "0.14.49" + esbuild-freebsd-64 "0.14.49" + esbuild-freebsd-arm64 "0.14.49" + esbuild-linux-32 "0.14.49" + esbuild-linux-64 "0.14.49" + esbuild-linux-arm "0.14.49" + esbuild-linux-arm64 "0.14.49" + esbuild-linux-mips64le "0.14.49" + esbuild-linux-ppc64le "0.14.49" + esbuild-linux-riscv64 "0.14.49" + esbuild-linux-s390x "0.14.49" + esbuild-netbsd-64 "0.14.49" + esbuild-openbsd-64 "0.14.49" + esbuild-sunos-64 "0.14.49" + esbuild-windows-32 "0.14.49" + esbuild-windows-64 "0.14.49" + esbuild-windows-arm64 "0.14.49" + +esbuild@^0.14.47: + version "0.14.51" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e" + integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== + optionalDependencies: + esbuild-android-64 "0.14.51" + esbuild-android-arm64 "0.14.51" + esbuild-darwin-64 "0.14.51" + esbuild-darwin-arm64 "0.14.51" + esbuild-freebsd-64 "0.14.51" + esbuild-freebsd-arm64 "0.14.51" + esbuild-linux-32 "0.14.51" + esbuild-linux-64 "0.14.51" + esbuild-linux-arm "0.14.51" + esbuild-linux-arm64 "0.14.51" + esbuild-linux-mips64le "0.14.51" + esbuild-linux-ppc64le "0.14.51" + esbuild-linux-riscv64 "0.14.51" + esbuild-linux-s390x "0.14.51" + esbuild-netbsd-64 "0.14.51" + esbuild-openbsd-64 "0.14.51" + esbuild-sunos-64 "0.14.51" + esbuild-windows-32 "0.14.51" + esbuild-windows-64 "0.14.51" + esbuild-windows-arm64 "0.14.51" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3825,7 +4748,7 @@ eslint-plugin-react@^7.29.4: semver "^6.3.0" string.prototype.matchall "^4.0.7" -eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -3833,6 +4756,14 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -3920,7 +4851,7 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -3952,6 +4883,19 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +events@^3.0.0, events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4148,6 +5092,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4170,6 +5119,15 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4286,6 +5244,14 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -4500,6 +5466,11 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4549,7 +5520,7 @@ globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -4661,6 +5632,32 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -4700,6 +5697,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" @@ -4744,6 +5746,11 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -4833,11 +5840,21 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + ini@^1.3.2, ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -4921,6 +5938,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -5207,7 +6231,12 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -isarray@1.0.0, isarray@~1.0.0: +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -5615,6 +6644,15 @@ jest-watcher@^28.1.1: jest-util "^28.1.1" string-length "^4.0.1" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest-worker@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" @@ -5669,12 +6707,12 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -5699,6 +6737,13 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" @@ -5857,6 +6902,25 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6000,6 +7064,14 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -6082,6 +7154,15 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -6091,6 +7172,22 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -6154,7 +7251,7 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^3.1.10: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6181,12 +7278,20 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6208,6 +7313,16 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -6276,7 +7391,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.0: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -6351,6 +7466,16 @@ mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nan@^2.12.1: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -6373,7 +7498,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -6421,11 +7546,45 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -6453,6 +7612,13 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6542,7 +7708,7 @@ npm-registry-fetch@^4.0.0: npm-package-arg "^6.1.0" safe-buffer "^5.2.0" -npm-run-all@^4.1.5: +npm-run-all@4.1.5, npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== @@ -6722,6 +7888,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6882,6 +8053,11 @@ pacote@^9.5.0: unique-filename "^1.1.1" which "^1.3.1" +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" @@ -6898,6 +8074,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -6953,6 +8140,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -7016,6 +8208,17 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -7046,6 +8249,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -7070,6 +8278,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -7082,6 +8297,15 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +postcss@^8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -7119,6 +8343,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -7173,11 +8402,28 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -7203,6 +8449,16 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -7235,6 +8491,16 @@ query-string@^6.13.8: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -7250,6 +8516,21 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -7346,7 +8627,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7359,7 +8640,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2: +"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -7378,6 +8659,15 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -7479,6 +8769,11 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + repeat-element@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" @@ -7571,7 +8866,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -7626,6 +8921,14 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + rollup@2.75.7: version "2.75.7" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" @@ -7633,6 +8936,20 @@ rollup@2.75.7: optionalDependencies: fsevents "~2.3.2" +rollup@2.77.0: + version "2.77.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" + integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== + optionalDependencies: + fsevents "~2.3.2" + +rollup@^2.75.6: + version "2.77.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.2.tgz#6b6075c55f9cc2040a5912e6e062151e42e2c4e3" + integrity sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g== + optionalDependencies: + fsevents "~2.3.2" + run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -7659,7 +8976,7 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -7681,6 +8998,24 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -7708,6 +9043,20 @@ semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -7723,6 +9072,19 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -7844,6 +9206,16 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -7863,6 +9235,14 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -7873,7 +9253,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -7984,6 +9364,14 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -7992,6 +9380,17 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -8077,7 +9476,7 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -8213,6 +9612,16 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar@^4.4.10, tar@^4.4.8: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -8251,6 +9660,51 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^5.1.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" + integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.7.2" + +terser@^4.1.2: + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.7.2: + version "5.14.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -8303,6 +9757,13 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -8315,6 +9776,11 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -8399,6 +9865,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -8453,10 +9924,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== +typescript@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== uglify-js@^3.1.4: version "3.16.1" @@ -8565,6 +10036,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + update-browserslist-db@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" @@ -8573,6 +10049,14 @@ update-browserslist-db@^1.0.0: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -8585,6 +10069,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -8602,6 +10094,20 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -8645,6 +10151,23 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vite@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" + integrity sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA== + dependencies: + esbuild "^0.14.47" + postcss "^8.4.14" + resolve "^1.22.1" + rollup "^2.75.6" + optionalDependencies: + fsevents "~2.3.2" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -8652,6 +10175,32 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -8669,6 +10218,14 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" @@ -8679,6 +10236,66 @@ webpack-virtual-modules@^0.4.4: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz#a19fcf371923c59c4712d63d7d194b1e4d8262cc" integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== +"webpack5@npm:webpack@5.74.0", webpack@^5, webpack@^5.74.0: + name webpack5 + version "5.74.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + 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" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +webpack@4.46.0: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@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" + 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" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -8750,6 +10367,13 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -8809,7 +10433,7 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 13f118f31c125abf9f90898706377e2981289438 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 Aug 2022 11:42:24 +0200 Subject: [PATCH 014/640] Unstale yarn.lock --- yarn.lock | 70 ++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/yarn.lock b/yarn.lock index 04b26a618bd7..3e690515555d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2308,15 +2308,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/webpack@^5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-5.28.0.tgz#78dde06212f038d77e54116cfe69e88ae9ed2c03" - integrity sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w== - dependencies: - "@types/node" "*" - tapable "^2.2.0" - webpack "^5" - "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -10236,8 +10227,36 @@ webpack-virtual-modules@^0.4.4: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz#a19fcf371923c59c4712d63d7d194b1e4d8262cc" integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== -"webpack5@npm:webpack@5.74.0", webpack@^5, webpack@^5.74.0: - name webpack5 +"webpack4@npm:webpack@4.46.0": + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@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" + 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" + +webpack@5.74.0: version "5.74.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== @@ -10267,35 +10286,6 @@ webpack-virtual-modules@^0.4.4: watchpack "^2.4.0" webpack-sources "^3.2.3" -webpack@4.46.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@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" - 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" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" From a250f733456b5abe759fbbf5908daaa36293eac8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 Aug 2022 11:46:41 +0200 Subject: [PATCH 015/640] Bump `unplugin` and pin `magic-string` --- packages/unplugin/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index c2ed6434d7ab..248f2c0e3e9f 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -20,8 +20,8 @@ "lint": "eslint ./src ./test --max-warnings=0" }, "dependencies": { - "magic-string": "^0.26.2", - "unplugin": "^0.7.2" + "magic-string": "0.26.2", + "unplugin": "0.9.4" }, "devDependencies": { "@babel/core": "7.18.5", From 04560cdea8da7cdbcbb4e0f1126593476c324472 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 Aug 2022 11:47:17 +0200 Subject: [PATCH 016/640] Unstale yarn lock --- yarn.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3e690515555d..42490257aceb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2718,7 +2718,7 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.5.0: +acorn@^8.5.0, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -7034,6 +7034,13 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== +magic-string@0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -7041,13 +7048,6 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -magic-string@^0.26.2: - version "0.26.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" - integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== - dependencies: - sourcemap-codec "^1.4.8" - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -10009,12 +10009,12 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unplugin@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.7.2.tgz#4127012fdc2c84ea4ce03ce75e3d4f54ea47bba1" - integrity sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ== +unplugin@0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.9.4.tgz#53e6f4fc92905122219af0e3f40af753563d38b6" + integrity sha512-lUe769wSsZiltVA1Ns9ZRx3K1ri/4yzOrLLI/ebSAj2f0PsXqIJeHIXhkhiayEe1pv+mHuZYyBS3B2RXG2Q2EQ== dependencies: - acorn "^8.7.1" + acorn "^8.8.0" chokidar "^3.5.3" webpack-sources "^3.2.3" webpack-virtual-modules "^0.4.4" From b2afba10e7d0959c8f04b298f72e181469f83592 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 Aug 2022 12:37:19 +0200 Subject: [PATCH 017/640] Document hooks --- packages/unplugin/src/index.ts | 44 ++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 280a20d05443..7e3454353ea6 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -38,12 +38,26 @@ const unplugin = createUnplugin((options) => { return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook - resolveId(id, _importer, { isEntry }) { + + /** + * In the sentry-unplugin, this hook is responsible for creating a Set containing the entrypoints as absolute paths. + * + * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. + * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. + * @param options Additional information to use for making a resolving decision. + * @returns undefined. + */ + resolveId(id, importer, { isEntry }) { debugLog( - `Called "resolveId": ${JSON.stringify({ id, importer: _importer, options: { isEntry } })}` + `Called "resolveId": ${JSON.stringify({ id, importer: importer, options: { isEntry } })}` ); + // We only store the absolute path when we encounter an entrypoint if (isEntry) { + // If we're looking at an entrypoint, which is the case here, `id` is either an absolute path or a relative path. + // If it's an absolute path we can just store it. If it's a relative path, we can assume the path got defined + // from a config file and when bundlers are run via a config file the process CWD is usually the one the config + // file is located in, so we can simply join CWD and id and we get the absolute path. const entrypoint = path.normalize(path.isAbsolute(id) ? id : path.join(process.cwd(), id)); entrypoints.add(entrypoint); debugLog(`Added entrypoint: ${entrypoint}`); @@ -51,14 +65,30 @@ const unplugin = createUnplugin((options) => { return undefined; }, + + /** + * Determines whether we want to transform a module. + * + * @param id Always the absolute (fully resolved) path to the module. + * @returns `true` or `false` depending on whether we want to transform the module. For the sentry-unplugin we only + * want to transform entrypoints. + */ transformInclude(id) { - const shouldTransform = entrypoints.has(id); + const shouldTransform = entrypoints.has(path.normalize(id)); debugLog(`Called "transformInclude": ${JSON.stringify({ id })}`); debugLog(`Will transform "${id}": ${String(shouldTransform)}`); return shouldTransform; }, + + /** + * Responsible for injecting the global release value code. + * + * @param code Unprocessed code of the module. + * @param id Always the absolute (fully resolved) path to the module. + * @returns Code and source map if we decide to inject code. `undefined` otherwise. + */ transform(code, id) { if (entrypoints.has(path.normalize(id))) { const ms = new MagicString(code); @@ -76,10 +106,10 @@ const unplugin = createUnplugin((options) => { }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryVitePlugin: (options?: Options | undefined) => any = unplugin.vite; +export const sentryVitePlugin: (options: Options) => any = unplugin.vite; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryRollupPlugin: (options?: Options | undefined) => any = unplugin.rollup; +export const sentryRollupPlugin: (options: Options) => any = unplugin.rollup; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: Options | undefined) => any = unplugin.webpack; +export const sentryWebpackPlugin: (options: Options) => any = unplugin.webpack; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryEsbuildPlugin: (options?: Options | undefined) => any = unplugin.esbuild; +export const sentryEsbuildPlugin: (options: Options) => any = unplugin.esbuild; From 484a719a187fdfdf456b9da1489b8eed1e7dde19 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Mon, 22 Aug 2022 15:16:32 +0200 Subject: [PATCH 018/640] chore: add release discovery (#21) * chore: add release discovery * chore: update release name in gh action * Update packages/unplugin/test/getReleaseName.test.ts Co-authored-by: Lukas Stracke Co-authored-by: Lukas Stracke --- .github/workflows/checks.yml | 1 + packages/unplugin/src/getReleaseName.ts | 38 +++++++ packages/unplugin/src/index.ts | 6 +- packages/unplugin/test/getReleaseName.test.ts | 98 +++++++++++++++++++ 4 files changed, 138 insertions(+), 5 deletions(-) create mode 100644 packages/unplugin/src/getReleaseName.ts create mode 100644 packages/unplugin/test/getReleaseName.test.ts diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 9559b098315c..f432b6d577f6 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -7,6 +7,7 @@ on: env: DEFAULT_NODE_VERSION: "16.15.1" + SENTRY_RELEASE: "default_release_name" jobs: build: diff --git a/packages/unplugin/src/getReleaseName.ts b/packages/unplugin/src/getReleaseName.ts new file mode 100644 index 000000000000..ad4967b7ccde --- /dev/null +++ b/packages/unplugin/src/getReleaseName.ts @@ -0,0 +1,38 @@ +import * as child_process from "child_process"; +import * as fs from "fs"; +import * as path from "path"; + +function isGit(dir: string) { + return fs.existsSync(path.join(dir, ".git")); +} + +function getBranchHead() { + return child_process.execSync("git rev-parse HEAD").toString().trim(); +} + +export function getReleaseName(releaseName?: string): string { + if (releaseName) { + return releaseName; + } + + const ENV_VARS = [ + "SENTRY_RELEASE", + "SOURCE_VERSION", // Heroku #1 https://devcenter.heroku.com/changelog-items/630 + "HEROKU_SLUG_COMMIT", // Heroku #2: https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases + "CODEBUILD_RESOLVED_SOURCE_VERSION", // AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html + "CIRCLE_SHA1", // CircleCI: https://circleci.com/docs/2.0/env-vars/ + "VERCEL_GIT_COMMIT_SHA", // Vercel docs: https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables + ]; + + const releaseFromEnvironmentVar = ENV_VARS.find((key) => Object.keys(process.env).includes(key)); + + if (releaseFromEnvironmentVar) { + return process.env[releaseFromEnvironmentVar] as string; + } + + if (isGit(process.cwd())) { + return getBranchHead(); + } else { + throw new Error("Could not return a release name"); + } +} diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 7e3454353ea6..bd7ae4f56ce9 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -1,5 +1,6 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; +import { getReleaseName } from "./getReleaseName"; import * as path from "path"; function generateGlobalInjectorCode({ release }: { release: string }) { @@ -16,11 +17,6 @@ function generateGlobalInjectorCode({ release }: { release: string }) { _global.SENTRY_RELEASE={id:"${release}"};`; } -// TODO: Replace this function with actual logic -function getReleaseName() { - return "default"; -} - export interface Options { debugLogging?: boolean; } diff --git a/packages/unplugin/test/getReleaseName.test.ts b/packages/unplugin/test/getReleaseName.test.ts new file mode 100644 index 000000000000..6c04d5764d12 --- /dev/null +++ b/packages/unplugin/test/getReleaseName.test.ts @@ -0,0 +1,98 @@ +import { getReleaseName } from "../src/getReleaseName"; +import * as fs from "fs"; +import * as child_process from "child_process"; +jest.mock("fs"); +jest.mock("child_process"); + +const mockedFs = fs; +const mockedChildProcess = child_process; + +describe("environmental getReleaseName", () => { + const OLD_ENV = process.env; + + beforeEach(() => { + jest.resetModules(); + process.env = { ...OLD_ENV }; + }); + + afterEach(() => { + (mockedChildProcess.execSync as jest.Mock).mockRestore(); + }); + + afterAll(() => { + process.env = OLD_ENV; + }); + + it("adheres to HEAD when git is present", () => { + (mockedFs.existsSync as jest.Mock).mockReturnValueOnce(true); + const sha = "c3f235fc86f1c4007e3a218ec82d666586e73cbf"; + (mockedChildProcess.execSync as jest.Mock).mockReturnValue(sha); + + expect(getReleaseName()).toBe(sha); + }); + + it("throws an error if no release information could be found", () => { + (mockedFs.existsSync as jest.Mock).mockReturnValueOnce(false); + + expect(getReleaseName).toThrow("Could not return a release name"); + }); + + it("adheres to user defined release name", () => { + const releaseName = "USER_DEFINED_this-is-my-custom-release"; + + expect(getReleaseName(releaseName)).toBe(releaseName); + }); + + it("adheres to process.env.SENTRY_RELEASE", () => { + const releaseName = "SENTRY_RELEASE_string"; + process.env["SENTRY_RELEASE"] = releaseName; + + expect(getReleaseName()).toBe(releaseName); + }); + + it("adheres to Heroku: process.env.SOURCE_VERSION", () => { + const releaseName = "SOURCE_VERSION_string"; + process.env["SOURCE_VERSION"] = releaseName; + + expect(getReleaseName()).toBe(releaseName); + }); + + it("adheres to Heroku: process.env.HEROKU_SLUG_COMMIT", () => { + const releaseName = "HEROKU_SLUG_COMMIT_string"; + process.env["HEROKU_SLUG_COMMIT"] = releaseName; + + expect(getReleaseName()).toBe(releaseName); + }); + + it("adheres to AWS: process.env.CODEBUILD_RESOLVED_SOURCE_VERSION", () => { + const releaseName = "CODEBUILD_RESOLVED_SOURCE_VERSION_string"; + process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] = releaseName; + + expect(getReleaseName()).toBe(releaseName); + }); + + it("adheres to Vercel: process.env.VERCEL_GIT_COMMIT_SHA", () => { + const releaseName = "VERCEL_GIT_COMMIT_SHA_string"; + process.env["VERCEL_GIT_COMMIT_SHA"] = releaseName; + + expect(getReleaseName()).toBe(releaseName); + }); + + it("allows SENTRY_RELEASE to take precedence over other env vars", () => { + const vercelReleaseName = "VERCEL_GIT_COMMIT_SHA_string"; + const sentryReleaseName = "SENTRY_RELEASE_string"; + process.env["VERCEL_GIT_COMMIT_SHA"] = vercelReleaseName; + process.env["SENTRY_RELEASE"] = sentryReleaseName; + + expect(getReleaseName()).toBe(sentryReleaseName); + }); + + it("allows custom release name to take precedence over other env vars", () => { + const vercelReleaseName = "VERCEL_GIT_COMMIT_SHA_string"; + const sentryReleaseName = "SENTRY_RELEASE_string"; + process.env["VERCEL_GIT_COMMIT_SHA"] = vercelReleaseName; + process.env["SENTRY_RELEASE"] = sentryReleaseName; + + expect(getReleaseName("cutom_release_name")).toBe("cutom_release_name"); + }); +}); From 77a9ea61668082d7fafb16399baea9f0fbb091a8 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Mon, 22 Aug 2022 15:41:44 +0200 Subject: [PATCH 019/640] chore: extract SENTRY_RELEASE from rest of the group (#22) --- packages/unplugin/src/getReleaseName.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/unplugin/src/getReleaseName.ts b/packages/unplugin/src/getReleaseName.ts index ad4967b7ccde..30456117c262 100644 --- a/packages/unplugin/src/getReleaseName.ts +++ b/packages/unplugin/src/getReleaseName.ts @@ -15,8 +15,13 @@ export function getReleaseName(releaseName?: string): string { return releaseName; } + // Env var SENTRY_RELEASE takes presendace over other env vars listed below + // this is why we are looking for it before proceeding with others + if (process.env["SENTRY_RELEASE"]) { + return process.env["SENTRY_RELEASE"]; + } + const ENV_VARS = [ - "SENTRY_RELEASE", "SOURCE_VERSION", // Heroku #1 https://devcenter.heroku.com/changelog-items/630 "HEROKU_SLUG_COMMIT", // Heroku #2: https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases "CODEBUILD_RESOLVED_SOURCE_VERSION", // AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html From d14fc3c1af86685c9befef8822abae24e7b18a84 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 22 Aug 2022 16:28:18 +0200 Subject: [PATCH 020/640] feat(sourcemaps): add SentryFacade and Sentry CLI Boilerplate (#23) This PR marks the first step towards getting source maps and release creation/finalization working. It adds Sentry-CLI as a dependency, as well as a facade object for the necessary steps (see explanation below). While we want to get rid of depending on Sentry CLI eventually, I decided to use it for now to get our MVP out faster. To replace Sentry CLI functionality easily with our "native" functionality later, I created a facade to abstract the implementation of the necessary steps from what we call in the "front end" of our plugin. We can replace each CLI command step by step with our own implementation later on. --- packages/playground/build-esbuild.js | 7 ++- packages/playground/build-webpack4.js | 13 ++++- packages/playground/build-webpack5.js | 4 +- packages/playground/config.json | 9 ++++ packages/playground/rollup.config.js | 9 +++- packages/playground/vite.config.js | 7 ++- packages/unplugin/package.json | 4 +- packages/unplugin/rollup.config.js | 2 + packages/unplugin/src/cli.ts | 52 ++++++++++++++++++++ packages/unplugin/src/facade.ts | 68 +++++++++++++++++++++++++++ packages/unplugin/src/index.ts | 22 ++++++--- packages/unplugin/src/types.ts | 63 +++++++++++++++++++++++++ yarn.lock | 63 +++++++++++++++++++++---- 13 files changed, 301 insertions(+), 22 deletions(-) create mode 100644 packages/playground/config.json create mode 100644 packages/unplugin/src/cli.ts create mode 100644 packages/unplugin/src/facade.ts create mode 100644 packages/unplugin/src/types.ts diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 80703d13154e..9259fe59bbf4 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -1,10 +1,15 @@ const { sentryEsbuildPlugin } = require("@sentry/unplugin"); const { build } = require("esbuild"); +const placeHolderOptions = require("./config.json"); build({ entryPoints: ["./src/entrypoint1.js"], outdir: "./out/esbuild", - plugins: [sentryEsbuildPlugin()], + plugins: [ + sentryEsbuildPlugin({ + ...placeHolderOptions, + }), + ], minify: true, bundle: true, format: "cjs", diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 231743630c59..3114a1f81ceb 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -3,6 +3,8 @@ const path = require("path"); const webpack4 = require("webpack4"); const { sentryWebpackPlugin } = require("@sentry/unplugin"); +const placeHolderOptions = require("./config.json"); + webpack4( { mode: "production", @@ -14,7 +16,16 @@ webpack4( library: "ExampleBundle", libraryTarget: "commonjs", }, - plugins: [sentryWebpackPlugin()], + plugins: [ + sentryWebpackPlugin({ + org: "sentry-sdks", + project: "someProj", + authToken: "1234", + include: "*", + debugLogging: true, + debug: true, + }), + ], devtool: "source-map", }, (err) => { diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 495384d13d19..886763ce44e7 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -3,6 +3,8 @@ const path = require("path"); const webpack5 = require("webpack"); const { sentryWebpackPlugin } = require("@sentry/unplugin"); +const placeHolderOptions = require("./config.json"); + webpack5( { cache: false, @@ -16,7 +18,7 @@ webpack5( }, }, mode: "production", - plugins: [sentryWebpackPlugin()], + plugins: [sentryWebpackPlugin({ ...placeHolderOptions })], devtool: "source-map", }, (err) => { diff --git a/packages/playground/config.json b/packages/playground/config.json new file mode 100644 index 000000000000..e40336e73f2c --- /dev/null +++ b/packages/playground/config.json @@ -0,0 +1,9 @@ +{ + "release": "0.0.1", + "org": "some-org", + "project": "some-proj", + "authToken": "some-auth-token", + "include": "/dist", + "debugLogging": true, + "debug": true +} diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.js index 67a529a70ed3..ab714fbf71ae 100644 --- a/packages/playground/rollup.config.js +++ b/packages/playground/rollup.config.js @@ -2,6 +2,7 @@ import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; import { sentryRollupPlugin } from "@sentry/unplugin"; +import placeHolderOptions from "./config.json"; const input = ["src/entrypoint1.js"]; @@ -9,7 +10,13 @@ const extensions = [".js"]; export default { input, - plugins: [resolve({ extensions }), commonjs(), sentryRollupPlugin()], + plugins: [ + resolve({ extensions }), + commonjs(), + sentryRollupPlugin({ + ...placeHolderOptions, + }), + ], output: { dir: "./out/rollup", format: "cjs", diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index 1632e01f806c..90c5df759c06 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -2,6 +2,7 @@ import { sentryVitePlugin } from "@sentry/unplugin"; import { defineConfig } from "vite"; import * as path from "path"; +import placeHolderOptions from "./config.json"; export default defineConfig({ build: { @@ -14,5 +15,9 @@ export default defineConfig({ }, sourcemap: true, }, - plugins: [sentryVitePlugin()], + plugins: [ + sentryVitePlugin({ + ...placeHolderOptions, + }), + ], }); diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 248f2c0e3e9f..ca0057ef48bb 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -17,9 +17,10 @@ "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "test": "jest", - "lint": "eslint ./src ./test --max-warnings=0" + "lint": "eslint ./src ./test" }, "dependencies": { + "@sentry/cli": "1.74.5", "magic-string": "0.26.2", "unplugin": "0.9.4" }, @@ -29,6 +30,7 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js index 112364f4b530..4b84dba10809 100644 --- a/packages/unplugin/rollup.config.js +++ b/packages/unplugin/rollup.config.js @@ -2,6 +2,7 @@ import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; import babel from "@rollup/plugin-babel"; import packageJson from "./package.json"; +import json from "@rollup/plugin-json"; const input = ["src/index.ts"]; @@ -14,6 +15,7 @@ export default { plugins: [ resolve({ extensions, preferBuiltins: true }), commonjs(), + json(), babel({ extensions, babelHelpers: "bundled", diff --git a/packages/unplugin/src/cli.ts b/packages/unplugin/src/cli.ts new file mode 100644 index 000000000000..e1a5123eeb20 --- /dev/null +++ b/packages/unplugin/src/cli.ts @@ -0,0 +1,52 @@ +import SentryCli from "@sentry/cli"; +import { Options } from "./types"; + +/** Creates a new Sentry CLI instance. */ +export function makeSentryCli(options: Options) { + //TODO: pass config file instead of null + const cli = new SentryCli(undefined, { + silent: false, //TODO read from options + org: options.org, + project: options.project, + authToken: options.authToken, + url: options.url, + vcsRemote: "origin", //TODO set from options, + }); + + // Let's not worry about dry run for now + // if (this.isDryRun()) { + // this.outputDebug("DRY Run Mode"); + + // return { + // releases: { + // proposeVersion: () => + // cli.releases.proposeVersion().then((version) => { + // this.outputDebug("Proposed version:\n", version); + // return version; + // }), + // new: (release) => { + // this.outputDebug("Creating new release:\n", release); + // return Promise.resolve(release); + // }, + // uploadSourceMaps: (release, config) => { + // this.outputDebug("Calling upload-sourcemaps with:\n", config); + // return Promise.resolve(release, config); + // }, + // finalize: (release) => { + // this.outputDebug("Finalizing release:\n", release); + // return Promise.resolve(release); + // }, + // setCommits: (release, config) => { + // this.outputDebug("Calling set-commits with:\n", config); + // return Promise.resolve(release, config); + // }, + // newDeploy: (release, config) => { + // this.outputDebug("Calling deploy with:\n", config); + // return Promise.resolve(release, config); + // }, + // }, + // }; + // } + + return cli; +} diff --git a/packages/unplugin/src/facade.ts b/packages/unplugin/src/facade.ts new file mode 100644 index 000000000000..5308ff05b8ee --- /dev/null +++ b/packages/unplugin/src/facade.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable no-console */ +//TODO: remove eslint rules + +// Build a facade that exposes necessary sentry functionality +// Idea: We start out with Sentry-CLI and replace the cli-commands one by one afterwards. +// Goal: eventually replace everything sentry-cli does with "native" code here +// Reason: We don't want to depend on a binary that gets downloaded in a postinstall hook +// - no fixed version +// - huge download +// - unnecessary functionality + +import { makeSentryCli } from "./cli"; +import { Options } from "./types"; + +export type SentryFacade = { + createNewRelease: () => any; + cleanArtifacts: () => any; + uploadSourceMaps: () => any; + setCommits: () => any; + finalizeRelease: () => any; + addDeploy: () => any; +}; + +/** + * Factory function that provides all necessary Sentry functionality for creating + * a release on Sentry. This includes uploading source maps and finalizing the release + */ +export function makeSentryFacade(version: string, options: Options): SentryFacade { + makeSentryCli(options); + //TODO: remove + // void cli.execute(["--version"], true); + + return { + createNewRelease: () => createNewRelease(version), + cleanArtifacts: () => cleanArtifacts(), + uploadSourceMaps: () => uploadSourceMaps(version), + setCommits: () => setCommits(version), + finalizeRelease: () => finalizeRelease(version), + addDeploy: () => addDeploy(version), + }; +} + +function createNewRelease(version: string) { + //TODO(must have): implement release creation logic here +} + +function uploadSourceMaps(version: string) { + //TODO(must have): implement source maps upload logic here +} + +function finalizeRelease(version: string) { + //TODO(must have): implement release finalization logic here +} + +// TODO: Stuff we worry about later: + +function cleanArtifacts() { + // NOOP for now +} + +function setCommits(version: string) { + // NOOP for now +} + +function addDeploy(version: string) { + // NOOP for now +} diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index bd7ae4f56ce9..240fbb069e7e 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -2,6 +2,8 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; import { getReleaseName } from "./getReleaseName"; import * as path from "path"; +import { Options } from "./types"; +import { makeSentryFacade } from "./facade"; function generateGlobalInjectorCode({ release }: { release: string }) { return ` @@ -17,15 +19,12 @@ function generateGlobalInjectorCode({ release }: { release: string }) { _global.SENTRY_RELEASE={id:"${release}"};`; } -export interface Options { - debugLogging?: boolean; -} - const unplugin = createUnplugin((options) => { - function debugLog(message: string) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function debugLog(...args: any) { if (options?.debugLogging) { // eslint-disable-next-line no-console - console.log(`[Sentry-plugin] ${message}`); + console.log("[Sentry-plugin]}", args); } } @@ -88,7 +87,9 @@ const unplugin = createUnplugin((options) => { transform(code, id) { if (entrypoints.has(path.normalize(id))) { const ms = new MagicString(code); - ms.prepend(generateGlobalInjectorCode({ release: getReleaseName() })); + ms.prepend( + generateGlobalInjectorCode({ release: getReleaseName(options.release || "0.0.1") }) + ); return { code: ms.toString(), map: ms.generateMap(), @@ -98,6 +99,11 @@ const unplugin = createUnplugin((options) => { return undefined; } }, + buildEnd() { + const sentryFacade = makeSentryFacade(getReleaseName(options.release || "0.0.1"), options); + //TODO: do stuff with the facade here lol + debugLog("this is my facade:", sentryFacade); + }, }; }); @@ -109,3 +115,5 @@ export const sentryRollupPlugin: (options: Options) => any = unplugin.rollup; export const sentryWebpackPlugin: (options: Options) => any = unplugin.webpack; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryEsbuildPlugin: (options: Options) => any = unplugin.esbuild; + +export type { Options } from "./types"; diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts new file mode 100644 index 000000000000..d4041e2887ca --- /dev/null +++ b/packages/unplugin/src/types.ts @@ -0,0 +1,63 @@ +//TODO: JsDoc for all properties +export type Options = { + debugLogging?: boolean; + + /* --- authentication/identification: */ + org?: string; + project?: string; + authToken?: string; + url?: string; + // configFile: string + + /* --- release properties: */ + release?: string; + // dist: string, + // entries: string[] | RegExp | ((key: string) => boolean); + + /* --- source maps properties: */ + //TODO: make this required + include?: string; //| string[] | IncludeEntry[]; + // ignoreFile: string + // ignore: string | string[] + // ext: string[] + // urlPrefix: string, + // urlSuffix: string, + // validate: boolean + // stripPrefix?: boolean, + // stripCommonPrefix?: boolean, + // sourceMapReference?: boolean, + // rewrite?: boolean, + + /* --- other unimportant (for now) stuff- properties: */ + // vcsRemote: string, + // customHeader: string, + + // finalize?: boolean, + // dryRun?: boolean, + debug?: boolean; + // silent?: boolean, + // cleanArtifacts?: boolean, + // errorHandler?: (err: Error, invokeErr: function(): void, compilation: unknown) => void, + // setCommits?: { + // repo?: string, + // commit?: string, + // previousCommit?: string, + // auto?: boolean, + // ignoreMissing?: boolean + // }, + // deploy?: { + // env: string, + // started?: number, + // finished?: number, + // time?: number, + // name?: string, + // url?: string, + // } +}; + +/* +type IncludeEntry = { + paths: string[]; + //TODO: what about the other entries?? +}; +*/ diff --git a/yarn.lock b/yarn.lock index 42490257aceb..0927cbd45da2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2032,6 +2032,13 @@ magic-string "^0.25.7" resolve "^1.17.0" +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@rollup/plugin-node-resolve@13.3.0": version "13.3.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" @@ -2044,7 +2051,7 @@ is-module "^1.0.0" resolve "^1.19.0" -"@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -2053,6 +2060,19 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sentry/cli@1.74.5": + version "1.74.5" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.5.tgz#4a5c622913087c9ab6f82994da9a7526423779b8" + integrity sha512-Ze1ec306ZWHtrxKypOJ8nhtFqkrx2f/6bRH+DcJzEQ3bBePQ0ZnqJTTe4BBHADYBtxFIaUWzCZ6DquLz2Zv/sw== + dependencies: + https-proxy-agent "^5.0.0" + mkdirp "^0.5.5" + node-fetch "^2.6.7" + npmlog "^4.1.2" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + "@sinclair/typebox@^0.23.3": version "0.23.5" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" @@ -2735,6 +2755,13 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" @@ -4053,6 +4080,13 @@ debug@3.1.0: dependencies: ms "2.0.0" +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4067,13 +4101,6 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -5701,6 +5728,14 @@ https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -8339,6 +8374,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -8393,6 +8433,11 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -10326,7 +10371,7 @@ which@1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== From fe67ecd5d35450d236e2ee1ac0fcf35bffcc1928 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 Aug 2022 17:50:09 +0200 Subject: [PATCH 021/640] ref(release-injector): Inject by importing in every module (#24) --- packages/unplugin/src/index.ts | 184 ++++++++++++++++++++++++--------- 1 file changed, 133 insertions(+), 51 deletions(-) diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 240fbb069e7e..f521e3139f51 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -1,112 +1,194 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; import { getReleaseName } from "./getReleaseName"; -import * as path from "path"; import { Options } from "./types"; import { makeSentryFacade } from "./facade"; -function generateGlobalInjectorCode({ release }: { release: string }) { - return ` - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:"${release}"};`; -} - -const unplugin = createUnplugin((options) => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - function debugLog(...args: any) { +/** + * The sentry-unplugin concerns itself with two things: + * - Release injection + * - Sourcemaps upload + * + * Release injection: + * + * The sentry-unpugin will inject a global `SENTRY_RELEASE` variable into all bundles. On a technical level this is done + * by appending an import (`import "sentry-release-injector;"`) to all files of the user code (see `transformInclude` + * and `transform` hooks). This import is then resolved by the sentry-unplugin to a virtual module that sets the global + * variable (see `resolveId` and `load` hooks). + * + * It sounds a bit dubious that we're injecting appending the same import to *all* user files but it has its reasons: + * With the way `unplugin` and bundlers work, we do not always have the information we need to only inject code at the + * top of an entry file. The `transform` and `transformInclude` hooks don't have any information as to whether a file is + * an entry file - so they need context from another hook for that. The only location where we can determine if a file + * is an entry file is the `resolveId` hook - sadly in this hook, we do not have an guaranteed absolute path of the file + * we're looking at, which would require us to do a heuristic (using `process.cwd()`) which isn't bulletproof. + * + * Since 1) sharing context across bundler hooks is a bit of an anti-pattern and 2) having a heuristic that is + * potentially producing false results, we went for the approach of simply importing the "global injector file" in every + * file. Luckily bundlers are smart enough to only include it once in a bundle. :) + * + * The resulting output approximately looks like this: + * + * ```text + * index.js (user file) + * ┌───────────────────┐ ┌─────────────────────────────────────────────────┐ + * │ │ │ import { myFunction } from "./my-library.js"; │ + * │ sentry-unplugin │ │ │ + * │ │ │ const myResult = myFunction(); │ + * └---------│---------┘ │ export { myResult }; │ + * │ │ │ + * │ injects │ // injected by sentry-unplugin │ + * ├───────────────────► import "sentry-release-injector"; ─────────────────────┐ + * │ └─────────────────────────────────────────────────┘ │ + * │ │ + * │ │ + * │ my-library.js (user file) │ + * │ ┌─────────────────────────────────────────────────┐ │ + * │ │ export function myFunction() { │ │ + * │ │ return "Hello world!"; │ │ + * │ │ } │ │ + * │ │ │ │ + * │ injects │ // injected by sentry-unplugin │ │ + * └───────────────────► import "sentry-release-injector"; ─────────────────────┤ + * └─────────────────────────────────────────────────┘ │ + * │ + * │ + * sentry-release-injector │ + * ┌──────────────────────────────────┐ │ + * │ │ is resolved │ + * │ global.SENTRY_RELEASE = { ... } │ by unplugin │ + * │ // + a little more logic │<─────────────────────┘ + * │ │ (only once) + * └──────────────────────────────────┘ + * ``` + * + * Source maps upload: + * + * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `buildEnd` hook. + * TODO: elaborate a bit on how sourcemaps upload works + */ +const unplugin = createUnplugin((options, unpluginMetaContext) => { + function debugLog(...args: unknown[]) { if (options?.debugLogging) { // eslint-disable-next-line no-console - console.log("[Sentry-plugin]}", args); + console.log("[Sentry-plugin]", ...args); } } - const entrypoints = new Set(); - return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook /** - * In the sentry-unplugin, this hook is responsible for creating a Set containing the entrypoints as absolute paths. + * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is + * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. * * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. * @param options Additional information to use for making a resolving decision. - * @returns undefined. + * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. */ resolveId(id, importer, { isEntry }) { debugLog( `Called "resolveId": ${JSON.stringify({ id, importer: importer, options: { isEntry } })}` ); - // We only store the absolute path when we encounter an entrypoint - if (isEntry) { - // If we're looking at an entrypoint, which is the case here, `id` is either an absolute path or a relative path. - // If it's an absolute path we can just store it. If it's a relative path, we can assume the path got defined - // from a config file and when bundlers are run via a config file the process CWD is usually the one the config - // file is located in, so we can simply join CWD and id and we get the absolute path. - const entrypoint = path.normalize(path.isAbsolute(id) ? id : path.join(process.cwd(), id)); - entrypoints.add(entrypoint); - debugLog(`Added entrypoint: ${entrypoint}`); + if (id === "sentry-release-injector") { + return id; + } else { + return undefined; } + }, - return undefined; + /** + * Responsible for "virtually" loading the "sentry-release-injector" module. "Virtual" means that the module is not + * read from somewhere on disk but rather just returned via a string. + * + * @param id Always the absolute (fully resolved) path to the module. + * @returns The global injector code when we load the "sentry-release-injector" module. Otherwise returns `undefined`. + */ + load(id) { + debugLog(`Called "transform": ${JSON.stringify({ id })}`); + + if (id === "sentry-release-injector") { + return generateGlobalInjectorCode({ release: getReleaseName(options.release) }); + } else { + return undefined; + } }, /** - * Determines whether we want to transform a module. + * This hook determines whether we want to transform a module. In the unplugin we want to transform every file + * except for the release injector file * * @param id Always the absolute (fully resolved) path to the module. * @returns `true` or `false` depending on whether we want to transform the module. For the sentry-unplugin we only - * want to transform entrypoints. + * want to transform the release injector file. */ transformInclude(id) { - const shouldTransform = entrypoints.has(path.normalize(id)); - debugLog(`Called "transformInclude": ${JSON.stringify({ id })}`); - debugLog(`Will transform "${id}": ${String(shouldTransform)}`); - return shouldTransform; + // We want to transform (release injection) every module except for "sentry-release-injector". + return id !== "sentry-release-injector"; }, /** - * Responsible for injecting the global release value code. + * This hook is responsible for injecting the "sentry release injector" imoprt statement into each user file. * - * @param code Unprocessed code of the module. + * @param code Code of the file to transform. * @param id Always the absolute (fully resolved) path to the module. - * @returns Code and source map if we decide to inject code. `undefined` otherwise. + * @returns transformed code + source map */ transform(code, id) { - if (entrypoints.has(path.normalize(id))) { - const ms = new MagicString(code); - ms.prepend( - generateGlobalInjectorCode({ release: getReleaseName(options.release || "0.0.1") }) - ); + debugLog(`Called "transform": ${JSON.stringify({ code, id })}`); + + // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. + const ms = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻ + + // appending instead of prepending has less probability of mucking with user's + // source maps and import statements get to the top anyways + ms.append('import "sentry-release-injector";'); + + if (unpluginMetaContext.framework === "esbuild") { + // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. + // Currently just returning a string here seems to work and even correctly sourcemaps the code we generate. + // However, other bundlers need the `map` property + return ms.toString(); + } else { return { code: ms.toString(), map: ms.generateMap(), }; - } else { - // Don't transform - return undefined; } }, buildEnd() { - const sentryFacade = makeSentryFacade(getReleaseName(options.release || "0.0.1"), options); + const sentryFacade = makeSentryFacade(getReleaseName(options.release), options); //TODO: do stuff with the facade here lol debugLog("this is my facade:", sentryFacade); }, }; }); +/** + * Generates code for the "sentry-release-injector" which is responsible for setting the global `SENTRY_RELEASE` + * variable. + */ +function generateGlobalInjectorCode({ release }: { release: string }) { + // The code below is mostly ternary operators because it saves bundle size. + // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) + return ` + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:"${release}"};`; +} + // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryVitePlugin: (options: Options) => any = unplugin.vite; // eslint-disable-next-line @typescript-eslint/no-explicit-any From 9842ac68ca70786784edd7634858247d638dc4e3 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 23 Aug 2022 13:52:15 +0200 Subject: [PATCH 022/640] feat(sourcemaps): Add basic source maps upload functionality (#26) * make Sentry CLI calls * adds default options * add small node sample app to test sourcemaps upload --- packages/playground/build-webpack4.js | 7 +- packages/playground/package.json | 8 +- packages/playground/src/smallNodeApp.js | 24 +++++ .../playground/vite.config.smallNodeApp.js | 30 ++++++ packages/unplugin/rollup.config.js | 2 +- packages/unplugin/src/cli.ts | 2 +- packages/unplugin/src/facade.ts | 97 ++++++++++++------- packages/unplugin/src/index.ts | 37 ++++++- packages/unplugin/src/types.ts | 10 +- yarn.lock | 87 ++++++++++++++++- 10 files changed, 250 insertions(+), 54 deletions(-) create mode 100644 packages/playground/src/smallNodeApp.js create mode 100644 packages/playground/vite.config.smallNodeApp.js diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 3114a1f81ceb..a1adb0dfeec1 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -18,12 +18,7 @@ webpack4( }, plugins: [ sentryWebpackPlugin({ - org: "sentry-sdks", - project: "someProj", - authToken: "1234", - include: "*", - debugLogging: true, - debug: true, + ...placeHolderOptions, }), ], devtool: "source-map", diff --git a/packages/playground/package.json b/packages/playground/package.json index 88e5265e5a87..07713bb80df9 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -11,15 +11,19 @@ "build:vite": "vite build --config vite.config.js", "build:webpack4": "node build-webpack4.js", "build:webpack5": "node build-webpack5.js", - "build:esbuild": "node build-esbuild.js" + "build:esbuild": "node build-esbuild.js", + "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js" }, "dependencies": { "@sentry/unplugin": "*", + "@sentry/node": "^7.11.1", + "@sentry/integrations": "^7.11.1", "esbuild": "0.14.49", "rollup": "2.77.0", "vite": "3.0.0", "webpack4": "npm:webpack@4.46.0", "webpack": "5.74.0", - "npm-run-all": "4.1.5" + "npm-run-all": "4.1.5", + "@sentry/cli": "1.74.5" } } diff --git a/packages/playground/src/smallNodeApp.js b/packages/playground/src/smallNodeApp.js new file mode 100644 index 000000000000..88ee728f7014 --- /dev/null +++ b/packages/playground/src/smallNodeApp.js @@ -0,0 +1,24 @@ +const Sentry = require("@sentry/node"); +const { RewriteFrames } = require("@sentry/integrations"); + +Sentry.init({ + dsn: "https://8fa8ac58d94740a69f74934665aa0770@o1151230.ingest.sentry.io/6680403", + debug: true, + enabled: true, + sampleRate: 1.0, + integrations: [new RewriteFrames()], +}); + +const fibonacci = (n) => { + if (n === 3) { + Sentry.captureException(new Error("Test error")); + } + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); +}; + +console.log("Hi, I'm a small sample node app"); + +fibonacci(10); diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js new file mode 100644 index 000000000000..13e40f6b2096 --- /dev/null +++ b/packages/playground/vite.config.smallNodeApp.js @@ -0,0 +1,30 @@ +// @ts-check +import { sentryVitePlugin } from "@sentry/unplugin"; +import { defineConfig } from "vite"; +import * as path from "path"; + +export default defineConfig({ + build: { + outDir: "./out/vite-smallNodeApp", + lib: { + entry: path.resolve(__dirname, "./src/smallNodeApp.js"), + name: "ExampleBundle", + fileName: "index", + formats: ["cjs"], + }, + sourcemap: true, + minify: true, + }, + plugins: [ + sentryVitePlugin({ + authToken: process.env.SENTRY_AUTH_TOKEN, + org: "lms-testorg-9m", + project: "hackweek-node-sample-app", + debug: true, + debugLogging: true, + release: "0.0.1", + include: "out/vite-smallNodeApp", + cleanArtifacts: true, + }), + ], +}); diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js index 4b84dba10809..a8da0590bd0f 100644 --- a/packages/unplugin/rollup.config.js +++ b/packages/unplugin/rollup.config.js @@ -11,7 +11,7 @@ const extensions = [".js", ".ts"]; export default { input, // external: [...Object.keys(packageJson.dependencies)], - external: ["path", "unplugin"], + external: ["path", "unplugin", "@sentry/cli"], plugins: [ resolve({ extensions, preferBuiltins: true }), commonjs(), diff --git a/packages/unplugin/src/cli.ts b/packages/unplugin/src/cli.ts index e1a5123eeb20..153c147963da 100644 --- a/packages/unplugin/src/cli.ts +++ b/packages/unplugin/src/cli.ts @@ -4,7 +4,7 @@ import { Options } from "./types"; /** Creates a new Sentry CLI instance. */ export function makeSentryCli(options: Options) { //TODO: pass config file instead of null - const cli = new SentryCli(undefined, { + const cli = new SentryCli(options.configFile, { silent: false, //TODO read from options org: options.org, project: options.project, diff --git a/packages/unplugin/src/facade.ts b/packages/unplugin/src/facade.ts index 5308ff05b8ee..896a7b80dba4 100644 --- a/packages/unplugin/src/facade.ts +++ b/packages/unplugin/src/facade.ts @@ -1,7 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable no-console */ -//TODO: remove eslint rules - // Build a facade that exposes necessary sentry functionality // Idea: We start out with Sentry-CLI and replace the cli-commands one by one afterwards. // Goal: eventually replace everything sentry-cli does with "native" code here @@ -12,57 +8,90 @@ import { makeSentryCli } from "./cli"; import { Options } from "./types"; +import SentryCli from "@sentry/cli"; export type SentryFacade = { - createNewRelease: () => any; - cleanArtifacts: () => any; - uploadSourceMaps: () => any; - setCommits: () => any; - finalizeRelease: () => any; - addDeploy: () => any; + createNewRelease: () => Promise; + cleanArtifacts: () => Promise; + uploadSourceMaps: () => Promise; + setCommits: () => Promise; + finalizeRelease: () => Promise; + addDeploy: () => Promise; }; /** * Factory function that provides all necessary Sentry functionality for creating * a release on Sentry. This includes uploading source maps and finalizing the release */ -export function makeSentryFacade(version: string, options: Options): SentryFacade { - makeSentryCli(options); - //TODO: remove - // void cli.execute(["--version"], true); +export function makeSentryFacade(release: string, options: Options): SentryFacade { + const cli = makeSentryCli(options); return { - createNewRelease: () => createNewRelease(version), - cleanArtifacts: () => cleanArtifacts(), - uploadSourceMaps: () => uploadSourceMaps(version), - setCommits: () => setCommits(version), - finalizeRelease: () => finalizeRelease(version), - addDeploy: () => addDeploy(version), + createNewRelease: () => createNewRelease(cli, release), + cleanArtifacts: () => cleanArtifacts(cli, release, options), + uploadSourceMaps: () => uploadSourceMaps(cli, release, options), + setCommits: () => setCommits(/* release */), + finalizeRelease: () => finalizeRelease(cli, release, options), + addDeploy: () => addDeploy(/* release */), }; } -function createNewRelease(version: string) { - //TODO(must have): implement release creation logic here +async function createNewRelease(cli: SentryCli, release: string): Promise { + return cli.releases.new(release); } -function uploadSourceMaps(version: string) { - //TODO(must have): implement source maps upload logic here -} +async function uploadSourceMaps( + cli: SentryCli, + release: string, + options: Options +): Promise { + /** + * One or more paths to ignore during upload. Overrides entries in ignoreFile file. + */ + + const { + include, + // ignore, + // ignoreFile, + // rewrite, + // sourceMapReference, + // stripPrefix, + // stripCommonPrefix, + // validate, + // urlPrefix, + // urlSuffix, + // ext, + } = options; + + //TODO: sort out mess between Sentry CLI options and WebPack plugin options (ideally, + // we normalize everything before and don't diverge with options between our + // own CLI implementation and the plugin. + // I don't want to do too much for this right now b/c we'll eventually get rid of the CLI anyway + const uploadSourceMapsOptions = { include: typeof include === "string" ? [include] : include }; -function finalizeRelease(version: string) { - //TODO(must have): implement release finalization logic here + return cli.releases.uploadSourceMaps(release, uploadSourceMapsOptions); } -// TODO: Stuff we worry about later: +async function finalizeRelease(cli: SentryCli, release: string, options: Options): Promise { + if (options.finalize) { + return cli.releases.finalize(release); + } + return Promise.resolve("nothing to do here"); +} -function cleanArtifacts() { - // NOOP for now +async function cleanArtifacts(cli: SentryCli, release: string, options: Options): Promise { + if (options.cleanArtifacts) { + return cli.releases.execute(["releases", "files", release, "delete", "--all"], true); + } + return Promise.resolve("nothing to do here"); } -function setCommits(version: string) { - // NOOP for now +// TODO: Stuff we worry about later: + +async function setCommits(/* version: string */): Promise { + return Promise.resolve("Noop"); } -function addDeploy(version: string) { - // NOOP for now +async function addDeploy(/* version: string */): Promise { + return Promise.resolve("Noop"); } diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index f521e3139f51..95e8237db982 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -4,6 +4,15 @@ import { getReleaseName } from "./getReleaseName"; import { Options } from "./types"; import { makeSentryFacade } from "./facade"; +const defaultOptions: Omit = { + //TODO: add default options here as we port over options from the webpack plugin + // validate: false + configFile: "~/.sentryclirc", + debug: false, + cleanArtifacts: false, + finalize: true, +}; + /** * The sentry-unplugin concerns itself with two things: * - Release injection @@ -67,7 +76,9 @@ import { makeSentryFacade } from "./facade"; * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `buildEnd` hook. * TODO: elaborate a bit on how sourcemaps upload works */ -const unplugin = createUnplugin((options, unpluginMetaContext) => { +const unplugin = createUnplugin((originalOptions, unpluginMetaContext) => { + const options = { ...defaultOptions, ...originalOptions }; + function debugLog(...args: unknown[]) { if (options?.debugLogging) { // eslint-disable-next-line no-console @@ -162,9 +173,27 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { } }, buildEnd() { - const sentryFacade = makeSentryFacade(getReleaseName(options.release), options); - //TODO: do stuff with the facade here lol - debugLog("this is my facade:", sentryFacade); + const release = getReleaseName(options.release); + //TODO: + // 1. validate options to see if we get a valid include property, release name, etc. + // 2. normalize the include property: Users can pass string | string [] | IncludeEntry[]. + // That's good for them but a hassle for us. Let's try to normalize this into one data type + // (I vote IncludeEntry[]) and continue with that down the line + + const sentryFacade = makeSentryFacade(release, options); + + sentryFacade + .createNewRelease() + .then(() => sentryFacade.cleanArtifacts()) + .then(() => sentryFacade.uploadSourceMaps()) + .then(() => sentryFacade.setCommits()) // this is a noop for now + .then(() => sentryFacade.finalizeRelease()) + .then(() => sentryFacade.addDeploy()) // this is a noop for now + .catch((e) => { + //TODO: invoke error handler here + // https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L540-L547 + debugLog(e); + }); }, }; }); diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index d4041e2887ca..99ba7d6029be 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -1,4 +1,5 @@ //TODO: JsDoc for all properties +//TODO: compare types w/ webpack plugin (and sentry-cli?) export type Options = { debugLogging?: boolean; @@ -7,16 +8,16 @@ export type Options = { project?: string; authToken?: string; url?: string; - // configFile: string + configFile?: string; /* --- release properties: */ release?: string; // dist: string, // entries: string[] | RegExp | ((key: string) => boolean); + finalize?: boolean; /* --- source maps properties: */ - //TODO: make this required - include?: string; //| string[] | IncludeEntry[]; + include: string; // | Array; // ignoreFile: string // ignore: string | string[] // ext: string[] @@ -32,11 +33,10 @@ export type Options = { // vcsRemote: string, // customHeader: string, - // finalize?: boolean, // dryRun?: boolean, debug?: boolean; // silent?: boolean, - // cleanArtifacts?: boolean, + cleanArtifacts?: boolean; // errorHandler?: (err: Error, invokeErr: function(): void, compilation: unknown) => void, // setCommits?: { // repo?: string, diff --git a/yarn.lock b/yarn.lock index 0927cbd45da2..2e7ec4d6043f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2073,6 +2073,62 @@ proxy-from-env "^1.1.0" which "^2.0.2" +"@sentry/core@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.11.1.tgz#d68e796f3b6428aefd6086a1db00118df7a9a9e4" + integrity sha512-kaDSZ6VNuO4ZZdqUOOX6XM6x+kjo2bMnDQ3IJG51FPvVjr8lXYhXj1Ccxcot3pBYAIWPPby2+vNDOXllmXqoBA== + dependencies: + "@sentry/hub" "7.11.1" + "@sentry/types" "7.11.1" + "@sentry/utils" "7.11.1" + tslib "^1.9.3" + +"@sentry/hub@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.11.1.tgz#1749b2b102ea1892ff388d65d66d3b402b393958" + integrity sha512-M6ClgdXdptS0lUBKB5KpXXe2qMQhsoiEN2pEGRI6+auqhfHCUQB1ZXsfjiOYexKC9fwx7TyFyZ9Jcaf2DTxEhw== + dependencies: + "@sentry/types" "7.11.1" + "@sentry/utils" "7.11.1" + tslib "^1.9.3" + +"@sentry/integrations@^7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.11.1.tgz#fa7b648fd479b9b8b8558f5b23c8c51a066737f5" + integrity sha512-G4aw9X2WdRGwLk/2pAj+5LuZnLM4u1GG3o8bOWNASR9E7IiQQ9ERYlnfW7jas+08B1Q61WLwJPXZhJxvQfxLQw== + dependencies: + "@sentry/types" "7.11.1" + "@sentry/utils" "7.11.1" + localforage "^1.8.1" + tslib "^1.9.3" + +"@sentry/node@^7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.11.1.tgz#97fd26de26e8203a3c34e26b38f3c2a5ba46828b" + integrity sha512-EAAHou/eHSzwRK0Z5qnQiwXNbkpnjWjloaG979gftA+MS/kM0AxQHdOrSJQbOEaqRf3F7/eC4Hj+1tfglAuaLQ== + dependencies: + "@sentry/core" "7.11.1" + "@sentry/hub" "7.11.1" + "@sentry/types" "7.11.1" + "@sentry/utils" "7.11.1" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/types@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.11.1.tgz#06e2827f6ba37159c33644208a0453b86d25e232" + integrity sha512-gIEhOPxC2cjrxQ0+K2SFJ1P6e/an5osSxVc9OOtekN28eHtVsXFCLB8XVWeNQnS7N2VkrVrkqORMBz1kvIcvVQ== + +"@sentry/utils@7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.11.1.tgz#1635c5b223369d9428bc83c9b8908c9c3287ee10" + integrity sha512-tRVXNT5O9ilkV31pyHeTqA1PcPQfMV/2OR6yUYM4ah+QVISovC0f0ybhByuH5nYg6x/Gsnx1o7pc8L1GE3+O7A== + dependencies: + "@sentry/types" "7.11.1" + tslib "^1.9.3" + "@sinclair/typebox@^0.23.3": version "0.23.5" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" @@ -3929,6 +3985,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -5799,6 +5860,11 @@ ignore@^5.1.4, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -6902,6 +6968,13 @@ libnpmpublish@^1.1.1: semver "^5.5.1" ssri "^6.0.1" +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== + dependencies: + immediate "~3.0.5" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -6947,6 +7020,13 @@ loader-utils@^1.2.3: emojis-list "^3.0.0" json5 "^1.0.1" +localforage@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" + integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== + dependencies: + lie "3.1.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -7064,6 +7144,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + macos-release@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" @@ -9889,7 +9974,7 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== From 148638028b488c7eae0b8e2ea9936757ce259972 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 Aug 2022 15:08:30 +0200 Subject: [PATCH 023/640] test(integration-tests): Add integration test scaffolding and release injection integration test (#25) Co-authored-by: Lukas Stracke --- .github/workflows/checks.yml | 9 +- packages/integration-tests/.eslintrc.js | 20 + packages/integration-tests/.gitignore | 1 + packages/integration-tests/README.md | 5 + .../basic-release-injection.test.ts | 38 + .../input/entrypoint.js | 2 + .../fixtures/basic-release-injection/setup.ts | 7 + packages/integration-tests/jest.config.js | 6 + packages/integration-tests/package.json | 29 + .../scripts/run-fixture-setups.ts | 10 + packages/integration-tests/tsconfig.json | 9 + .../utils/create-cjs-bundles.ts | 95 + packages/playground/build-esbuild.js | 2 +- packages/playground/build-webpack4.js | 6 +- packages/unplugin/test/example.test.ts | 5 - yarn.lock | 2712 +++++++++-------- 16 files changed, 1683 insertions(+), 1273 deletions(-) create mode 100644 packages/integration-tests/.eslintrc.js create mode 100644 packages/integration-tests/.gitignore create mode 100644 packages/integration-tests/README.md create mode 100644 packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts create mode 100644 packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js create mode 100644 packages/integration-tests/fixtures/basic-release-injection/setup.ts create mode 100644 packages/integration-tests/jest.config.js create mode 100644 packages/integration-tests/package.json create mode 100644 packages/integration-tests/scripts/run-fixture-setups.ts create mode 100644 packages/integration-tests/tsconfig.json create mode 100644 packages/integration-tests/utils/create-cjs-bundles.ts delete mode 100644 packages/unplugin/test/example.test.ts diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index f432b6d577f6..eafad2228043 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -7,7 +7,6 @@ on: env: DEFAULT_NODE_VERSION: "16.15.1" - SENTRY_RELEASE: "default_release_name" jobs: build: @@ -22,6 +21,7 @@ jobs: - run: yarn build type-check: + needs: build name: Typing check runs-on: ubuntu-latest steps: @@ -30,6 +30,7 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile + - run: yarn build - run: yarn check:types formatting-check: @@ -44,6 +45,7 @@ jobs: - run: yarn check:formatting test: + needs: build name: Tests runs-on: ubuntu-latest steps: @@ -52,9 +54,11 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - - run: yarn check:formatting + - run: yarn build + - run: yarn test lint: + needs: build name: Linter check runs-on: ubuntu-latest steps: @@ -63,4 +67,5 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile + - run: yarn build - run: yarn lint diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js new file mode 100644 index 000000000000..3e5522099d0e --- /dev/null +++ b/packages/integration-tests/.eslintrc.js @@ -0,0 +1,20 @@ +const jestPackageJson = require("jest/package.json"); + +/** @type {import('eslint').ESLint.Options} */ +module.exports = { + root: true, + extends: ["local/jest", "local/base"], + ignorePatterns: [".eslintrc.js", "fixtures/*/out", "jest.config.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/integration-tests/.gitignore b/packages/integration-tests/.gitignore new file mode 100644 index 000000000000..608c2472c35a --- /dev/null +++ b/packages/integration-tests/.gitignore @@ -0,0 +1 @@ +fixtures/*/out/** diff --git a/packages/integration-tests/README.md b/packages/integration-tests/README.md new file mode 100644 index 000000000000..aedffc3ffdbb --- /dev/null +++ b/packages/integration-tests/README.md @@ -0,0 +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. +The `*.test.ts` files can then use anything that is generated via `setup.ts`. 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 new file mode 100644 index 000000000000..7d889cece802 --- /dev/null +++ b/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts @@ -0,0 +1,38 @@ +import childProcess from "child_process"; +import path from "path"; + +/** + * Runs a node file in a seprate process. + * + * @param bundlePath Path of node file to run + * @returns Stdout of the process + */ +function checkBundle(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput).toBe("I AM A RELEASE!"); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/esbuild/index.js")); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/rollup/index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/vite/index.js")); +}); + +test("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")); +}); diff --git a/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js b/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js new file mode 100644 index 000000000000..c938f917787e --- /dev/null +++ b/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write(global.SENTRY_RELEASE.id); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts new file mode 100644 index 000000000000..4dda90b407ab --- /dev/null +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -0,0 +1,7 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPointPath = path.resolve(__dirname, "./input/entrypoint.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles(entryPointPath, outputDir, { release: "I AM A RELEASE!", include: "" }); diff --git a/packages/integration-tests/jest.config.js b/packages/integration-tests/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/integration-tests/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json new file mode 100644 index 000000000000..5d9878d4d863 --- /dev/null +++ b/packages/integration-tests/package.json @@ -0,0 +1,29 @@ +{ + "name": "integration-tests", + "version": "1.0.0", + "private": true, + "scripts": { + "test": "run-s test:setup test:jest", + "test:setup": "ts-node scripts/run-fixture-setups.ts", + "test:jest": "jest", + "lint": "eslint .", + "check:types": "tsc --project ./tsconfig.json --noEmit" + }, + "dependencies": { + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", + "@sentry/unplugin": "*", + "@types/webpack4": "npm:@types/webpack@4.41.32", + "esbuild": "0.14.49", + "eslint-config-local": "*", + "jest": "^28.1.3", + "npm-run-all": "4.1.5", + "rollup": "2.77.0", + "sentry-unplugin-tsconfigs": "*", + "eslint": "^8.18.0", + "ts-node": "^10.9.1", + "vite": "3.0.0", + "webpack": "5.74.0", + "webpack4": "npm:webpack@4.46.0" + } +} diff --git a/packages/integration-tests/scripts/run-fixture-setups.ts b/packages/integration-tests/scripts/run-fixture-setups.ts new file mode 100644 index 000000000000..7ee1409fbec4 --- /dev/null +++ b/packages/integration-tests/scripts/run-fixture-setups.ts @@ -0,0 +1,10 @@ +import fs from "fs"; +import path from "path"; + +const fixturePaths = fs + .readdirSync(path.join(__dirname, "../fixtures")) + .map((fixtureDir) => path.join(__dirname, "../fixtures", fixtureDir)); + +fixturePaths.forEach((fixturePath) => { + require(path.join(fixturePath, "setup.ts")); +}); diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json new file mode 100644 index 000000000000..4eedee320803 --- /dev/null +++ b/packages/integration-tests/tsconfig.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "sentry-unplugin-tsconfigs/base-config.json", + "include": ["./**/*"], + "compilerOptions": { + "esModuleInterop": true, + "types": ["node", "jest"] + } +} diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts new file mode 100644 index 000000000000..7057c3899809 --- /dev/null +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -0,0 +1,95 @@ +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 "webpack"; +import * as esbuild from "esbuild"; +import { + sentryEsbuildPlugin, + sentryRollupPlugin, + sentryVitePlugin, + sentryWebpackPlugin, + Options, +} from "@sentry/unplugin"; + +export function createCjsBundles( + entryPointPath: string, + outFolder: string, + sentryUnpluginOptions: Options +): void { + void vite.build({ + clearScreen: false, + build: { + outDir: path.join(outFolder, "vite"), + lib: { + entry: entryPointPath, + fileName: "index", + formats: ["cjs"], + }, + }, + plugins: [sentryVitePlugin(sentryUnpluginOptions)], + }); + + void rollup + .rollup({ + input: entryPointPath, + plugins: [sentryRollupPlugin(sentryUnpluginOptions)], + }) + .then((bundle) => + bundle.write({ + file: path.join(outFolder, "rollup/index.js"), + format: "cjs", + exports: "named", + }) + ); + + void esbuild.build({ + entryPoints: [entryPointPath], + outfile: path.join(outFolder, "esbuild/index.js"), + plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], + minify: true, + bundle: true, + format: "cjs", + }); + + webpack4( + { + mode: "production", + entry: entryPointPath, + cache: false, + output: { + path: path.join(outFolder, "webpack4"), + filename: "index.js", + libraryTarget: "commonjs", + }, + target: "node", // needed for webpack 4 so we can access node api + plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + }, + (err) => { + if (err) { + throw err; + } + } + ); + + webpack5( + { + cache: false, + entry: entryPointPath, + output: { + filename: "index.js", + path: path.join(outFolder, "webpack5"), + library: { + type: "commonjs", + }, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + }, + (err) => { + if (err) { + throw err; + } + } + ); +} diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 9259fe59bbf4..7aa5bf99569a 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -13,5 +13,5 @@ build({ minify: true, bundle: true, format: "cjs", - sourcemap: true, // currently we break source maps :(, we need to fix this upstream in unplugin + sourcemap: true, }); diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index a1adb0dfeec1..50b00612be0a 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -16,11 +16,7 @@ webpack4( library: "ExampleBundle", libraryTarget: "commonjs", }, - plugins: [ - sentryWebpackPlugin({ - ...placeHolderOptions, - }), - ], + plugins: [sentryWebpackPlugin({ ...placeHolderOptions })], devtool: "source-map", }, (err) => { diff --git a/packages/unplugin/test/example.test.ts b/packages/unplugin/test/example.test.ts deleted file mode 100644 index 9d6b3cdb2a09..000000000000 --- a/packages/unplugin/test/example.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { sentryRollupPlugin } from "../src/index"; - -test("example", () => { - expect(sentryRollupPlugin).toBeDefined(); -}); diff --git a/yarn.lock b/yarn.lock index 2e7ec4d6043f..075ab4bd95d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,19 +10,19 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" - integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== +"@babel/compat-data@^7.17.10", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" + integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== -"@babel/core@7.18.5", "@babel/core@^7.11.6", "@babel/core@^7.12.3": +"@babel/core@7.18.5": version "7.18.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== @@ -43,369 +43,395 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" + integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.13" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.13" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.13" + "@babel/types" "^7.18.13" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.13", "@babel/generator@^7.18.2", "@babel/generator@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" + integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== + dependencies: + "@babel/types" "^7.18.13" + "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" - integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" + integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" + integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.11" + "@babel/types" "^7.18.10" + +"@babel/helpers@^7.18.2", "@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" - integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.5": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" - integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" - integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" - integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" - integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" - integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" - integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" - integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" - integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== +"@babel/plugin-proposal-optional-chaining@^7.17.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" - integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" - integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -450,11 +476,11 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" - integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -526,273 +552,273 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.17.12", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" - integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== +"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" - integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" - integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" - integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-classes@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" - integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" - integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" - integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" + integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" - integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-for-of@^7.18.1": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" - integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" - integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" - integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" - integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== - dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-identifier" "^7.16.7" + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" - integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" - integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-new-target@^7.17.12": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" - integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" - integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== +"@babel/plugin-transform-parameters@^7.17.12", "@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" - integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" - integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" - integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" - integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" - integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" - integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== + version "7.18.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz#712e9a71b9e00fde9f8c0238e0cceee86ab2f8fd" + integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-typescript" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-typescript" "^7.18.6" "@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@7.18.2": version "7.18.2" @@ -896,43 +922,44 @@ "@babel/plugin-transform-typescript" "^7.17.12" "@babel/runtime@^7.8.4": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" - integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" - integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.5" - "@babel/types" "^7.18.4" +"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.5", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" + integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.13" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.13" + "@babel/types" "^7.18.13" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" + integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -940,6 +967,18 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@esbuild/linux-loong64@0.14.54": + version "0.14.54" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" + integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== + "@eslint/eslintrc@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" @@ -955,15 +994,20 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" @@ -985,49 +1029,49 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" - integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + jest-message-util "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" -"@jest/core@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" - integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== - dependencies: - "@jest/console" "^28.1.1" - "@jest/reporters" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" - "@jest/types" "^28.1.1" +"@jest/core@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@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.0.2" - jest-config "^28.1.1" - jest-haste-map "^28.1.1" - jest-message-util "^28.1.1" + 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.1" - jest-resolve-dependencies "^28.1.1" - jest-runner "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" - jest-util "^28.1.1" - jest-validate "^28.1.1" - jest-watcher "^28.1.1" + 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.1" + pretty-format "^28.1.3" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" @@ -1039,63 +1083,63 @@ dependencies: "@jest/types" "^27.5.1" -"@jest/environment@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" - integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== +"@jest/environment@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" + integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== dependencies: - "@jest/fake-timers" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.1" + jest-mock "^28.1.3" -"@jest/expect-utils@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" - integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@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.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" - integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== +"@jest/expect@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" + integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== dependencies: - expect "^28.1.1" - jest-snapshot "^28.1.1" + expect "^28.1.3" + jest-snapshot "^28.1.3" -"@jest/fake-timers@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" - integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== +"@jest/fake-timers@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" + integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== dependencies: - "@jest/types" "^28.1.1" - "@sinonjs/fake-timers" "^9.1.1" + "@jest/types" "^28.1.3" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.1.1" - jest-mock "^28.1.1" - jest-util "^28.1.1" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-util "^28.1.3" -"@jest/globals@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" - integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== +"@jest/globals@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" + integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/types" "^28.1.3" -"@jest/reporters@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" - integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== +"@jest/reporters@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" + integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" - "@jest/types" "^28.1.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@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" @@ -1107,67 +1151,67 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^28.1.1" - jest-util "^28.1.1" - jest-worker "^28.1.1" + 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.0" + v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" - integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: - "@sinclair/typebox" "^0.23.3" + "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" - integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== +"@jest/source-map@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" - integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: - "@jest/console" "^28.1.1" - "@jest/types" "^28.1.1" + "@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@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" - integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== +"@jest/test-sequencer@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" + integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== dependencies: - "@jest/test-result" "^28.1.1" + "@jest/test-result" "^28.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" + jest-haste-map "^28.1.3" slash "^3.0.0" -"@jest/transform@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" - integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== +"@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@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.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@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.1" + jest-haste-map "^28.1.3" jest-regex-util "^28.0.2" - jest-util "^28.1.1" + jest-util "^28.1.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1184,12 +1228,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" - integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: - "@jest/schemas" "^28.0.2" + "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1204,24 +1248,24 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/set-array" "^1.0.0" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" @@ -1232,14 +1276,22 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1915,10 +1967,10 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.4.0": - version "12.4.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.4.0.tgz#fd8bf5db72bd566c5ba2cb76754512a9ebe66e71" - integrity sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA== +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== "@octokit/plugin-enterprise-rest@^2.1.1": version "2.2.2" @@ -2005,11 +2057,11 @@ "@types/node" ">= 8" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.37.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.37.1.tgz#600a9c9643f696ba68f229c8d71abbc1040ad6a6" - integrity sha512-Q1hXSP2YumHkDdD+V4wFKr7vJ9+8tjocixrTSb75JzJ4GpjSyu5B4kpgrXxO6GOs4nOmVyRwRgS4/RO/Lf9oEA== + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - "@octokit/openapi-types" "^12.4.0" + "@octokit/openapi-types" "^12.11.0" "@rollup/plugin-babel@5.3.1": version "5.3.1" @@ -2129,10 +2181,10 @@ "@sentry/types" "7.11.1" tslib "^1.9.3" -"@sinclair/typebox@^0.23.3": - version "0.23.5" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" - integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== +"@sinclair/typebox@^0.24.1": + version "0.24.28" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.28.tgz#15aa0b416f82c268b1573ab653e4413c965fe794" + integrity sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -2141,104 +2193,146 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^9.1.1": +"@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" -"@swc/core-android-arm-eabi@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.205.tgz#d8ca076cbfbe92f17297de0e6b2754a7ae3a8e2f" - integrity sha512-HfiuVA1JDHMSRQ8nE1DcemUgZ1PKaPwit4i7q3xin0NVbVHY1xkJyQFuLVh3VxTvGKKkF3hi8GJMVQgOXWL6kg== - -"@swc/core-android-arm64@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.205.tgz#cb822dad076b1c30b990a2037147ae42f66bf98e" - integrity sha512-sRGZBV2dOnmh8gWWFo9HVOHdKa33zIsF8/8oYEGtq+2/s96UlAKltO2AA7HH9RaO/fT1tzBZStp+fEMUhDk/FA== - -"@swc/core-darwin-arm64@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.205.tgz#1a3340e21459cdeea2224057ddf031a330782424" - integrity sha512-JwVDfKS7vp7zzOQXWNwwcF41h4r3DWEpK6DQjz18WJyS1VVOcpVQGyuE7kSPjcnG01ZxBL9JPwwT353i/8IwDg== - -"@swc/core-darwin-x64@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.205.tgz#7a6552acd42482ecb84b1c90c0defad408ac81cc" - integrity sha512-malz2I+w6xFF1QyTmPGt0Y0NEMbUcrvfr5gUfZDGjxMhPPlS7k6fXucuZxVr9VVaM+JGq1SidVODmZ84jb1qHg== - -"@swc/core-freebsd-x64@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.205.tgz#d58f48d5de9a2babd609802338bd8e8934fec39a" - integrity sha512-/nZrG1z0T7h97AsOb/wOtYlnh4WEuNppv3XKQIMPj32YNQdMBVgpybVTVRIs1GQGZMd1/7jAy5BVQcwQjUbrLg== - -"@swc/core-linux-arm-gnueabihf@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.205.tgz#33f7f639ab64dc8c9229a2e63fc025db50905345" - integrity sha512-mTA3vETMdBmpecUyI9waZYsp7FABhew4e81psspmFpDyfty0SLISWZDnvPAn0pSnb2fWhzKwDC5kdXHKUmLJuA== - -"@swc/core-linux-arm64-gnu@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.205.tgz#ab3aef46cb3792368cfdb1ff1fa9af4df0664e17" - integrity sha512-qGzFGryeQE+O5SFK7Nn2ESqCEnv00rnzhf11WZF9V71EZ15amIhmbcwHqvFpoRSDw8hZnqoGqfPRfoJbouptnA== - -"@swc/core-linux-arm64-musl@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.205.tgz#20e79f0a3cfbe0d803ad256fd422ee17b52e3464" - integrity sha512-uLJoX9L/4Xg3sLMjAbIhzbTe5gD/MBA8VETBeEkLtgb7a0ys1kvn9xQ6qLw6A71amEPlI+VABnoTRdUEaBSV9Q== - -"@swc/core-linux-x64-gnu@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.205.tgz#7e698ca21854a038f973ed5cb2d195ae00b0707a" - integrity sha512-gQsjcYlkWKP1kceQIsoHGrOrG7ygW3ojNsSnYoZ5DG5PipRA4eeUfO9YIfrmoa29LiVNjmRPfUJa8O1UHDG5ew== - -"@swc/core-linux-x64-musl@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.205.tgz#e9aeb2bdf4aad466d1250d67aade0984cd6c4812" - integrity sha512-LR5ukqBltQc++2eX3qEj/H8KtOt0V3CmtgXNOiNCUxvPDT8mYz/8MJhYOrofonND0RKfXyyPW7dRxg62ceTLSQ== - -"@swc/core-win32-arm64-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.205.tgz#c46bf0adc703d199fd1eeef4a811913cb0e74164" - integrity sha512-NjcLWm4mOy78LAEt7pqFl+SLcCyqnSlUP729XRd1uRvKwt1Cwch5SQRdoaFqwf1DaEQy4H4iuGPynkfarlb1kQ== - -"@swc/core-win32-ia32-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.205.tgz#f1aa4a72670c6367282e39f81052d51287b23497" - integrity sha512-+6byrRxIXgZ0zmLL6ZeX1HBBrAqvCy8MR5Yz0SO26jR8OPZXJCgZXL9BTsZO+YEG4f32ZOlZh3nnHCl6Dcb4GA== - -"@swc/core-win32-x64-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.205.tgz#626b979203510c43c7f5a8014881a2c08426bf33" - integrity sha512-RRSkyAol0c7sU9gejtrpF8TLmdYdBjLutcmQHtLKbWTm74ZLidZpF28G0J2tD7HNmzQnMpLzyoT1jW9JgLwzVg== +"@swc/core-android-arm-eabi@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.242.tgz#3ae5d8b178a0835ae0878094175d943f2d894bec" + integrity sha512-Ukx1LQAUbPRJdREF9FMgeUwIuRtWJNpPyPF7BWl4hIkw024q75mohMbp3S2wgrF1TsSsEGW37q0DkFxPJ2uJbQ== + dependencies: + "@swc/wasm" "1.2.122" + +"@swc/core-android-arm64@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.242.tgz#2c1885c08dd5720991a6fa7585d39a93df98e773" + integrity sha512-4E/y+reQWHVCV/0Sn174gsLQyqIKlBWKnwUfPa7MA53VBacp8HTYoPY+iwKPrngsH16gEOC7iByiTJHR/4kirg== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-darwin-arm64@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.242.tgz#1b8b16a132cc354ea3b31d26c46908dae2fe41ed" + integrity sha512-nIqtjxdbz0Fe0gFZwCygBwUrGEXj3c4mjHjNeveidVX/6U0HE/EAj+0iXuw8zjJLof8HCMnxq8CzzvhA6gd3ZA== + +"@swc/core-darwin-x64@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.242.tgz#cde041d520fcfb0865f49b395bb2c76af8ec3f3a" + integrity sha512-iZKzI76vYYHD/t8wkQ/uIVuIyxN1eift2nLvUU7/jtmoa6b8DH/45ykB/C3vkuvYVNMiGA8HIjJIzw7RJz5XIQ== + +"@swc/core-freebsd-x64@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.242.tgz#a95827311424dd86190fdb73bec996d24188c6d3" + integrity sha512-6JNi5/6JDvcTQzBkndELiIlJufWowoI2ZEmXlGIJpiGoj28PEDPwy5LO7KkXa4DnY5L4CSh15idFO/DxV0rGAQ== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-linux-arm-gnueabihf@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.242.tgz#1b0bd0ba96c59a9c4b87668521ce8ba55c8c7f55" + integrity sha512-NGL9A3cv8PCbeQ1SvPfApNlHvFbf7Jn305sCAy3iZYsmwm+EU4JNlOWXGgRioP7ABhz2kwLhfYs8UMYCDIVq8Q== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-linux-arm64-gnu@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.242.tgz#f97c1b655779788fff9a035f6a80180b1545423b" + integrity sha512-OJ0kAjgeoRDJlo6Rvd2GnJ92tiIndmC/8krD9gfnQEyAgpR+jajOxbKhyBN/QZPyD2q/TG2LPqxhGYZ79q5mWQ== + +"@swc/core-linux-arm64-musl@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.242.tgz#ad77a5c7fc79d42d64970ca1886eb9d626388ca2" + integrity sha512-VqnHSYb1a6xW5ARUx9kq88s1S3XvCw9TvQXsPcN4e5qsugrLzxWLnqIM6VnWW06prxN7pYlWo9QtrtdPfbppmA== + +"@swc/core-linux-x64-gnu@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.242.tgz#4c7f2c483876a4b0755a263133c25413fa69df88" + integrity sha512-DDqVJh0KpgHb+E0563+6PqAYDzYTSwgZXF/fOULwlHC7Yt50a9+ecisTFSHkWc74zPMtq27kMTuZyyLeD3gu7A== + +"@swc/core-linux-x64-musl@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.242.tgz#48f8769094cfde9d78dc32936666575470583b2a" + integrity sha512-P+9sWgd5eZ6kS1WxOJbCeSgWY7mLP742PhwAzpFrJqCq5nx8Q4FYo4L5mOVNAheYDWldsxR1nKXR1RIMK3S2Lw== + +"@swc/core-win32-arm64-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.242.tgz#e421a5a7a49d1effa71a22fea22a65256b447108" + integrity sha512-W5cevrf5aDJzdE++XeQi1BJKuigC3dlG2NaBUyt3inmep7nli6eoBJdj9Vyg5EPfFOdeI6wQiwOpFvQRoAle8Q== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-win32-ia32-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.242.tgz#1b836f5872195fef506a094eae7734b5fd28a1b5" + integrity sha512-XRQcgChvY9333hBre9F53EbiVfVu5MkSH4+XIiNMK14Jg8EqQ1nOcd+jvv2sEdEVbufCmBbWNjofUrCoQey60w== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-win32-x64-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.242.tgz#61a6c7d4da1dec1188b912785bd8e0bb16ff8440" + integrity sha512-Cz1hZOxcfEVgzEr2sYIW9MxT+wEEbYz7aB87ZDmTUpr7vuvBiLMwsYItm8qG847wZeJfa+J7CC+tty5GJOBOOQ== "@swc/core@^1.2.205": - version "1.2.205" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.205.tgz#b786644c1752bc9206bcd30b05a4f365ef60eed3" - integrity sha512-evq0/tFyYdYgOhKb//+G93fxe9zwFxtme7NL7wSiEF8+4/ON4Y5AI9eHLoqddXqs3W8Y0HQi+rJmlrkCibrseA== + version "1.2.242" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.242.tgz#4392ef0012fe9667440c6eb5a419b6cc86a0a786" + integrity sha512-JQqSYVoLtHtztCNBgeCKyxmqw6AksHsC4WvVSSErLXJx6JXKaog1HFVuzd6rwx2lLCV+zBnbqJFug5OX0g2knw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.205" - "@swc/core-android-arm64" "1.2.205" - "@swc/core-darwin-arm64" "1.2.205" - "@swc/core-darwin-x64" "1.2.205" - "@swc/core-freebsd-x64" "1.2.205" - "@swc/core-linux-arm-gnueabihf" "1.2.205" - "@swc/core-linux-arm64-gnu" "1.2.205" - "@swc/core-linux-arm64-musl" "1.2.205" - "@swc/core-linux-x64-gnu" "1.2.205" - "@swc/core-linux-x64-musl" "1.2.205" - "@swc/core-win32-arm64-msvc" "1.2.205" - "@swc/core-win32-ia32-msvc" "1.2.205" - "@swc/core-win32-x64-msvc" "1.2.205" + "@swc/core-android-arm-eabi" "1.2.242" + "@swc/core-android-arm64" "1.2.242" + "@swc/core-darwin-arm64" "1.2.242" + "@swc/core-darwin-x64" "1.2.242" + "@swc/core-freebsd-x64" "1.2.242" + "@swc/core-linux-arm-gnueabihf" "1.2.242" + "@swc/core-linux-arm64-gnu" "1.2.242" + "@swc/core-linux-arm64-musl" "1.2.242" + "@swc/core-linux-x64-gnu" "1.2.242" + "@swc/core-linux-x64-musl" "1.2.242" + "@swc/core-win32-arm64-msvc" "1.2.242" + "@swc/core-win32-ia32-msvc" "1.2.242" + "@swc/core-win32-x64-msvc" "1.2.242" "@swc/jest@^0.2.21": - version "0.2.21" - resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.21.tgz#e8c4e234016a914f4cfbb7d75844860a250c1d1c" - integrity sha512-/+NcExiZbxXANNhNPnIdFuGq62CeumulLS1bngwqIXd8H7d96LFUfrYzdt8tlTwLMel8tFtQ5aRjzVkyOTyPDw== + version "0.2.22" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" + integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== dependencies: "@jest/create-cache-key-function" "^27.4.2" +"@swc/wasm@1.2.122": + version "1.2.122" + resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" + integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== + +"@swc/wasm@1.2.130": + version "1.2.130" + resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" + integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -2266,9 +2360,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" - integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + version "7.18.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.0.tgz#8134fd78cb39567465be65b9fdc16d378095f41f" + integrity sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw== dependencies: "@babel/types" "^7.3.0" @@ -2281,17 +2375,17 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.5" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" - integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== + version "8.4.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" + integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "0.0.52" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" - integrity sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ== + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": version "0.0.39" @@ -2330,11 +2424,11 @@ "@types/istanbul-lib-report" "*" "@types/jest@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.3.tgz#52f3f3e50ce59191ff5fbb1084896cc0cf30c9ce" - integrity sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw== + version "28.1.7" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.7.tgz#a680c5d05b69634c2d54a63cb106d7fb1adaba16" + integrity sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA== dependencies: - jest-matcher-utils "^28.0.0" + expect "^28.0.0" pretty-format "^28.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": @@ -2352,15 +2446,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@>= 8": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== - -"@types/node@^18.6.3": - version "18.6.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" - integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== +"@types/node@*", "@types/node@>= 8", "@types/node@^18.6.3": + version "18.7.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.11.tgz#486e72cfccde88da24e1f23ff1b7d8bfb64e6250" + integrity sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2368,9 +2457,9 @@ integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/prettier@^2.1.5": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + version "2.7.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" + integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== "@types/resolve@1.17.1": version "1.17.1" @@ -2379,11 +2468,49 @@ dependencies: "@types/node" "*" +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/tapable@^1": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + +"@types/uglify-js@*": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.0.tgz#95271e7abe0bf7094c60284f76ee43232aef43b9" + integrity sha512-3HO6rm0y+/cqvOyA8xcYLweF0TKXlAxmQASjbOi49Co51A1N4nR4bEwBgRoD9kNM+rqFGArjKr654SLp2CoGmQ== + dependencies: + source-map "^0.6.1" + +"@types/webpack-sources@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack4@npm:@types/webpack@4.41.32": + version "4.41.32" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" + integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -2397,20 +2524,20 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + version "17.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.11.tgz#5e10ca33e219807c0eee0f08b5efcba9b6a42c06" + integrity sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.13.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz#c67794d2b0fd0b4a47f50266088acdc52a08aab6" - integrity sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w== + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.34.0.tgz#d690f60e335596f38b01792e8f4b361d9bd0cb35" + integrity sha512-eRfPPcasO39iwjlUAMtjeueRGuIrW3TQ9WseIDl7i5UWuFbf83yYaU7YPs4j8+4CxUMIsj1k+4kV+E+G+6ypDQ== dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/type-utils" "5.29.0" - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/type-utils" "5.34.0" + "@typescript-eslint/utils" "5.34.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2419,75 +2546,75 @@ tsutils "^3.21.0" "@typescript-eslint/experimental-utils@^5.0.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.29.0.tgz#abed79020f623ac4fb76c7fdf917552a17171704" - integrity sha512-H4fqOVYiH6R15NjtMO2LVBZgzXgzjdPEXYb7x/meg4QbXsptLxdq8YlHK2NZOFKipuInY4sAPY5a6SQ/53s3dw== + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.34.0.tgz#f24200ee4d55ecf30a24e335d551fc6819f0c84b" + integrity sha512-bXDmphFgoQI4eY7r8Vp0mwrvU9Pic+KxuQPG8uoC33FlZLgsFhv8brhUUyniHEeDhApdg4/5a3qYEZbNGnRQYQ== dependencies: - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/utils" "5.34.0" "@typescript-eslint/parser@^5.13.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" - integrity sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw== + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.34.0.tgz#ca710858ea85dbfd30c9b416a335dc49e82dbc07" + integrity sha512-SZ3NEnK4usd2CXkoV3jPa/vo1mWX1fqRyIVUQZR4As1vyp4fneknBNJj+OFtV8WAVgGf+rOHMSqQbs2Qn3nFZQ== dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/typescript-estree" "5.34.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" - integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== +"@typescript-eslint/scope-manager@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527" + integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow== dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" -"@typescript-eslint/type-utils@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" - integrity sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg== +"@typescript-eslint/type-utils@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.34.0.tgz#7a324ab9ddd102cd5e1beefc94eea6f3eb32d32d" + integrity sha512-Pxlno9bjsQ7hs1pdWRUv9aJijGYPYsHpwMeCQ/Inavhym3/XaKt1ZKAA8FIw4odTBfowBdZJDMxf2aavyMDkLg== dependencies: - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/utils" "5.34.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" - integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== +"@typescript-eslint/types@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78" + integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA== -"@typescript-eslint/typescript-estree@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" - integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== +"@typescript-eslint/typescript-estree@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a" + integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A== dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" - integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== +"@typescript-eslint/utils@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743" + integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/typescript-estree" "5.34.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" - integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== +"@typescript-eslint/visitor-keys@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40" + integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw== dependencies: - "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/types" "5.34.0" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -2789,21 +2916,21 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.5.0, acorn@^8.8.0: +acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== -acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -2911,7 +3038,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -2937,6 +3064,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3118,15 +3250,15 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -babel-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" - integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== +babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== dependencies: - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.1" + babel-preset-jest "^28.1.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -3149,10 +3281,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" - integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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" @@ -3160,20 +3292,20 @@ babel-plugin-jest-hoist@^28.1.1: "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: @@ -3201,12 +3333,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" - integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== +babel-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== dependencies: - babel-plugin-jest-hoist "^28.1.1" + babel-plugin-jest-hoist "^28.1.3" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -3378,7 +3510,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.14.5: +browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.21.3: version "4.21.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== @@ -3388,16 +3520,6 @@ browserslist@^4.14.5: node-releases "^2.0.6" update-browserslist-db "^1.0.5" -browserslist@^4.20.2, browserslist@^4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" - integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== - dependencies: - caniuse-lite "^1.0.30001358" - electron-to-chromium "^1.4.164" - node-releases "^2.0.5" - update-browserslist-db "^1.0.0" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3429,7 +3551,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^3.0.0: +builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -3593,15 +3715,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001358: - version "1.0.30001359" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" - integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== - caniuse-lite@^1.0.30001370: - version "1.0.30001373" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be" - integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ== + version "1.0.30001382" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz#4d37f0d0b6fffb826c8e5e1c0f4bf8ce592db949" + integrity sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg== caseless@~0.12.0: version "0.12.0" @@ -4008,11 +4125,11 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" - integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== + version "3.24.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.1.tgz#d1af84a17e18dfdd401ee39da9996f9a7ba887de" + integrity sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw== dependencies: - browserslist "^4.21.0" + browserslist "^4.21.3" semver "7.0.0" core-util-is@1.0.2: @@ -4066,6 +4183,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4283,6 +4405,11 @@ diff-sequences@^28.1.1: resolved "https://registry.yarnpkg.com/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.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4363,15 +4490,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.4.164: - version "1.4.170" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" - integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== - electron-to-chromium@^1.4.202: - version "1.4.206" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz#580ff85b54d7ec0c05f20b1e37ea0becdd7b0ee4" - integrity sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA== + version "1.4.227" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.227.tgz#28e46e2a701fed3188db3ca7bf0a3a475e484046" + integrity sha512-I9VVajA3oswIJOUFg2PSBqrHLF5Y+ahIfjOV9+v6uYyBqFZutmPxA6fxocDUUmgwYevRWFu1VjLyVG3w45qa/g== elliptic@^6.5.3: version "6.5.4" @@ -4523,200 +4645,200 @@ esbuild-android-64@0.14.49: resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== -esbuild-android-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz#414a087cb0de8db1e347ecca6c8320513de433db" - integrity sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ== +esbuild-android-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" + integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== esbuild-android-arm64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== -esbuild-android-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz#55de3bce2aab72bcd2b606da4318ad00fb9c8151" - integrity sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A== +esbuild-android-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" + integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== esbuild-darwin-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== -esbuild-darwin-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz#4259f23ed6b4cea2ec8a28d87b7fb9801f093754" - integrity sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA== +esbuild-darwin-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" + integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== esbuild-darwin-arm64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== -esbuild-darwin-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a" - integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow== +esbuild-darwin-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" + integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== esbuild-freebsd-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== -esbuild-freebsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz#27b6587b3639f10519c65e07219d249b01f2ad38" - integrity sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g== +esbuild-freebsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" + integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== esbuild-freebsd-arm64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== -esbuild-freebsd-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz#63c435917e566808c71fafddc600aca4d78be1ec" - integrity sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg== +esbuild-freebsd-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" + integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== esbuild-linux-32@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== -esbuild-linux-32@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz#c3da774143a37e7f11559b9369d98f11f997a5d9" - integrity sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w== +esbuild-linux-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" + integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== esbuild-linux-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== -esbuild-linux-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz#5d92b67f674e02ae0b4a9de9a757ba482115c4ae" - integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA== +esbuild-linux-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" + integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== esbuild-linux-arm64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== -esbuild-linux-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz#dac84740516e859d8b14e1ecc478dd5241b10c93" - integrity sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw== +esbuild-linux-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" + integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== esbuild-linux-arm@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== -esbuild-linux-arm@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz#b3ae7000696cd53ed95b2b458554ff543a60e106" - integrity sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg== +esbuild-linux-arm@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" + integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== esbuild-linux-mips64le@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== -esbuild-linux-mips64le@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz#dad10770fac94efa092b5a0643821c955a9dd385" - integrity sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A== +esbuild-linux-mips64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" + integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== esbuild-linux-ppc64le@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== -esbuild-linux-ppc64le@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz#b68c2f8294d012a16a88073d67e976edd4850ae0" - integrity sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ== +esbuild-linux-ppc64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" + integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== esbuild-linux-riscv64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== -esbuild-linux-riscv64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz#608a318b8697123e44c1e185cdf6708e3df50b93" - integrity sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA== +esbuild-linux-riscv64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" + integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== esbuild-linux-s390x@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== -esbuild-linux-s390x@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz#c9e7791170a3295dba79b93aa452beb9838a8625" - integrity sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw== +esbuild-linux-s390x@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" + integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== esbuild-netbsd-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== -esbuild-netbsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz#0abd40b8c2e37fda6f5cc41a04cb2b690823d891" - integrity sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A== +esbuild-netbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" + integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== esbuild-openbsd-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== -esbuild-openbsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz#4adba0b7ea7eb1428bb00d8e94c199a949b130e8" - integrity sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA== +esbuild-openbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" + integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== esbuild-sunos-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== -esbuild-sunos-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz#4b8a6d97dfedda30a6e39607393c5c90ebf63891" - integrity sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA== +esbuild-sunos-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" + integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== esbuild-windows-32@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== -esbuild-windows-32@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz#d31d8ca0c1d314fb1edea163685a423b62e9ac17" - integrity sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg== +esbuild-windows-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" + integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== esbuild-windows-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== -esbuild-windows-64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz#7d3c09c8652d222925625637bdc7e6c223e0085d" - integrity sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA== +esbuild-windows-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" + integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== esbuild-windows-arm64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== -esbuild-windows-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz#0220d2304bfdc11bc27e19b2aaf56edf183e4ae9" - integrity sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g== +esbuild-windows-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" + integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== esbuild@0.14.49: version "0.14.49" @@ -4745,30 +4867,31 @@ esbuild@0.14.49: esbuild-windows-arm64 "0.14.49" esbuild@^0.14.47: - version "0.14.51" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e" - integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== optionalDependencies: - esbuild-android-64 "0.14.51" - esbuild-android-arm64 "0.14.51" - esbuild-darwin-64 "0.14.51" - esbuild-darwin-arm64 "0.14.51" - esbuild-freebsd-64 "0.14.51" - esbuild-freebsd-arm64 "0.14.51" - esbuild-linux-32 "0.14.51" - esbuild-linux-64 "0.14.51" - esbuild-linux-arm "0.14.51" - esbuild-linux-arm64 "0.14.51" - esbuild-linux-mips64le "0.14.51" - esbuild-linux-ppc64le "0.14.51" - esbuild-linux-riscv64 "0.14.51" - esbuild-linux-s390x "0.14.51" - esbuild-netbsd-64 "0.14.51" - esbuild-openbsd-64 "0.14.51" - esbuild-sunos-64 "0.14.51" - esbuild-windows-32 "0.14.51" - esbuild-windows-64 "0.14.51" - esbuild-windows-arm64 "0.14.51" + "@esbuild/linux-loong64" "0.14.54" + esbuild-android-64 "0.14.54" + esbuild-android-arm64 "0.14.54" + esbuild-darwin-64 "0.14.54" + esbuild-darwin-arm64 "0.14.54" + esbuild-freebsd-64 "0.14.54" + esbuild-freebsd-arm64 "0.14.54" + esbuild-linux-32 "0.14.54" + esbuild-linux-64 "0.14.54" + esbuild-linux-arm "0.14.54" + esbuild-linux-arm64 "0.14.54" + esbuild-linux-mips64le "0.14.54" + esbuild-linux-ppc64le "0.14.54" + esbuild-linux-riscv64 "0.14.54" + esbuild-linux-s390x "0.14.54" + esbuild-netbsd-64 "0.14.54" + esbuild-openbsd-64 "0.14.54" + esbuild-sunos-64 "0.14.54" + esbuild-windows-32 "0.14.54" + esbuild-windows-64 "0.14.54" + esbuild-windows-arm64 "0.14.54" escalade@^3.1.1: version "3.1.1" @@ -4869,12 +4992,13 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.14.0, eslint@^8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" - integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== + version "8.22.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48" + integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA== dependencies: "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4884,14 +5008,17 @@ eslint@^8.14.0, eslint@^8.18.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.2" + espree "^9.3.3" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" + find-up "^5.0.0" functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -4909,12 +5036,12 @@ eslint@^8.14.0, eslint@^8.18.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^9.3.2, espree@^9.3.3: + version "9.3.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" + integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== dependencies: - acorn "^8.7.1" + acorn "^8.8.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" @@ -5036,16 +5163,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" - integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== +expect@^28.0.0, expect@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== dependencies: - "@jest/expect-utils" "^28.1.1" + "@jest/expect-utils" "^28.1.3" jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" extend-shallow@^2.0.1: version "2.0.1" @@ -5237,6 +5364,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5246,9 +5381,9 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== flush-write-stream@^1.0.0: version "1.1.1" @@ -5568,9 +5703,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.15.0: - version "13.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== dependencies: type-fest "^0.20.2" @@ -5604,6 +5739,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + handlebars@^4.7.6: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -5656,7 +5796,7 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -6058,11 +6198,11 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: - builtin-modules "^3.0.0" + builtin-modules "^3.3.0" is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" @@ -6077,9 +6217,9 @@ is-ci@^1.0.10: ci-info "^1.5.0" is-core-module@^2.5.0, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== dependencies: has "^1.0.3" @@ -6264,11 +6404,11 @@ is-shared-array-buffer@^1.0.2: call-bind "^1.0.2" is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" is-stream@^1.1.0: version "1.1.0" @@ -6390,101 +6530,101 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" - integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== +jest-changed-files@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" + integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== dependencies: execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" - integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== +jest-circus@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" + integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@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.1" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" - jest-util "^28.1.1" - pretty-format "^28.1.1" + 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" - throat "^6.0.1" -jest-cli@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" - integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== +jest-cli@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" + integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== dependencies: - "@jest/core" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@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.1" - jest-util "^28.1.1" - jest-validate "^28.1.1" + 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@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" - integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== +jest-config@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" - "@jest/types" "^28.1.1" - babel-jest "^28.1.1" + "@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.1" - jest-environment-node "^28.1.1" + 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.1" - jest-runner "^28.1.1" - jest-util "^28.1.1" - jest-validate "^28.1.1" + 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.1" + pretty-format "^28.1.3" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" - integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" + pretty-format "^28.1.3" jest-docblock@^28.1.1: version "28.1.1" @@ -6493,92 +6633,92 @@ jest-docblock@^28.1.1: dependencies: detect-newline "^3.0.0" -jest-each@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" - integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== +jest-each@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" + integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" chalk "^4.0.0" jest-get-type "^28.0.2" - jest-util "^28.1.1" - pretty-format "^28.1.1" + jest-util "^28.1.3" + pretty-format "^28.1.3" -jest-environment-node@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" - integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== +jest-environment-node@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" + integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.1" - jest-util "^28.1.1" + jest-mock "^28.1.3" + jest-util "^28.1.3" jest-get-type@^28.0.2: version "28.0.2" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" - integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== dependencies: - "@jest/types" "^28.1.1" + "@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.1" - jest-worker "^28.1.1" + jest-util "^28.1.3" + jest-worker "^28.1.3" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" - integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== +jest-leak-detector@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" + pretty-format "^28.1.3" -jest-matcher-utils@^28.0.0, jest-matcher-utils@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" - integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== dependencies: chalk "^4.0.0" - jest-diff "^28.1.1" + jest-diff "^28.1.3" jest-get-type "^28.0.2" - pretty-format "^28.1.1" + pretty-format "^28.1.3" -jest-message-util@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" - integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" + "@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.1" + pretty-format "^28.1.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" - integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== +jest-mock@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" + integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6591,149 +6731,149 @@ jest-regex-util@^28.0.2: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" - integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== +jest-resolve-dependencies@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" + jest-snapshot "^28.1.3" -jest-resolve@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" - integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== +jest-resolve@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" + jest-haste-map "^28.1.3" jest-pnp-resolver "^1.2.2" - jest-util "^28.1.1" - jest-validate "^28.1.1" + 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@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" - integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== - dependencies: - "@jest/console" "^28.1.1" - "@jest/environment" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" - "@jest/types" "^28.1.1" +jest-runner@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" - jest-haste-map "^28.1.1" - jest-leak-detector "^28.1.1" - jest-message-util "^28.1.1" - jest-resolve "^28.1.1" - jest-runtime "^28.1.1" - jest-util "^28.1.1" - jest-watcher "^28.1.1" - jest-worker "^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" - throat "^6.0.1" -jest-runtime@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" - integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== - dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" - "@jest/globals" "^28.1.1" - "@jest/source-map" "^28.0.2" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" - "@jest/types" "^28.1.1" +jest-runtime@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" - jest-message-util "^28.1.1" - jest-mock "^28.1.1" + 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.1" - jest-snapshot "^28.1.1" - jest-util "^28.1.1" + 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-snapshot@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" - integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== +jest-snapshot@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1" - "@jest/transform" "^28.1.1" - "@jest/types" "^28.1.1" + "@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.1" + expect "^28.1.3" graceful-fs "^4.2.9" - jest-diff "^28.1.1" + jest-diff "^28.1.3" jest-get-type "^28.0.2" - jest-haste-map "^28.1.1" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + 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.1" + pretty-format "^28.1.3" semver "^7.3.5" -jest-util@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" - integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: - "@jest/types" "^28.1.1" + "@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@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" - integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== +jest-validate@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" + integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== dependencies: - "@jest/types" "^28.1.1" + "@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.1" + pretty-format "^28.1.3" -jest-watcher@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" - integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== +jest-watcher@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@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.1" + jest-util "^28.1.3" string-length "^4.0.1" jest-worker@^27.4.5: @@ -6745,24 +6885,24 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" - integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/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.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" - integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== +jest@^28.1.1, jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" + integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== dependencies: - "@jest/core" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/core" "^28.1.3" + "@jest/types" "^28.1.3" import-local "^3.0.2" - jest-cli "^28.1.1" + jest-cli "^28.1.3" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -6864,12 +7004,12 @@ jsprim@^1.2.2: verror "1.10.0" "jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" - integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: array-includes "^3.1.5" - object.assign "^4.1.2" + object.assign "^4.1.3" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -7050,6 +7190,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -7190,6 +7337,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + make-fetch-happen@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" @@ -7686,11 +7838,6 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -7899,14 +8046,14 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" object.entries@^1.1.5: @@ -8068,6 +8215,13 @@ 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: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -8089,6 +8243,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" @@ -8237,9 +8398,9 @@ parse-path@^4.0.0: query-string "^6.13.8" parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== + version "6.0.5" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.5.tgz#4acab8982cef1846a0f8675fa686cef24b2f6f9b" + integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== dependencies: is-ssh "^1.3.0" normalize-url "^6.1.0" @@ -8409,9 +8570,9 @@ posix-character-classes@^0.1.0: integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss@^8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -8427,12 +8588,12 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-format@^28.0.0, pretty-format@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" - integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== dependencies: - "@jest/schemas" "^28.0.2" + "@jest/schemas" "^28.1.3" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -8506,11 +8667,16 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -protocols@^1.1.0, protocols@^1.4.0: +protocols@^1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + protoduck@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" @@ -8529,9 +8695,9 @@ prr@~1.0.1: integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" @@ -8591,9 +8757,9 @@ q@^1.5.1: integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== qs@^6.9.4: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -8866,10 +9032,10 @@ regexpp@^3.2.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.0.1" @@ -9065,9 +9231,9 @@ rollup@2.77.0: fsevents "~2.3.2" rollup@^2.75.6: - version "2.77.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.2.tgz#6b6075c55f9cc2040a5912e6e062151e42e2c4e3" - integrity sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g== + version "2.78.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" + integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== optionalDependencies: fsevents "~2.3.2" @@ -9379,6 +9545,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -9406,9 +9577,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== split-on-first@^1.0.0: version "1.1.0" @@ -9797,15 +9968,15 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@^5.1.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" - integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== + version "5.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc" + integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.14" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - terser "^5.7.2" + terser "^5.14.1" terser@^4.1.2: version "4.8.1" @@ -9816,7 +9987,7 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.7.2: +terser@^5.14.1: version "5.14.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== @@ -9845,11 +10016,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9974,6 +10140,25 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -10051,9 +10236,9 @@ typescript@^4.7.4: integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== uglify-js@^3.1.4: - version "3.16.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.1.tgz#0e7ec928b3d0b1e1d952bce634c384fd56377317" - integrity sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ== + version "3.17.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85" + integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg== uid-number@0.0.6: version "0.0.6" @@ -10162,14 +10347,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" - integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" @@ -10234,12 +10411,17 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^9.0.0: +v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== @@ -10526,9 +10708,9 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: signal-exit "^3.0.2" write-file-atomic@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/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" @@ -10592,9 +10774,9 @@ yargs-parser@^20.2.3: integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^12.0.1: version "12.0.5" @@ -10626,3 +10808,13 @@ yargs@^17.3.1: string-width "^4.2.3" y18n "^5.0.5" yargs-parser "^21.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From c612dbb43ceed410a438636504a5cd8114c5b711 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 24 Aug 2022 09:55:40 +0200 Subject: [PATCH 024/640] feature(sourcemaps): Replace "create release" command (#29) --- .../playground/vite.config.smallNodeApp.js | 2 +- packages/unplugin/package.json | 1 + packages/unplugin/src/index.ts | 3 +- packages/unplugin/src/sentry/api.ts | 68 +++++++++++++++++++ packages/unplugin/src/{ => sentry}/cli.ts | 2 +- packages/unplugin/src/{ => sentry}/facade.ts | 9 +-- yarn.lock | 24 ++++++- 7 files changed, 101 insertions(+), 8 deletions(-) create mode 100644 packages/unplugin/src/sentry/api.ts rename packages/unplugin/src/{ => sentry}/cli.ts (98%) rename packages/unplugin/src/{ => sentry}/facade.ts (91%) diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 13e40f6b2096..95aa4e9e122c 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -22,7 +22,7 @@ export default defineConfig({ project: "hackweek-node-sample-app", debug: true, debugLogging: true, - release: "0.0.1", + release: "0.0.6", include: "out/vite-smallNodeApp", cleanArtifacts: true, }), diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index ca0057ef48bb..a50e95175d45 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -21,6 +21,7 @@ }, "dependencies": { "@sentry/cli": "1.74.5", + "axios": "^0.27.2", "magic-string": "0.26.2", "unplugin": "0.9.4" }, diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 95e8237db982..a52f811bc53f 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -2,7 +2,7 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; import { getReleaseName } from "./getReleaseName"; import { Options } from "./types"; -import { makeSentryFacade } from "./facade"; +import { makeSentryFacade } from "./sentry/facade"; const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin @@ -11,6 +11,7 @@ const defaultOptions: Omit = { debug: false, cleanArtifacts: false, finalize: true, + url: "https://sentry.io", }; /** diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts new file mode 100644 index 000000000000..02577bc5d20a --- /dev/null +++ b/packages/unplugin/src/sentry/api.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-empty-function */ + +import axios from "axios"; +import { AxiosError } from "axios"; +import { Options } from "../types"; + +const API_PATH = "api/0"; + +type SentryRequestOptions = Pick & { + method: string; + endpoint: string; + payload: unknown; +}; + +/** + * Generic function to call to make the actual request. + * Currently takes care of adding headers. + * Happy to change this to something more sophisticated. + */ +async function makeRequest(requestOptions: SentryRequestOptions) { + const { authToken, url, endpoint, method, payload } = requestOptions; + + if (!authToken || !url || !endpoint) { + return Promise.reject(); + } + + const response = await axios({ + method, + url: `${url}/${API_PATH}/${endpoint}`, + data: payload, + headers: { Authorization: `Bearer ${authToken}`, "User-Agent": "sentry-unplugin" }, + }).catch((error: AxiosError) => { + const msg = `Error: ${error.message}`; + throw new Error(msg); + }); + + return response; +} + +/* Just a wrapper to make POST requests */ +async function makePostRequest(requestOptions: Omit) { + return makeRequest({ ...requestOptions, method: "POST" }); +} + +export async function makeNewReleaseRequest(release: string, options: Options): Promise { + const releasePayload = { + version: release, + projects: [options.project], + dateStarted: new Date(), + dateReleased: new Date(), //TODO: figure out if these dates are set correctly + }; + + const orgSlug = options.org || ""; + const projectSlug = options.project || ""; + + // using the legacy endpoint here because the sentry webpack plugin only associates one project + // with the release. If we ever wanna support multiple projects in the unplugin, + // take a look at how sentry/cli calls the new endpoint: + // https://github.com/getsentry/sentry-cli/blob/4fa813549cd249e77ae6ba974d76e606a19f48de/src/api.rs#L769-L773 + const response = await makePostRequest({ + authToken: options.authToken, + url: options.url, + endpoint: `projects/${orgSlug}/${projectSlug}/releases/`, + payload: releasePayload, + }); + + return response.status.toString(); +} diff --git a/packages/unplugin/src/cli.ts b/packages/unplugin/src/sentry/cli.ts similarity index 98% rename from packages/unplugin/src/cli.ts rename to packages/unplugin/src/sentry/cli.ts index 153c147963da..480adb789dcb 100644 --- a/packages/unplugin/src/cli.ts +++ b/packages/unplugin/src/sentry/cli.ts @@ -1,5 +1,5 @@ import SentryCli from "@sentry/cli"; -import { Options } from "./types"; +import { Options } from "../types"; /** Creates a new Sentry CLI instance. */ export function makeSentryCli(options: Options) { diff --git a/packages/unplugin/src/facade.ts b/packages/unplugin/src/sentry/facade.ts similarity index 91% rename from packages/unplugin/src/facade.ts rename to packages/unplugin/src/sentry/facade.ts index 896a7b80dba4..ef0f27f7a822 100644 --- a/packages/unplugin/src/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -7,8 +7,9 @@ // - unnecessary functionality import { makeSentryCli } from "./cli"; -import { Options } from "./types"; +import { Options } from "../types"; import SentryCli from "@sentry/cli"; +import { makeNewReleaseRequest } from "./api"; export type SentryFacade = { createNewRelease: () => Promise; @@ -27,7 +28,7 @@ export function makeSentryFacade(release: string, options: Options): SentryFacad const cli = makeSentryCli(options); return { - createNewRelease: () => createNewRelease(cli, release), + createNewRelease: () => createNewRelease(release, options), cleanArtifacts: () => cleanArtifacts(cli, release, options), uploadSourceMaps: () => uploadSourceMaps(cli, release, options), setCommits: () => setCommits(/* release */), @@ -36,8 +37,8 @@ export function makeSentryFacade(release: string, options: Options): SentryFacad }; } -async function createNewRelease(cli: SentryCli, release: string): Promise { - return cli.releases.new(release); +async function createNewRelease(release: string, options: Options): Promise { + return makeNewReleaseRequest(release, options); } async function uploadSourceMaps( diff --git a/yarn.lock b/yarn.lock index 075ab4bd95d8..8d276baf62c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3250,6 +3250,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + babel-jest@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" @@ -3935,7 +3943,7 @@ columnify@^1.5.4: strip-ansi "^6.0.1" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -5393,6 +5401,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@^1.14.9: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -5403,6 +5416,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" From d6dd79594a7d4efcdc5ac2109849617451d46b37 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Wed, 24 Aug 2022 10:44:50 +0200 Subject: [PATCH 025/640] chore: add environement variables config --- packages/playground/.env.example | 4 ++++ packages/playground/.gitignore | 1 + packages/playground/src/smallNodeApp.js | 2 +- packages/playground/vite.config.smallNodeApp.js | 4 ++-- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 packages/playground/.env.example diff --git a/packages/playground/.env.example b/packages/playground/.env.example new file mode 100644 index 000000000000..4b7b93720128 --- /dev/null +++ b/packages/playground/.env.example @@ -0,0 +1,4 @@ +SENTRY_AUTH_TOKEN= +SENTRY_DSN= +SENTRY_ORG= +SENTRY_PROJECT= \ No newline at end of file diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore index 89f9ac04aac6..eb19cb4d3456 100644 --- a/packages/playground/.gitignore +++ b/packages/playground/.gitignore @@ -1 +1,2 @@ out/ +.env \ No newline at end of file diff --git a/packages/playground/src/smallNodeApp.js b/packages/playground/src/smallNodeApp.js index 88ee728f7014..4f7c565f6e67 100644 --- a/packages/playground/src/smallNodeApp.js +++ b/packages/playground/src/smallNodeApp.js @@ -2,7 +2,7 @@ const Sentry = require("@sentry/node"); const { RewriteFrames } = require("@sentry/integrations"); Sentry.init({ - dsn: "https://8fa8ac58d94740a69f74934665aa0770@o1151230.ingest.sentry.io/6680403", + dsn: process.env.SENTRY_DSN, debug: true, enabled: true, sampleRate: 1.0, diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 95aa4e9e122c..39892befa3e9 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -18,8 +18,8 @@ export default defineConfig({ plugins: [ sentryVitePlugin({ authToken: process.env.SENTRY_AUTH_TOKEN, - org: "lms-testorg-9m", - project: "hackweek-node-sample-app", + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, debug: true, debugLogging: true, release: "0.0.6", From bde4f70d2e6fa517384b6073c897ca4d5dc0b9ef Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 Aug 2022 11:03:43 +0200 Subject: [PATCH 026/640] feat(sourcemaps): Replace "clean artifacts" command (#30) --- packages/playground/package.json | 2 +- packages/unplugin/src/sentry/api.ts | 124 ++++++++++++++----------- packages/unplugin/src/sentry/facade.ts | 68 +++++++++++++- packages/unplugin/src/tsconfig.json | 3 +- 4 files changed, 138 insertions(+), 59 deletions(-) diff --git a/packages/playground/package.json b/packages/playground/package.json index 07713bb80df9..eca2dab452c8 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -6,7 +6,7 @@ "license": "MIT", "private": true, "scripts": { - "build": "run-p build:rollup build:vite build:webpack4 build:webpack5 build:esbuild", + "build:playground": "run-p build:rollup build:vite build:webpack4 build:webpack5 build:esbuild", "build:rollup": "rollup --config rollup.config.js", "build:vite": "vite build --config vite.config.js", "build:webpack4": "node build-webpack4.js", diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index 02577bc5d20a..d2b0841c3d02 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -1,68 +1,86 @@ -/* eslint-disable @typescript-eslint/no-empty-function */ - import axios from "axios"; -import { AxiosError } from "axios"; -import { Options } from "../types"; - -const API_PATH = "api/0"; - -type SentryRequestOptions = Pick & { - method: string; - endpoint: string; - payload: unknown; -}; -/** - * Generic function to call to make the actual request. - * Currently takes care of adding headers. - * Happy to change this to something more sophisticated. - */ -async function makeRequest(requestOptions: SentryRequestOptions) { - const { authToken, url, endpoint, method, payload } = requestOptions; - - if (!authToken || !url || !endpoint) { - return Promise.reject(); - } +// We need to ignore the import because the package.json is not part of the TS project as configured in tsconfig.json +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import { version as unpluginVersion } from "../../package.json"; - const response = await axios({ - method, - url: `${url}/${API_PATH}/${endpoint}`, - data: payload, - headers: { Authorization: `Bearer ${authToken}`, "User-Agent": "sentry-unplugin" }, - }).catch((error: AxiosError) => { - const msg = `Error: ${error.message}`; - throw new Error(msg); - }); +const API_PATH = "/api/0"; - return response; -} +// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access +const USER_AGENT = `sentry-unplugin/${unpluginVersion}`; +const sentryApiAxiosInstance = axios.create(); +sentryApiAxiosInstance.interceptors.request.use((config) => { + return { + ...config, + headers: { + ...config.headers, + "User-Agent": USER_AGENT, + }, + }; +}); -/* Just a wrapper to make POST requests */ -async function makePostRequest(requestOptions: Omit) { - return makeRequest({ ...requestOptions, method: "POST" }); -} +export async function createRelease({ + release, + project, + org, + authToken, + sentryUrl, +}: { + release: string; + project: string; + org: string; + authToken: string; + sentryUrl: string; +}): Promise { + // using the legacy endpoint here because the sentry webpack plugin only associates one project + // with the release. If we ever wanna support multiple projects in the unplugin, + // take a look at how sentry/cli calls the new endpoint: + // https://github.com/getsentry/sentry-cli/blob/4fa813549cd249e77ae6ba974d76e606a19f48de/src/api.rs#L769-L773 + const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/`; -export async function makeNewReleaseRequest(release: string, options: Options): Promise { const releasePayload = { version: release, - projects: [options.project], + projects: [project], dateStarted: new Date(), dateReleased: new Date(), //TODO: figure out if these dates are set correctly }; - const orgSlug = options.org || ""; - const projectSlug = options.project || ""; + try { + await sentryApiAxiosInstance.post(requestUrl, releasePayload, { + headers: { Authorization: `Bearer ${authToken}` }, + }); + } catch (e) { + // TODO: Maybe do some more sopthisticated error handling here + throw new Error("Something went wrong while creating a release"); + } +} - // using the legacy endpoint here because the sentry webpack plugin only associates one project - // with the release. If we ever wanna support multiple projects in the unplugin, - // take a look at how sentry/cli calls the new endpoint: - // https://github.com/getsentry/sentry-cli/blob/4fa813549cd249e77ae6ba974d76e606a19f48de/src/api.rs#L769-L773 - const response = await makePostRequest({ - authToken: options.authToken, - url: options.url, - endpoint: `projects/${orgSlug}/${projectSlug}/releases/`, - payload: releasePayload, - }); +export async function deleteAllReleaseArtifacts({ + org, + release, + sentryUrl, + authToken, + project, +}: { + org: string; + release: string; + sentryUrl: string; + authToken: string; + project?: string; +}): Promise { + const requestUrl = project + ? `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}` // legacy endpoint if users provide project + : `${sentryUrl}${API_PATH}/organizations/${org}/files/source-maps/?name=${release}`; // new endpoint - return response.status.toString(); + try { + await sentryApiAxiosInstance.delete(requestUrl, { + headers: { + Authorization: `Bearer ${authToken}`, + }, + }); + } catch (e) { + // TODO: Maybe do some more sopthisticated error handling here + throw new Error("Something went wrong while cleaning previous release artifacts"); + } } diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index ef0f27f7a822..3e6f1ea07fd0 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -9,7 +9,7 @@ import { makeSentryCli } from "./cli"; import { Options } from "../types"; import SentryCli from "@sentry/cli"; -import { makeNewReleaseRequest } from "./api"; +import { createRelease, deleteAllReleaseArtifacts } from "./api"; export type SentryFacade = { createNewRelease: () => Promise; @@ -38,7 +38,37 @@ export function makeSentryFacade(release: string, options: Options): SentryFacad } async function createNewRelease(release: string, options: Options): Promise { - return makeNewReleaseRequest(release, options); + // TODO: pull these checks out of here and simplify them + if (options.authToken === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "authToken" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (options.org === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "org" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (options.url === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "url" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (options.project === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "project" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } + + await createRelease({ + release, + authToken: options.authToken, + org: options.org, + project: options.project, + sentryUrl: options.url, + }); + + // eslint-disable-next-line no-console + console.log("[Sentry-plugin] Successfully created release."); + + return Promise.resolve("nothing to do here"); } async function uploadSourceMaps( @@ -80,9 +110,39 @@ async function finalizeRelease(cli: SentryCli, release: string, options: Options return Promise.resolve("nothing to do here"); } -async function cleanArtifacts(cli: SentryCli, release: string, options: Options): Promise { +async function cleanArtifacts(_cli: SentryCli, release: string, options: Options): Promise { if (options.cleanArtifacts) { - return cli.releases.execute(["releases", "files", release, "delete", "--all"], true); + // TODO: pull these checks out of here and simplify them + if (options.authToken === undefined) { + // eslint-disable-next-line no-console + console.log( + '[Sentry-plugin] WARNING: Missing "authToken" option. Will not clean existing artifacts.' + ); + return Promise.resolve("nothing to do here"); + } else if (options.org === undefined) { + // eslint-disable-next-line no-console + console.log( + '[Sentry-plugin] WARNING: Missing "org" option. Will not clean existing artifacts.' + ); + return Promise.resolve("nothing to do here"); + } else if (options.url === undefined) { + // eslint-disable-next-line no-console + console.log( + '[Sentry-plugin] WARNING: Missing "url" option. Will not clean existing artifacts.' + ); + return Promise.resolve("nothing to do here"); + } + + await deleteAllReleaseArtifacts({ + authToken: options.authToken, + org: options.org, + release, + sentryUrl: options.url, + project: options.project, + }); + + // eslint-disable-next-line no-console + console.log("[Sentry-plugin] Successfully cleaned previous artifacts."); } return Promise.resolve("nothing to do here"); } diff --git a/packages/unplugin/src/tsconfig.json b/packages/unplugin/src/tsconfig.json index 32067f493a24..c7d27b2e5ea7 100644 --- a/packages/unplugin/src/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -1,9 +1,10 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "sentry-unplugin-tsconfigs/base-config.json", - "include": ["./**/*"], + "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true, + "resolveJsonModule": true, // needed to import package.json "types": ["node"], "lib": ["ES2020", "DOM"] // es2020 needed for "new Set()", DOM needed for various bundler types } From 3e1f388df21213888ffc130102fe754f2a2d467a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 Aug 2022 14:22:48 +0200 Subject: [PATCH 027/640] Add playground logger proxy --- packages/playground/.env.example | 3 +- packages/playground/.gitignore | 3 +- packages/playground/package.json | 17 +- .../scripts/request-logger-logs/.gitkeep | 0 .../scripts/request-logger-proxy.ts | 78 ++++ .../playground/vite.config.smallNodeApp.js | 1 + yarn.lock | 412 +++++++++++++++++- 7 files changed, 493 insertions(+), 21 deletions(-) create mode 100644 packages/playground/scripts/request-logger-logs/.gitkeep create mode 100644 packages/playground/scripts/request-logger-proxy.ts diff --git a/packages/playground/.env.example b/packages/playground/.env.example index 4b7b93720128..7a822b458d79 100644 --- a/packages/playground/.env.example +++ b/packages/playground/.env.example @@ -1,4 +1,5 @@ SENTRY_AUTH_TOKEN= SENTRY_DSN= SENTRY_ORG= -SENTRY_PROJECT= \ No newline at end of file +SENTRY_PROJECT= +SENTRY_URL=https://sentry.io diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore index eb19cb4d3456..01984667f620 100644 --- a/packages/playground/.gitignore +++ b/packages/playground/.gitignore @@ -1,2 +1,3 @@ out/ -.env \ No newline at end of file +.env +scripts/request-logger-logs/*.txt diff --git a/packages/playground/package.json b/packages/playground/package.json index eca2dab452c8..2fb5f73e3e4b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -12,18 +12,23 @@ "build:webpack4": "node build-webpack4.js", "build:webpack5": "node build-webpack5.js", "build:esbuild": "node build-esbuild.js", - "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js" + "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js", + "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/unplugin": "*", - "@sentry/node": "^7.11.1", + "@sentry/cli": "1.74.5", "@sentry/integrations": "^7.11.1", + "@sentry/node": "^7.11.1", + "@sentry/unplugin": "*", + "@types/express": "^4.17.13", + "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", + "express": "^4.18.1", + "http-proxy": "^1.18.1", + "npm-run-all": "4.1.5", "rollup": "2.77.0", "vite": "3.0.0", - "webpack4": "npm:webpack@4.46.0", "webpack": "5.74.0", - "npm-run-all": "4.1.5", - "@sentry/cli": "1.74.5" + "webpack4": "npm:webpack@4.46.0" } } diff --git a/packages/playground/scripts/request-logger-logs/.gitkeep b/packages/playground/scripts/request-logger-logs/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/playground/scripts/request-logger-proxy.ts b/packages/playground/scripts/request-logger-proxy.ts new file mode 100644 index 000000000000..ce80bf0d77fc --- /dev/null +++ b/packages/playground/scripts/request-logger-proxy.ts @@ -0,0 +1,78 @@ +import express from "express"; +import httpProxy from "http-proxy"; +import fs from "fs"; +import path from "path"; + +const now = Date.now(); + +var app = express(); + +var proxy = httpProxy.createProxyServer(); + +app.use(function (req, res, next) { + let reqBody: Uint8Array[] = []; + let resBody: Uint8Array[] = []; + let reqLog: string; + + req + .on("data", (chunk: Buffer) => { + reqBody.push(chunk); + }) + .on("end", () => { + reqLog = `Path: ${req.method} ${req.path}\nRequest headers: ${JSON.stringify( + req.headers, + null, + 2 + )}\nRequest body:\n${Buffer.concat(reqBody).toString()}`; + }); + + var oldWrite = res.write, + oldEnd = res.end; + + res.write = function (chunk: Buffer) { + resBody.push(chunk); + + // @ts-ignore + return oldWrite.apply(res, arguments); + }; + + // @ts-ignore + res.end = function (chunk) { + if (chunk) resBody.push(chunk); + + const resLog = `Response headers: ${JSON.stringify( + res.getHeaders(), + null, + 2 + )}\nResponse body:\n${Buffer.concat(resBody).toString()}`; + + fs.appendFileSync( + path.join(__dirname, `request-logger-logs/${now}.txt`), + `>>>>>>>>>\n\n${reqLog}\n\n-----------\n\n${resLog}\n\n<<<<<<<<<\n\n`, + { + encoding: "utf-8", + } + ); + + // @ts-ignore + oldEnd.apply(res, arguments); + }; + + next(); +}); + +app.use(function (req, res, next) { + proxy.web( + req, + res, + { + target: "https://sentry.io", // change this if you want to proxy to another target + changeOrigin: true, + }, + next + ); +}); + +app.listen(8005, function () { + console.log("Listening!"); +}); diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 39892befa3e9..60da809060cf 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -17,6 +17,7 @@ export default defineConfig({ }, plugins: [ sentryVitePlugin({ + url: process.env.SENTRY_URL, authToken: process.env.SENTRY_AUTH_TOKEN, org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, diff --git a/yarn.lock b/yarn.lock index 8d276baf62c6..f998af0784ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2366,6 +2366,21 @@ dependencies: "@babel/types" "^7.3.0" +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2397,6 +2412,25 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/express-serve-static-core@^4.17.18": + version "4.17.30" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04" + integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2404,6 +2438,13 @@ dependencies: "@types/node" "*" +"@types/http-proxy@^1.17.9": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== + dependencies: + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" @@ -2436,6 +2477,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -2461,6 +2507,16 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2468,6 +2524,14 @@ dependencies: "@types/node" "*" +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + dependencies: + "@types/mime" "*" + "@types/node" "*" + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -2906,6 +2970,14 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" @@ -3111,6 +3183,11 @@ array-find-index@^1.0.1: resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" @@ -3421,6 +3498,24 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== +body-parser@1.20.0, body-parser@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3584,6 +3679,11 @@ byte-size@^4.0.3: resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + cacache@^11.3.3: version "11.3.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" @@ -4021,6 +4121,18 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + conventional-changelog-angular@^5.0.3: version "5.0.13" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" @@ -4110,6 +4222,16 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + cookie@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" @@ -4264,6 +4386,13 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -4278,13 +4407,6 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -4377,6 +4499,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -4390,6 +4517,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -4498,6 +4630,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + electron-to-chromium@^1.4.202: version "1.4.227" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.227.tgz#28e46e2a701fed3188db3ca7bf0a3a475e484046" @@ -4531,6 +4668,11 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + encoding@^0.1.11: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -4906,6 +5048,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -5097,6 +5244,16 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -5182,6 +5339,43 @@ expect@^28.0.0, expect@^28.1.3: jest-message-util "^28.1.3" jest-util "^28.1.3" +express@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.0" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.10.3" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -5333,6 +5527,19 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -5401,7 +5608,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.14.9: +follow-redirects@^1.0.0, follow-redirects@^1.14.9: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== @@ -5434,6 +5641,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -5441,6 +5653,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -5921,6 +6138,17 @@ http-cache-semantics@^3.8.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -5929,6 +6157,15 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -5981,7 +6218,7 @@ husky@^8.0.0: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== -iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6094,7 +6331,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6166,6 +6403,11 @@ ip@1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -7448,6 +7690,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -7526,6 +7773,11 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -7536,6 +7788,11 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -7576,13 +7833,18 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -7715,7 +7977,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -7783,6 +8045,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -8135,6 +8402,13 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -8429,6 +8703,11 @@ parse-url@^6.0.0: parse-path "^4.0.0" protocols "^1.4.0" +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -8481,6 +8760,11 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -8706,6 +8990,14 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -8778,6 +9070,13 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + qs@^6.9.4: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -8840,6 +9139,21 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -9136,6 +9450,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -9285,7 +9604,7 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9352,6 +9671,25 @@ semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -9366,6 +9704,16 @@ serialize-javascript@^6.0.0: dependencies: randombytes "^2.1.0" +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -9386,6 +9734,11 @@ setimmediate@^1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -9678,6 +10031,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -10127,6 +10485,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -10247,6 +10610,14 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10346,6 +10717,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + unplugin@0.9.4: version "0.9.4" resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.9.4.tgz#53e6f4fc92905122219af0e3f40af753563d38b6" @@ -10428,6 +10804,11 @@ util@^0.11.0: dependencies: inherits "2.0.3" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -10467,6 +10848,11 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" From 02696d310783ae4503fc950000e285f93f3613e7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 Aug 2022 15:21:06 +0200 Subject: [PATCH 028/640] fix(sourcemap-upload): Use correct Sentry APIs (#31) --- packages/unplugin/src/sentry/api.ts | 14 ++++---------- packages/unplugin/src/sentry/facade.ts | 6 ++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index d2b0841c3d02..0012baa53c09 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -33,15 +33,11 @@ export async function createRelease({ authToken: string; sentryUrl: string; }): Promise { - // using the legacy endpoint here because the sentry webpack plugin only associates one project - // with the release. If we ever wanna support multiple projects in the unplugin, - // take a look at how sentry/cli calls the new endpoint: - // https://github.com/getsentry/sentry-cli/blob/4fa813549cd249e77ae6ba974d76e606a19f48de/src/api.rs#L769-L773 - const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/`; + const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`; const releasePayload = { version: release, - projects: [project], + projects: [project], // we currently only support creating releases for a single project dateStarted: new Date(), dateReleased: new Date(), //TODO: figure out if these dates are set correctly }; @@ -67,11 +63,9 @@ export async function deleteAllReleaseArtifacts({ release: string; sentryUrl: string; authToken: string; - project?: string; + project: string; }): Promise { - const requestUrl = project - ? `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}` // legacy endpoint if users provide project - : `${sentryUrl}${API_PATH}/organizations/${org}/files/source-maps/?name=${release}`; // new endpoint + const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`; try { await sentryApiAxiosInstance.delete(requestUrl, { diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index 3e6f1ea07fd0..2d2ea2b36bec 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -131,6 +131,12 @@ async function cleanArtifacts(_cli: SentryCli, release: string, options: Options '[Sentry-plugin] WARNING: Missing "url" option. Will not clean existing artifacts.' ); return Promise.resolve("nothing to do here"); + } else if (options.project === undefined) { + // eslint-disable-next-line no-console + console.log( + '[Sentry-plugin] WARNING: Missing "project" option. Will not clean existing artifacts.' + ); + return Promise.resolve("nothing to do here"); } await deleteAllReleaseArtifacts({ From c1fc7fe3baca4cd03e162c3bade256a3b52cd62f Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Wed, 24 Aug 2022 15:37:13 +0200 Subject: [PATCH 029/640] chore(cli): move finalizeRelease to sentry-unplugin (#32) Co-authored-by: Luca Forstner --- .../playground/vite.config.smallNodeApp.js | 2 +- packages/unplugin/src/sentry/api.ts | 29 +++++++++++++++++++ packages/unplugin/src/sentry/facade.ts | 29 +++++++++++++++++-- yarn.lock | 2 +- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 60da809060cf..dc60482069f2 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -23,7 +23,7 @@ export default defineConfig({ project: process.env.SENTRY_PROJECT, debug: true, debugLogging: true, - release: "0.0.6", + release: "hackweek-0.0.7", include: "out/vite-smallNodeApp", cleanArtifacts: true, }), diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index 0012baa53c09..0caf51fe2954 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -78,3 +78,32 @@ export async function deleteAllReleaseArtifacts({ throw new Error("Something went wrong while cleaning previous release artifacts"); } } + +export async function updateRelease({ + release, + org, + authToken, + sentryUrl, + project, +}: { + release: string; + org: string; + authToken: string; + sentryUrl: string; + project: string; +}): Promise { + const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`; + + const releasePayload = { + dateReleased: new Date().toISOString(), + }; + + try { + await sentryApiAxiosInstance.put(requestUrl, releasePayload, { + headers: { Authorization: `Bearer ${authToken}` }, + }); + } catch (e) { + // TODO: Maybe do some more sopthisticated error handling here + throw new Error("Something went wrong while creating a release"); + } +} diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index 2d2ea2b36bec..b6e012fa8cb4 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -9,7 +9,7 @@ import { makeSentryCli } from "./cli"; import { Options } from "../types"; import SentryCli from "@sentry/cli"; -import { createRelease, deleteAllReleaseArtifacts } from "./api"; +import { createRelease, deleteAllReleaseArtifacts, updateRelease } from "./api"; export type SentryFacade = { createNewRelease: () => Promise; @@ -103,10 +103,33 @@ async function uploadSourceMaps( return cli.releases.uploadSourceMaps(release, uploadSourceMapsOptions); } -async function finalizeRelease(cli: SentryCli, release: string, options: Options): Promise { +async function finalizeRelease( + _cli: SentryCli, + release: string, + options: Options +): Promise { if (options.finalize) { - return cli.releases.finalize(release); + const { authToken, org, url, project } = options; + if (!authToken || !org || !url || !project) { + // eslint-disable-next-line no-console + console.log( + "[Sentry-plugin] WARNING: Missing required option. Will not clean existing artifacts." + ); + return Promise.resolve("nothing to do here"); + } + + await updateRelease({ + authToken, + org, + release, + sentryUrl: url, + project, + }); + + // eslint-disable-next-line no-console + console.log("[Sentry-plugin] Successfully finalized release."); } + return Promise.resolve("nothing to do here"); } diff --git a/yarn.lock b/yarn.lock index f998af0784ab..be8641fe6094 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3498,7 +3498,7 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0, body-parser@^1.20.0: +body-parser@1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== From 885e1977cd8a76d20239a8ba259131dcce243042 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 Aug 2022 15:43:28 +0200 Subject: [PATCH 030/640] fix: Allow for git head extraction when not in repository root --- packages/unplugin/src/getReleaseName.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/unplugin/src/getReleaseName.ts b/packages/unplugin/src/getReleaseName.ts index 30456117c262..70bbfa07ff89 100644 --- a/packages/unplugin/src/getReleaseName.ts +++ b/packages/unplugin/src/getReleaseName.ts @@ -1,13 +1,12 @@ import * as child_process from "child_process"; -import * as fs from "fs"; -import * as path from "path"; -function isGit(dir: string) { - return fs.existsSync(path.join(dir, ".git")); -} - -function getBranchHead() { - return child_process.execSync("git rev-parse HEAD").toString().trim(); +function getGitBranchHead(): string | undefined { + try { + return child_process.execSync("git rev-parse HEAD").toString().trim(); + } catch (e) { + // no git installed + return undefined; + } } export function getReleaseName(releaseName?: string): string { @@ -35,8 +34,10 @@ export function getReleaseName(releaseName?: string): string { return process.env[releaseFromEnvironmentVar] as string; } - if (isGit(process.cwd())) { - return getBranchHead(); + const gitBranchHead = getGitBranchHead(); + + if (gitBranchHead) { + return gitBranchHead; } else { throw new Error("Could not return a release name"); } From e5cd5bc2e1376f72316d2a80f1c44922260299aa Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 24 Aug 2022 16:41:39 +0200 Subject: [PATCH 031/640] feat(sourcemaps): replace sourcemaps cli upload (#33) Co-authored-by: Luca Forstner --- .../playground/vite.config.smallNodeApp.js | 2 +- packages/unplugin/package.json | 1 + packages/unplugin/rollup.config.js | 4 +- packages/unplugin/src/index.ts | 1 + packages/unplugin/src/sentry/api.ts | 46 ++++++++++- packages/unplugin/src/sentry/facade.ts | 78 ++++++++++++++++--- packages/unplugin/src/sentry/sourcemaps.ts | 38 +++++++++ packages/unplugin/src/types.ts | 2 +- 8 files changed, 153 insertions(+), 19 deletions(-) create mode 100644 packages/unplugin/src/sentry/sourcemaps.ts diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index dc60482069f2..e1b9d13bc9ed 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -23,7 +23,7 @@ export default defineConfig({ project: process.env.SENTRY_PROJECT, debug: true, debugLogging: true, - release: "hackweek-0.0.7", + release: "0.0.10", include: "out/vite-smallNodeApp", cleanArtifacts: true, }), diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index a50e95175d45..b46dc6ad079b 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -22,6 +22,7 @@ "dependencies": { "@sentry/cli": "1.74.5", "axios": "^0.27.2", + "form-data": "^4.0.0", "magic-string": "0.26.2", "unplugin": "0.9.4" }, diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js index a8da0590bd0f..588b923cf5e2 100644 --- a/packages/unplugin/rollup.config.js +++ b/packages/unplugin/rollup.config.js @@ -3,6 +3,7 @@ import resolve from "@rollup/plugin-node-resolve"; import babel from "@rollup/plugin-babel"; import packageJson from "./package.json"; import json from "@rollup/plugin-json"; +import modulePackage from "module"; const input = ["src/index.ts"]; @@ -10,8 +11,7 @@ const extensions = [".js", ".ts"]; export default { input, - // external: [...Object.keys(packageJson.dependencies)], - external: ["path", "unplugin", "@sentry/cli"], + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], plugins: [ resolve({ extensions, preferBuiltins: true }), commonjs(), diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index a52f811bc53f..f5e263ab9d31 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -12,6 +12,7 @@ const defaultOptions: Omit = { cleanArtifacts: false, finalize: true, url: "https://sentry.io", + ext: ["js", "map", "jsbundle", "bundle"], }; /** diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index 0caf51fe2954..3d6b1db9ed85 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -1,5 +1,7 @@ import axios from "axios"; +import FormData from "form-data"; + // We need to ignore the import because the package.json is not part of the TS project as configured in tsconfig.json // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -21,9 +23,9 @@ sentryApiAxiosInstance.interceptors.request.use((config) => { }); export async function createRelease({ - release, - project, org, + project, + release, authToken, sentryUrl, }: { @@ -54,10 +56,10 @@ export async function createRelease({ export async function deleteAllReleaseArtifacts({ org, + project, release, - sentryUrl, authToken, - project, + sentryUrl, }: { org: string; release: string; @@ -107,3 +109,39 @@ export async function updateRelease({ throw new Error("Something went wrong while creating a release"); } } + +export async function uploadReleaseFile({ + org, + project, + release, + authToken, + sentryUrl, + filename, + fileContent, +}: { + org: string; + release: string; + sentryUrl: string; + authToken: string; + project: string; + filename: string; + fileContent: string; +}) { + const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`; + + const form = new FormData(); + form.append("name", filename); + form.append("file", Buffer.from(fileContent, "utf-8"), { filename }); + + try { + await sentryApiAxiosInstance.post(requestUrl, form, { + headers: { + Authorization: `Bearer ${authToken}`, + "Content-Type": "multipart/form-data", + }, + }); + } catch (e) { + // TODO: Maybe do some more sopthisticated error handling here + throw new Error(`Something went wrong while uploading file ${filename}`); + } +} diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index b6e012fa8cb4..26bebb379738 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -9,7 +9,8 @@ import { makeSentryCli } from "./cli"; import { Options } from "../types"; import SentryCli from "@sentry/cli"; -import { createRelease, deleteAllReleaseArtifacts, updateRelease } from "./api"; +import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; +import { getFiles } from "./sourcemaps"; export type SentryFacade = { createNewRelease: () => Promise; @@ -76,12 +77,25 @@ async function uploadSourceMaps( release: string, options: Options ): Promise { - /** - * One or more paths to ignore during upload. Overrides entries in ignoreFile file. - */ + // This is what Sentry CLI does: + // TODO: 0. Preprocess source maps + // - (Out of scope for now) + // - For rewriting source maps see https://github.com/getsentry/rust-sourcemap/blob/master/src/types.rs#L763 + // TODO: 1. Creates a new release to make sure it exists + // - can we assume that the release will exist b/c we don't give unplugin users the + // option to skip this step? + // TODO: 2. download already uploaded files and get their checksums + // TODO: 3. identify new or changed files (by comparing checksums) + // TODO: 4. upload new and changed files + // - CLI asks API for chunk options https://github.com/getsentry/sentry-cli/blob/7b8466885d9cfd51aee6fdc041eca9f645026303/src/utils/file_upload.rs#L106-L112 + // - WTF? + // - don't upload more than 20k files + // - upload files concurrently + // - 2 options: chunked upload (multiple files per chunk) or single file upload const { include, + ext, // ignore, // ignoreFile, // rewrite, @@ -91,16 +105,58 @@ async function uploadSourceMaps( // validate, // urlPrefix, // urlSuffix, - // ext, + org, + project, + authToken, + url, } = options; - //TODO: sort out mess between Sentry CLI options and WebPack plugin options (ideally, - // we normalize everything before and don't diverge with options between our - // own CLI implementation and the plugin. - // I don't want to do too much for this right now b/c we'll eventually get rid of the CLI anyway - const uploadSourceMapsOptions = { include: typeof include === "string" ? [include] : include }; + // TODO: pull these checks out of here and simplify them + if (authToken === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "authToken" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (org === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "org" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (url === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "url" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } else if (project === undefined) { + // eslint-disable-next-line no-console + console.log('[Sentry-plugin] WARNING: Missing "project" option. Will not create release.'); + return Promise.resolve("nothing to do here"); + } + + // eslint-disable-next-line no-console + console.log("[Sentry-plugin] Uploading Sourcemaps."); + + //TODO: Remove this once we have internal options. this property must always be present + const fileExtensions = ext || []; + const files = getFiles(include, fileExtensions); - return cli.releases.uploadSourceMaps(release, uploadSourceMapsOptions); + // eslint-disable-next-line no-console + console.log(`[Sentry-plugin] > Found ${files.length} files to upload.`); + + return Promise.all( + files.map((file) => + uploadReleaseFile({ + org, + project, + release, + authToken, + sentryUrl: url, + filename: file.name, + fileContent: file.content, + }) + ) + ).then(() => { + // eslint-disable-next-line no-console + console.log("[Sentry-plugin] Successfully uploaded sourcemaps."); + return "done"; + }); } async function finalizeRelease( diff --git a/packages/unplugin/src/sentry/sourcemaps.ts b/packages/unplugin/src/sentry/sourcemaps.ts new file mode 100644 index 000000000000..5738e6061d30 --- /dev/null +++ b/packages/unplugin/src/sentry/sourcemaps.ts @@ -0,0 +1,38 @@ +import path from "path"; +import fs from "fs"; + +export type FileRecord = { + name: string; + content: string; +}; + +export function getFiles(path: string, allowedExtensions: string[]): FileRecord[] { + const includedFiles = getAllIncludedFileNames(path, allowedExtensions, []); + + return includedFiles.map((filename) => { + const content = fs.readFileSync(filename, { encoding: "utf-8" }); + return { name: "~" + filename.replace(new RegExp(`^${path}`), ""), content }; + }); +} + +function getAllIncludedFileNames( + dirPath: string, + allowedExtensions: string[], + accFiles: string[] +): string[] { + const files = fs.readdirSync(dirPath); + + files + .map((file) => path.join(dirPath, "/", file)) + .forEach((file) => { + if (fs.statSync(file).isDirectory()) { + accFiles.concat(getAllIncludedFileNames(file, allowedExtensions, accFiles)); + } else { + if (allowedExtensions.some((e) => file.endsWith(e))) { + accFiles.push(file); + } + } + }); + + return accFiles; +} diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index 99ba7d6029be..f1db088be955 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -20,7 +20,7 @@ export type Options = { include: string; // | Array; // ignoreFile: string // ignore: string | string[] - // ext: string[] + ext?: string[]; // urlPrefix: string, // urlSuffix: string, // validate: boolean From 5851384ad9a9868ea113641e73c42b664997282f Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Wed, 24 Aug 2022 17:07:24 +0200 Subject: [PATCH 032/640] chore(license): add licence and enforce complience (#27) * chore(license): add licenses * chore(license): enforce license complience * chore(LICENSE): use MIT license Co-authored-by: Luca Forstner --- .../workflows/enforce-license-complience.yml | 16 ++++++++++ LICENSE | 29 +++++++++++++++++++ packages/unplugin/LICENSE | 29 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 .github/workflows/enforce-license-complience.yml create mode 100644 LICENSE create mode 100644 packages/unplugin/LICENSE diff --git a/.github/workflows/enforce-license-complience.yml b/.github/workflows/enforce-license-complience.yml new file mode 100644 index 000000000000..8ed039cff166 --- /dev/null +++ b/.github/workflows/enforce-license-complience.yml @@ -0,0 +1,16 @@ +name: Enforce License Compliance + +on: + push: + branches: [master, main, release/*] + pull_request: + branches: [master, main] + +jobs: + enforce-license-compliance: + runs-on: ubuntu-latest + steps: + - name: "Enforce License Compliance" + uses: getsentry/action-enforce-license-compliance@main + with: + fossa_api_key: ${{ secrets.FOSSA_API_KEY }} diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/unplugin/LICENSE b/packages/unplugin/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/packages/unplugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 71208811c34eaed8f0e2ac9db0ea196a983d2955 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 Aug 2022 17:10:38 +0200 Subject: [PATCH 033/640] ref(cli): Remove Sentry CLI (#34) --- packages/playground/package.json | 1 - packages/unplugin/package.json | 1 - packages/unplugin/src/sentry/cli.ts | 52 ---------------------- packages/unplugin/src/sentry/facade.ts | 24 +++------- packages/unplugin/src/sentry/sourcemaps.ts | 2 +- yarn.lock | 25 +---------- 6 files changed, 8 insertions(+), 97 deletions(-) delete mode 100644 packages/unplugin/src/sentry/cli.ts diff --git a/packages/playground/package.json b/packages/playground/package.json index 2fb5f73e3e4b..7cdba0dd32f0 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -16,7 +16,6 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/cli": "1.74.5", "@sentry/integrations": "^7.11.1", "@sentry/node": "^7.11.1", "@sentry/unplugin": "*", diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index b46dc6ad079b..27cf7cc1f2a5 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -20,7 +20,6 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/cli": "1.74.5", "axios": "^0.27.2", "form-data": "^4.0.0", "magic-string": "0.26.2", diff --git a/packages/unplugin/src/sentry/cli.ts b/packages/unplugin/src/sentry/cli.ts deleted file mode 100644 index 480adb789dcb..000000000000 --- a/packages/unplugin/src/sentry/cli.ts +++ /dev/null @@ -1,52 +0,0 @@ -import SentryCli from "@sentry/cli"; -import { Options } from "../types"; - -/** Creates a new Sentry CLI instance. */ -export function makeSentryCli(options: Options) { - //TODO: pass config file instead of null - const cli = new SentryCli(options.configFile, { - silent: false, //TODO read from options - org: options.org, - project: options.project, - authToken: options.authToken, - url: options.url, - vcsRemote: "origin", //TODO set from options, - }); - - // Let's not worry about dry run for now - // if (this.isDryRun()) { - // this.outputDebug("DRY Run Mode"); - - // return { - // releases: { - // proposeVersion: () => - // cli.releases.proposeVersion().then((version) => { - // this.outputDebug("Proposed version:\n", version); - // return version; - // }), - // new: (release) => { - // this.outputDebug("Creating new release:\n", release); - // return Promise.resolve(release); - // }, - // uploadSourceMaps: (release, config) => { - // this.outputDebug("Calling upload-sourcemaps with:\n", config); - // return Promise.resolve(release, config); - // }, - // finalize: (release) => { - // this.outputDebug("Finalizing release:\n", release); - // return Promise.resolve(release); - // }, - // setCommits: (release, config) => { - // this.outputDebug("Calling set-commits with:\n", config); - // return Promise.resolve(release, config); - // }, - // newDeploy: (release, config) => { - // this.outputDebug("Calling deploy with:\n", config); - // return Promise.resolve(release, config); - // }, - // }, - // }; - // } - - return cli; -} diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index 26bebb379738..46551a1ea5c3 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -6,9 +6,7 @@ // - huge download // - unnecessary functionality -import { makeSentryCli } from "./cli"; import { Options } from "../types"; -import SentryCli from "@sentry/cli"; import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; import { getFiles } from "./sourcemaps"; @@ -26,14 +24,12 @@ export type SentryFacade = { * a release on Sentry. This includes uploading source maps and finalizing the release */ export function makeSentryFacade(release: string, options: Options): SentryFacade { - const cli = makeSentryCli(options); - return { createNewRelease: () => createNewRelease(release, options), - cleanArtifacts: () => cleanArtifacts(cli, release, options), - uploadSourceMaps: () => uploadSourceMaps(cli, release, options), + cleanArtifacts: () => cleanArtifacts(release, options), + uploadSourceMaps: () => uploadSourceMaps(release, options), setCommits: () => setCommits(/* release */), - finalizeRelease: () => finalizeRelease(cli, release, options), + finalizeRelease: () => finalizeRelease(release, options), addDeploy: () => addDeploy(/* release */), }; } @@ -72,11 +68,7 @@ async function createNewRelease(release: string, options: Options): Promise { +async function uploadSourceMaps(release: string, options: Options): Promise { // This is what Sentry CLI does: // TODO: 0. Preprocess source maps // - (Out of scope for now) @@ -159,11 +151,7 @@ async function uploadSourceMaps( }); } -async function finalizeRelease( - _cli: SentryCli, - release: string, - options: Options -): Promise { +async function finalizeRelease(release: string, options: Options): Promise { if (options.finalize) { const { authToken, org, url, project } = options; if (!authToken || !org || !url || !project) { @@ -189,7 +177,7 @@ async function finalizeRelease( return Promise.resolve("nothing to do here"); } -async function cleanArtifacts(_cli: SentryCli, release: string, options: Options): Promise { +async function cleanArtifacts(release: string, options: Options): Promise { if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { diff --git a/packages/unplugin/src/sentry/sourcemaps.ts b/packages/unplugin/src/sentry/sourcemaps.ts index 5738e6061d30..fc726019329f 100644 --- a/packages/unplugin/src/sentry/sourcemaps.ts +++ b/packages/unplugin/src/sentry/sourcemaps.ts @@ -26,7 +26,7 @@ function getAllIncludedFileNames( .map((file) => path.join(dirPath, "/", file)) .forEach((file) => { if (fs.statSync(file).isDirectory()) { - accFiles.concat(getAllIncludedFileNames(file, allowedExtensions, accFiles)); + accFiles = accFiles.concat(getAllIncludedFileNames(file, allowedExtensions, accFiles)); } else { if (allowedExtensions.some((e) => file.endsWith(e))) { accFiles.push(file); diff --git a/yarn.lock b/yarn.lock index be8641fe6094..5e5b54f64df8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2112,19 +2112,6 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sentry/cli@1.74.5": - version "1.74.5" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.5.tgz#4a5c622913087c9ab6f82994da9a7526423779b8" - integrity sha512-Ze1ec306ZWHtrxKypOJ8nhtFqkrx2f/6bRH+DcJzEQ3bBePQ0ZnqJTTe4BBHADYBtxFIaUWzCZ6DquLz2Zv/sw== - dependencies: - https-proxy-agent "^5.0.0" - mkdirp "^0.5.5" - node-fetch "^2.6.7" - npmlog "^4.1.2" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - "@sentry/core@7.11.1": version "7.11.1" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.11.1.tgz#d68e796f3b6428aefd6086a1db00118df7a9a9e4" @@ -8926,11 +8913,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -8998,11 +8980,6 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -11046,7 +11023,7 @@ which@1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== From 1e93dfc1f5380f5d19dd6a6190faeee1f0b16d04 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 25 Aug 2022 16:58:33 +0200 Subject: [PATCH 034/640] chore(monorepo): Replace Lerna with Nx (#37) This PR replaces our current monorepo manager, lerna, with Nx. We don't do any fancy config atm but just replace the `lerna run` commands with the respective Nx commands. Added bonus: We now get fancy dependency graphs by running `yarn build:graph` ;) --- lerna.json | 7 - nx.json | 24 + package.json | 17 +- packages/integration-tests/package.json | 6 +- packages/playground/package.json | 2 +- packages/unplugin/package.json | 4 +- yarn.lock | 4625 +++++++---------------- 7 files changed, 1323 insertions(+), 3362 deletions(-) delete mode 100644 lerna.json create mode 100644 nx.json diff --git a/lerna.json b/lerna.json deleted file mode 100644 index ad32ca8d6f18..000000000000 --- a/lerna.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "lerna": "3.4.0", - "version": "7.3.0", - "packages": "packages/*", - "npmClient": "yarn", - "useWorkspaces": true -} diff --git a/nx.json b/nx.json new file mode 100644 index 000000000000..c2b76c2d9944 --- /dev/null +++ b/nx.json @@ -0,0 +1,24 @@ +{ + "extends": "nx/presets/npm.json", + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "npmScope": "sentry", + "affected": { + "defaultBase": "main" + }, + "tasksRunnerOptions": { + "default": { + "runner": "nx/tasks-runners/default", + "options": { + "cacheableOperations": ["build", "lint", "test"] + } + } + }, + "targetDefaults": { + "lint": { + "dependsOn": ["^build", "build"] + }, + "test": { + "dependsOn": ["^build"] + } + } +} diff --git a/package.json b/package.json index eade3485451e..cb4782946056 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "sentry-unplugin-root", + "name": "@sentry/unplugin-root", "version": "0.0.0", "description": "Root of the sentry unplugin monorepo.", "repository": "git@github.com:lforst/sentry-unplugin.git", @@ -8,18 +8,21 @@ "packages/*" ], "scripts": { - "build": "lerna run --stream build", - "build:watch": "lerna run --parallel build:watch", - "check:types": "lerna run --parallel check:types", - "test": "lerna run --parallel test", - "lint": "lerna run --parallel lint", + "build": "nx run-many --target=build --all", + "build:watch": "nx run-many --target=build:watch --all", + "build:graph": "nx graph", + "check:types": "nx run-many --target=check:types --all", + "test": "nx run-many --target=test --all", + "lint": "nx run-many --target=lint --all", "check:formatting": "prettier --check .", "fix:formatting": "prettier --write .", "prepare": "husky install" }, "devDependencies": { + "@nrwl/cli": "14.5.10", + "@nrwl/workspace": "14.5.10", + "nx": "14.5.10", "husky": "^8.0.0", - "lerna": "3.13.4", "prettier": "^2.7.1", "pretty-quick": "^3.1.3" } diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5d9878d4d863..37bf574c0629 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,5 +1,5 @@ { - "name": "integration-tests", + "name": "@sentry/integration-tests", "version": "1.0.0", "private": true, "scripts": { @@ -14,12 +14,12 @@ "@types/jest": "^28.1.3", "@sentry/unplugin": "*", "@types/webpack4": "npm:@types/webpack@4.41.32", - "esbuild": "0.14.49", "eslint-config-local": "*", + "sentry-unplugin-tsconfigs": "*", + "esbuild": "0.14.49", "jest": "^28.1.3", "npm-run-all": "4.1.5", "rollup": "2.77.0", - "sentry-unplugin-tsconfigs": "*", "eslint": "^8.18.0", "ts-node": "^10.9.1", "vite": "3.0.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 7cdba0dd32f0..e0d23ef50829 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,5 +1,5 @@ { - "name": "playground", + "name": "@sentry/playground", "version": "1.0.0", "main": "index.js", "author": "Luca Forstner", diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 27cf7cc1f2a5..423c0837e364 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -37,13 +37,13 @@ "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "eslint-config-local": "*", + "sentry-unplugin-tsconfigs": "*", + "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", - "sentry-unplugin-tsconfigs": "*", "typescript": "^4.7.4" } } diff --git a/yarn.lock b/yarn.lock index 5e5b54f64df8..3fd11dfb3c1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,7 +43,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.11.6", "@babel/core@^7.12.3": +"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== @@ -1029,6 +1029,18 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + "@jest/console@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" @@ -1083,6 +1095,16 @@ dependencies: "@jest/types" "^27.5.1" +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + "@jest/environment@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" @@ -1108,6 +1130,18 @@ expect "^28.1.3" jest-snapshot "^28.1.3" +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + "@jest/fake-timers@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" @@ -1120,6 +1154,15 @@ jest-mock "^28.1.3" jest-util "^28.1.3" +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + "@jest/globals@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" @@ -1129,6 +1172,37 @@ "@jest/expect" "^28.1.3" "@jest/types" "^28.1.3" +"@jest/reporters@27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + 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-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + "@jest/reporters@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" @@ -1167,6 +1241,15 @@ dependencies: "@sinclair/typebox" "^0.24.1" +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + "@jest/source-map@^28.1.2": version "28.1.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" @@ -1176,6 +1259,16 @@ 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.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@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.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" @@ -1186,6 +1279,16 @@ "@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.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + "@jest/test-sequencer@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" @@ -1196,6 +1299,27 @@ jest-haste-map "^28.1.3" slash "^3.0.0" +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + 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 "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/transform@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" @@ -1296,635 +1420,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@lerna/add@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.3.tgz#f4c1674839780e458f0426d4f7b6d0a77b9a2ae9" - integrity sha512-T3/Lsbo9ZFq+vL3ssaHxA8oKikZAPTJTGFe4CRuQgWCDd/M61+51jeWsngdaHpwzSSRDRjxg8fJTG10y10pnfA== - dependencies: - "@lerna/bootstrap" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/npm-conf" "3.13.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - npm-package-arg "^6.1.0" - p-map "^1.2.0" - pacote "^9.5.0" - semver "^5.5.0" - -"@lerna/batch-packages@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.13.0.tgz#697fde5be28822af9d9dca2f750250b90a89a000" - integrity sha512-TgLBTZ7ZlqilGnzJ3xh1KdAHcySfHytgNRTdG9YomfriTU6kVfp1HrXxKJYVGs7ClPUNt2CTFEOkw0tMBronjw== - dependencies: - "@lerna/package-graph" "3.13.0" - "@lerna/validation-error" "3.13.0" - npmlog "^4.1.2" - -"@lerna/bootstrap@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.3.tgz#a0e5e466de5c100b49d558d39139204fc4db5c95" - integrity sha512-2XzijnLHRZOVQh8pwS7+5GR3cG4uh+EiLrWOishCq2TVzkqgjaS3GGBoef7KMCXfWHoLqAZRr/jEdLqfETLVqg== - dependencies: - "@lerna/batch-packages" "3.13.0" - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/has-npm-version" "3.13.3" - "@lerna/npm-install" "3.13.3" - "@lerna/package-graph" "3.13.0" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.13.3" - "@lerna/run-lifecycle" "3.13.0" - "@lerna/run-parallel-batches" "3.13.0" - "@lerna/symlink-binary" "3.13.0" - "@lerna/symlink-dependencies" "3.13.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - get-port "^3.2.0" - multimatch "^2.1.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^1.2.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - read-package-tree "^5.1.6" - semver "^5.5.0" - -"@lerna/changed@3.13.4": - version "3.13.4" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.4.tgz#c69d8a079999e49611dd58987f08437baee81ad4" - integrity sha512-9lfOyRVObasw6L/z7yCSfsEl1QKy0Eamb8t2Krg1deIoAt+cE3JXOdGGC1MhOSli+7f/U9LyLXjJzIOs/pc9fw== - dependencies: - "@lerna/collect-updates" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/listable" "3.13.0" - "@lerna/output" "3.13.0" - "@lerna/version" "3.13.4" - -"@lerna/check-working-tree@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.13.3.tgz#836a3ffd4413a29aca92ccca4a115e4f97109992" - integrity sha512-LoGZvTkne+V1WpVdCTU0XNzFKsQa2AiAFKksGRT0v8NQj6VAPp0jfVYDayTqwaWt2Ne0OGKOFE79Y5LStOuhaQ== - dependencies: - "@lerna/describe-ref" "3.13.3" - "@lerna/validation-error" "3.13.0" - -"@lerna/child-process@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.13.3.tgz#6c084ee5cca9fc9e04d6bf4fc3f743ed26ff190c" - integrity sha512-3/e2uCLnbU+bydDnDwyadpOmuzazS01EcnOleAnuj9235CU2U97DH6OyoG1EW/fU59x11J+HjIqovh5vBaMQjQ== - dependencies: - chalk "^2.3.1" - execa "^1.0.0" - strong-log-transformer "^2.0.0" - -"@lerna/clean@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.3.tgz#5673a1238e0712d31711e7e4e8cb9641891daaea" - integrity sha512-xmNauF1PpmDaKdtA2yuRc23Tru4q7UMO6yB1a/TTwxYPYYsAWG/CBK65bV26J7x4RlZtEv06ztYGMa9zh34UXA== - dependencies: - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/prompt" "3.13.0" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.13.3" - p-map "^1.2.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - -"@lerna/cli@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.13.0.tgz#3d7b357fdd7818423e9681a7b7f2abd106c8a266" - integrity sha512-HgFGlyCZbYaYrjOr3w/EsY18PdvtsTmDfpUQe8HwDjXlPeCCUgliZjXLOVBxSjiOvPeOSwvopwIHKWQmYbwywg== - dependencies: - "@lerna/global-options" "3.13.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^12.0.1" - -"@lerna/collect-updates@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.13.3.tgz#616648da59f0aff4a8e60257795cc46ca6921edd" - integrity sha512-sTpALOAxli/ZS+Mjq6fbmjU9YXqFJ2E4FrE1Ijl4wPC5stXEosg2u0Z1uPY+zVKdM+mOIhLxPVdx83rUgRS+Cg== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/describe-ref" "3.13.3" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^1.0.0" - -"@lerna/command@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.3.tgz#5b20b3f507224573551039e0460bc36c39f7e9d1" - integrity sha512-WHFIQCubJV0T8gSLRNr6exZUxTswrh+iAtJCb86SE0Sa+auMPklE8af7w2Yck5GJfewmxSjke3yrjNxQrstx7w== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/package-graph" "3.13.0" - "@lerna/project" "3.13.1" - "@lerna/validation-error" "3.13.0" - "@lerna/write-log-file" "3.13.0" - dedent "^0.7.0" - execa "^1.0.0" - is-ci "^1.0.10" - lodash "^4.17.5" - npmlog "^4.1.2" - -"@lerna/conventional-commits@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.13.0.tgz#877aa225ca34cca61c31ea02a5a6296af74e1144" - integrity sha512-BeAgcNXuocmLhPxnmKU2Vy8YkPd/Uo+vu2i/p3JGsUldzrPC8iF3IDxH7fuXpEFN2Nfogu7KHachd4tchtOppA== - dependencies: - "@lerna/validation-error" "3.13.0" - conventional-changelog-angular "^5.0.3" - conventional-changelog-core "^3.1.6" - conventional-recommended-bump "^4.0.4" - fs-extra "^7.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - pify "^3.0.0" - semver "^5.5.0" - -"@lerna/create-symlink@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.13.0.tgz#e01133082fe040779712c960683cb3a272b67809" - integrity sha512-PTvg3jAAJSAtLFoZDsuTMv1wTOC3XYIdtg54k7uxIHsP8Ztpt+vlilY/Cni0THAqEMHvfiToel76Xdta4TU21Q== - dependencies: - cmd-shim "^2.0.2" - fs-extra "^7.0.0" - npmlog "^4.1.2" - -"@lerna/create@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.3.tgz#6ded142c54b7f3cea86413c3637b067027b7f55d" - integrity sha512-4M5xT1AyUMwt1gCDph4BfW3e6fZmt0KjTa3FoXkUotf/w/eqTsc2IQ+ULz2+gOFQmtuNbqIZEOK3J4P9ArJJ/A== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/npm-conf" "3.13.0" - "@lerna/validation-error" "3.13.0" - camelcase "^5.0.0" - dedent "^0.7.0" - fs-extra "^7.0.0" - globby "^8.0.1" - init-package-json "^1.10.3" - npm-package-arg "^6.1.0" - p-reduce "^1.0.0" - pacote "^9.5.0" - pify "^3.0.0" - semver "^5.5.0" - slash "^1.0.0" - validate-npm-package-license "^3.0.3" - validate-npm-package-name "^3.0.0" - whatwg-url "^7.0.0" - -"@lerna/describe-ref@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.13.3.tgz#13318513613f6a407d37fc5dc025ec2cfb705606" - integrity sha512-5KcLTvjdS4gU5evW8ESbZ0BF44NM5HrP3dQNtWnOUSKJRgsES8Gj0lq9AlB2+YglZfjEftFT03uOYOxnKto4Uw== - dependencies: - "@lerna/child-process" "3.13.3" - npmlog "^4.1.2" - -"@lerna/diff@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.3.tgz#883cb3a83a956dbfc2c17bc9a156468a5d3fae17" - integrity sha512-/DRS2keYbnKaAC+5AkDyZRGkP/kT7v1GlUS0JGZeiRDPQ1H6PzhX09EgE5X6nj0Ytrm0sUasDeN++CDVvgaI+A== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/validation-error" "3.13.0" - npmlog "^4.1.2" - -"@lerna/exec@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.3.tgz#5d2eda3f6e584f2f15b115e8a4b5bc960ba5de85" - integrity sha512-c0bD4XqM96CTPV8+lvkxzE7mkxiFyv/WNM4H01YvvbFAJzk+S4Y7cBtRkIYFTfkFZW3FLo8pEgtG1ONtIdM+tg== - dependencies: - "@lerna/batch-packages" "3.13.0" - "@lerna/child-process" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/run-parallel-batches" "3.13.0" - "@lerna/validation-error" "3.13.0" - -"@lerna/filter-options@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.13.3.tgz#aa42a4ab78837b8a6c4278ba871d27e92d77c54f" - integrity sha512-DbtQX4eRgrBz1wCFWRP99JBD7ODykYme9ykEK79+RrKph40znhJQRlLg4idogj6IsUEzwo1OHjihCzSfnVo6Cg== - dependencies: - "@lerna/collect-updates" "3.13.3" - "@lerna/filter-packages" "3.13.0" - dedent "^0.7.0" - -"@lerna/filter-packages@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.13.0.tgz#f5371249e7e1a15928e5e88c544a242e0162c21c" - integrity sha512-RWiZWyGy3Mp7GRVBn//CacSnE3Kw82PxE4+H6bQ3pDUw/9atXn7NRX+gkBVQIYeKamh7HyumJtyOKq3Pp9BADQ== - dependencies: - "@lerna/validation-error" "3.13.0" - multimatch "^2.1.0" - npmlog "^4.1.2" - -"@lerna/get-npm-exec-opts@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" - integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== - dependencies: - npmlog "^4.1.2" - -"@lerna/get-packed@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.13.0.tgz#335e40d77f3c1855aa248587d3e0b2d8f4b06e16" - integrity sha512-EgSim24sjIjqQDC57bgXD9l22/HCS93uQBbGpkzEOzxAVzEgpZVm7Fm1t8BVlRcT2P2zwGnRadIvxTbpQuDPTg== - dependencies: - fs-extra "^7.0.0" - ssri "^6.0.1" - tar "^4.4.8" - -"@lerna/github-client@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.13.3.tgz#bcf9b4ff40bdd104cb40cd257322f052b41bb9ce" - integrity sha512-fcJkjab4kX0zcLLSa/DCUNvU3v8wmy2c1lhdIbL7s7gABmDcV0QZq93LhnEee3VkC9UpnJ6GKG4EkD7eIifBnA== - dependencies: - "@lerna/child-process" "3.13.3" - "@octokit/plugin-enterprise-rest" "^2.1.1" - "@octokit/rest" "^16.16.0" - git-url-parse "^11.1.2" - npmlog "^4.1.2" - -"@lerna/global-options@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" - integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== - -"@lerna/has-npm-version@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.13.3.tgz#167e3f602a2fb58f84f93cf5df39705ca6432a2d" - integrity sha512-mQzoghRw4dBg0R9FFfHrj0TH0glvXyzdEZmYZ8Isvx5BSuEEwpsryoywuZSdppcvLu8o7NAdU5Tac8cJ/mT52w== - dependencies: - "@lerna/child-process" "3.13.3" - semver "^5.5.0" - -"@lerna/import@3.13.4": - version "3.13.4" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.4.tgz#e9a1831b8fed33f3cbeab3b84c722c9371a2eaf7" - integrity sha512-dn6eNuPEljWsifBEzJ9B6NoaLwl/Zvof7PBUPA4hRyRlqG5sXRn6F9DnusMTovvSarbicmTURbOokYuotVWQQA== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/prompt" "3.13.0" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/validation-error" "3.13.0" - dedent "^0.7.0" - fs-extra "^7.0.0" - p-map-series "^1.0.0" - -"@lerna/init@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.3.tgz#ebd522fee9b9d7d3b2dacb0261eaddb4826851ff" - integrity sha512-bK/mp0sF6jT0N+c+xrbMCqN4xRoiZCXQzlYsyACxPK99KH/mpHv7hViZlTYUGlYcymtew6ZC770miv5A9wF9hA== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/command" "3.13.3" - fs-extra "^7.0.0" - p-map "^1.2.0" - write-json-file "^2.3.0" - -"@lerna/link@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.3.tgz#11124d4a0c8d0b79752fbda3babedfd62dd57847" - integrity sha512-IHhtdhA0KlIdevCsq6WHkI2rF3lHWHziJs2mlrEWAKniVrFczbELON1KJAgdJS1k3kAP/WeWVqmIYZ2hJDxMvg== - dependencies: - "@lerna/command" "3.13.3" - "@lerna/package-graph" "3.13.0" - "@lerna/symlink-dependencies" "3.13.0" - p-map "^1.2.0" - slash "^1.0.0" - -"@lerna/list@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.3.tgz#fa93864d43cadeb4cd540a4e78a52886c57dbe74" - integrity sha512-rLRDsBCkydMq2FL6WY1J/elvnXIjxxRtb72lfKHdvDEqVdquT5Qgt9ci42hwjmcocFwWcFJgF6BZozj5pbc13A== - dependencies: - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/listable" "3.13.0" - "@lerna/output" "3.13.0" - -"@lerna/listable@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.13.0.tgz#babc18442c590b549cf0966d20d75fea066598d4" - integrity sha512-liYJ/WBUYP4N4MnSVZuLUgfa/jy3BZ02/1Om7xUY09xGVSuNVNEeB8uZUMSC+nHqFHIsMPZ8QK9HnmZb1E/eTA== - dependencies: - "@lerna/batch-packages" "3.13.0" - chalk "^2.3.1" - columnify "^1.5.4" - -"@lerna/log-packed@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.13.0.tgz#497b5f692a8d0e3f669125da97b0dadfd9e480f3" - integrity sha512-Rmjrcz+6aM6AEcEVWmurbo8+AnHOvYtDpoeMMJh9IZ9SmZr2ClXzmD7wSvjTQc8BwOaiWjjC/ukcT0UYA2m7wg== - dependencies: - byte-size "^4.0.3" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" - -"@lerna/npm-conf@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.13.0.tgz#6b434ed75ff757e8c14381b9bbfe5d5ddec134a7" - integrity sha512-Jg2kANsGnhg+fbPEzE0X9nX5oviEAvWj0nYyOkcE+cgWuT7W0zpnPXC4hA4C5IPQGhwhhh0IxhWNNHtjTuw53g== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -"@lerna/npm-dist-tag@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.13.0.tgz#49ecbe0e82cbe4ad4a8ea6de112982bf6c4e6cd4" - integrity sha512-mcuhw34JhSRFrbPn0vedbvgBTvveG52bR2lVE3M3tfE8gmR/cKS/EJFO4AUhfRKGCTFn9rjaSEzlFGYV87pemQ== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.1.0" - npm-registry-fetch "^3.9.0" - npmlog "^4.1.2" - -"@lerna/npm-install@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.13.3.tgz#9b09852732e51c16d2e060ff2fd8bfbbb49cf7ba" - integrity sha512-7Jig9MLpwAfcsdQ5UeanAjndChUjiTjTp50zJ+UZz4CbIBIDhoBehvNMTCL2G6pOEC7sGEg6sAqJINAqred6Tg== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/get-npm-exec-opts" "3.13.0" - fs-extra "^7.0.0" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.2" - write-pkg "^3.1.0" - -"@lerna/npm-publish@3.13.2": - version "3.13.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.13.2.tgz#ad713ca6f91a852687d7d0e1bda7f9c66df21768" - integrity sha512-HMucPyEYZfom5tRJL4GsKBRi47yvSS2ynMXYxL3kO0ie+j9J7cb0Ir8NmaAMEd3uJWJVFCPuQarehyfTDZsSxg== - dependencies: - "@lerna/run-lifecycle" "3.13.0" - figgy-pudding "^3.5.1" - fs-extra "^7.0.0" - libnpmpublish "^1.1.1" - npm-package-arg "^6.1.0" - npmlog "^4.1.2" - pify "^3.0.0" - read-package-json "^2.0.13" - -"@lerna/npm-run-script@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.13.3.tgz#9bb6389ed70cd506905d6b05b6eab336b4266caf" - integrity sha512-qR4o9BFt5hI8Od5/DqLalOJydnKpiQFEeN0h9xZi7MwzuX1Ukwh3X22vqsX4YRbipIelSFtrDzleNVUm5jj0ow== - dependencies: - "@lerna/child-process" "3.13.3" - "@lerna/get-npm-exec-opts" "3.13.0" - npmlog "^4.1.2" - -"@lerna/output@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" - integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== - dependencies: - npmlog "^4.1.2" - -"@lerna/pack-directory@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.13.1.tgz#5ad4d0945f86a648f565e24d53c1e01bb3a912d1" - integrity sha512-kXnyqrkQbCIZOf1054N88+8h0ItC7tUN5v9ca/aWpx298gsURpxUx/1TIKqijL5TOnHMyIkj0YJmnH/PyBVLKA== - dependencies: - "@lerna/get-packed" "3.13.0" - "@lerna/package" "3.13.0" - "@lerna/run-lifecycle" "3.13.0" - figgy-pudding "^3.5.1" - npm-packlist "^1.4.1" - npmlog "^4.1.2" - tar "^4.4.8" - temp-write "^3.4.0" - -"@lerna/package-graph@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.13.0.tgz#607062f8d2ce22b15f8d4a0623f384736e67f760" - integrity sha512-3mRF1zuqFE1HEFmMMAIggXy+f+9cvHhW/jzaPEVyrPNLKsyfJQtpTNzeI04nfRvbAh+Gd2aNksvaW/w3xGJnnw== - dependencies: - "@lerna/validation-error" "3.13.0" - npm-package-arg "^6.1.0" - semver "^5.5.0" - -"@lerna/package@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.13.0.tgz#4baeebc49a57fc9b31062cc59f5ee38384429fc8" - integrity sha512-kSKO0RJQy093BufCQnkhf1jB4kZnBvL7kK5Ewolhk5gwejN+Jofjd8DGRVUDUJfQ0CkW1o6GbUeZvs8w8VIZDg== - dependencies: - load-json-file "^4.0.0" - npm-package-arg "^6.1.0" - write-pkg "^3.1.0" - -"@lerna/project@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.13.1.tgz#bce890f60187bd950bcf36c04b5260642e295e79" - integrity sha512-/GoCrpsCCTyb9sizk1+pMBrIYchtb+F1uCOn3cjn9yenyG/MfYEnlfrbV5k/UDud0Ei75YBLbmwCbigHkAKazQ== - dependencies: - "@lerna/package" "3.13.0" - "@lerna/validation-error" "3.13.0" - cosmiconfig "^5.1.0" - dedent "^0.7.0" - dot-prop "^4.2.0" - glob-parent "^3.1.0" - globby "^8.0.1" - load-json-file "^4.0.0" - npmlog "^4.1.2" - p-map "^1.2.0" - resolve-from "^4.0.0" - write-json-file "^2.3.0" - -"@lerna/prompt@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.13.0.tgz#53571462bb3f5399cc1ca6d335a411fe093426a5" - integrity sha512-P+lWSFokdyvYpkwC3it9cE0IF2U5yy2mOUbGvvE4iDb9K7TyXGE+7lwtx2thtPvBAfIb7O13POMkv7df03HJeA== - dependencies: - inquirer "^6.2.0" - npmlog "^4.1.2" - -"@lerna/publish@3.13.4": - version "3.13.4" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.4.tgz#25b678c285110897a7fc5198a35bdfa9db7f9cc1" - integrity sha512-v03pabiPlqCDwX6cVNis1PDdT6/jBgkVb5Nl4e8wcJXevIhZw3ClvtI94gSZu/wdoVFX0RMfc8QBVmaimSO0qg== - dependencies: - "@lerna/batch-packages" "3.13.0" - "@lerna/check-working-tree" "3.13.3" - "@lerna/child-process" "3.13.3" - "@lerna/collect-updates" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/describe-ref" "3.13.3" - "@lerna/log-packed" "3.13.0" - "@lerna/npm-conf" "3.13.0" - "@lerna/npm-dist-tag" "3.13.0" - "@lerna/npm-publish" "3.13.2" - "@lerna/output" "3.13.0" - "@lerna/pack-directory" "3.13.1" - "@lerna/prompt" "3.13.0" - "@lerna/pulse-till-done" "3.13.0" - "@lerna/run-lifecycle" "3.13.0" - "@lerna/run-parallel-batches" "3.13.0" - "@lerna/validation-error" "3.13.0" - "@lerna/version" "3.13.4" - figgy-pudding "^3.5.1" - fs-extra "^7.0.0" - libnpmaccess "^3.0.1" - npm-package-arg "^6.1.0" - npm-registry-fetch "^3.9.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^1.2.0" - p-pipe "^1.2.0" - p-reduce "^1.0.0" - pacote "^9.5.0" - semver "^5.5.0" - -"@lerna/pulse-till-done@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" - integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== - dependencies: - npmlog "^4.1.2" - -"@lerna/resolve-symlink@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.13.0.tgz#3e6809ef53b63fe914814bfa071cd68012e22fbb" - integrity sha512-Lc0USSFxwDxUs5JvIisS8JegjA6SHSAWJCMvi2osZx6wVRkEDlWG2B1JAfXUzCMNfHoZX0/XX9iYZ+4JIpjAtg== - dependencies: - fs-extra "^7.0.0" - npmlog "^4.1.2" - read-cmd-shim "^1.0.1" - -"@lerna/rimraf-dir@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.13.3.tgz#3a8e71317fde853893ef0262bc9bba6a180b7227" - integrity sha512-d0T1Hxwu3gpYVv73ytSL+/Oy8JitsmvOYUR5ouRSABsmqS7ZZCh5t6FgVDDGVXeuhbw82+vuny1Og6Q0k4ilqw== - dependencies: - "@lerna/child-process" "3.13.3" - npmlog "^4.1.2" - path-exists "^3.0.0" - rimraf "^2.6.2" - -"@lerna/run-lifecycle@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.13.0.tgz#d8835ee83425edee40f687a55f81b502354d3261" - integrity sha512-oyiaL1biZdjpmjh6X/5C4w07wNFyiwXSSHH5GQB4Ay4BPwgq9oNhCcxRoi0UVZlZ1YwzSW8sTwLgj8emkIo3Yg== - dependencies: - "@lerna/npm-conf" "3.13.0" - figgy-pudding "^3.5.1" - npm-lifecycle "^2.1.0" - npmlog "^4.1.2" - -"@lerna/run-parallel-batches@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.13.0.tgz#0276bb4e7cd0995297db82d134ca2bd08d63e311" - integrity sha512-bICFBR+cYVF1FFW+Tlm0EhWDioTUTM6dOiVziDEGE1UZha1dFkMYqzqdSf4bQzfLS31UW/KBd/2z8jy2OIjEjg== - dependencies: - p-map "^1.2.0" - p-map-series "^1.0.0" - -"@lerna/run@3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.3.tgz#0781c82d225ef6e85e28d3e763f7fc090a376a21" - integrity sha512-ygnLIfIYS6YY1JHWOM4CsdZiY8kTYPsDFOLAwASlRnlAXF9HiMT08GFXLmMHIblZJ8yJhsM2+QgraCB0WdxzOQ== - dependencies: - "@lerna/batch-packages" "3.13.0" - "@lerna/command" "3.13.3" - "@lerna/filter-options" "3.13.3" - "@lerna/npm-run-script" "3.13.3" - "@lerna/output" "3.13.0" - "@lerna/run-parallel-batches" "3.13.0" - "@lerna/timer" "3.13.0" - "@lerna/validation-error" "3.13.0" - p-map "^1.2.0" - -"@lerna/symlink-binary@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.13.0.tgz#36a9415d468afcb8105750296902f6f000a9680d" - integrity sha512-obc4Y6jxywkdaCe+DB0uTxYqP0IQ8mFWvN+k/YMbwH4G2h7M7lCBWgPy8e7xw/50+1II9tT2sxgx+jMus1sTJg== - dependencies: - "@lerna/create-symlink" "3.13.0" - "@lerna/package" "3.13.0" - fs-extra "^7.0.0" - p-map "^1.2.0" - -"@lerna/symlink-dependencies@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.13.0.tgz#76c23ecabda7824db98a0561364f122b457509cf" - integrity sha512-7CyN5WYEPkbPLbqHBIQg/YiimBzb5cIGQB0E9IkLs3+racq2vmUNQZn38LOaazQacAA83seB+zWSxlI6H+eXSg== - dependencies: - "@lerna/create-symlink" "3.13.0" - "@lerna/resolve-symlink" "3.13.0" - "@lerna/symlink-binary" "3.13.0" - fs-extra "^7.0.0" - p-finally "^1.0.0" - p-map "^1.2.0" - p-map-series "^1.0.0" - -"@lerna/timer@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" - integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== - -"@lerna/validation-error@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" - integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== - dependencies: - npmlog "^4.1.2" - -"@lerna/version@3.13.4": - version "3.13.4" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.4.tgz#ea23b264bebda425ccbfcdcd1de13ef45a390e59" - integrity sha512-pptWUEgN/lUTQZu34+gfH1g4Uhs7TDKRcdZY9A4T9k6RTOwpKC2ceLGiXdeR+ZgQJAey2C4qiE8fo5Z6Rbc6QA== - dependencies: - "@lerna/batch-packages" "3.13.0" - "@lerna/check-working-tree" "3.13.3" - "@lerna/child-process" "3.13.3" - "@lerna/collect-updates" "3.13.3" - "@lerna/command" "3.13.3" - "@lerna/conventional-commits" "3.13.0" - "@lerna/github-client" "3.13.3" - "@lerna/output" "3.13.0" - "@lerna/prompt" "3.13.0" - "@lerna/run-lifecycle" "3.13.0" - "@lerna/validation-error" "3.13.0" - chalk "^2.3.1" - dedent "^0.7.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^1.2.0" - p-pipe "^1.2.0" - p-reduce "^1.0.0" - p-waterfall "^1.0.0" - semver "^5.5.0" - slash "^1.0.0" - temp-write "^3.4.0" - -"@lerna/write-log-file@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" - integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^2.3.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1938,11 +1433,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - "@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" @@ -1951,117 +1441,107 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@octokit/auth-token@^2.4.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/plugin-enterprise-rest@^2.1.1": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.2.2.tgz#c0e22067a043e19f96ff9c7832e2a3019f9be75c" - integrity sha512-CTZr64jZYhGWNTDGlSJ2mvIlFsm9OEO3LqWn9I/gmoHI4jRBp4kpHoFYNemG4oA75zUAcmbuWblb7jjP877YZw== - -"@octokit/plugin-paginate-rest@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" - integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== - dependencies: - "@octokit/types" "^2.0.1" - -"@octokit/plugin-request-log@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" - integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== - dependencies: - "@octokit/types" "^2.0.1" - deprecation "^2.3.1" - -"@octokit/request-error@^1.0.2": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" - integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.2.0": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@^16.16.0": - version "16.43.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" - integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== - dependencies: - "@octokit/auth-token" "^2.4.0" - "@octokit/plugin-paginate-rest" "^1.1.1" - "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "2.4.0" - "@octokit/request" "^5.2.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": - version "2.16.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" - integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== +"@nrwl/cli@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.5.10.tgz#826c06a9a272523424f0c5690f5d745260ed1ea1" + integrity sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ== + dependencies: + nx "14.5.10" + +"@nrwl/devkit@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.5.10.tgz#b87bc3dad8e6d019c76adf7f65a56af19df70283" + integrity sha512-YVT0MRvyXwe0uczUZK4XUi1f2iLAqklFMfAoqwfgcgWToH8xN06NSlyUphD4eLHFgem3Sd0kimAJVsnse/PTlA== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tslib "^2.3.0" + +"@nrwl/jest@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.5.10.tgz#1e808608665660c59e4b3026ba0eab7f86153163" + integrity sha512-gGqghwDcpBhk8TNK2Gfp/5PWqnnAPUjNfSCOz39kk9ZBtsyloozGwjg/VEF3k2p9uCifRfAyZOpDrSdALxBpdA== + dependencies: + "@jest/reporters" "27.5.1" + "@jest/test-result" "27.5.1" + "@nrwl/devkit" "14.5.10" + "@phenomnomnominal/tsquery" "4.1.1" + chalk "4.1.0" + dotenv "~10.0.0" + identity-obj-proxy "3.0.0" + jest-config "27.5.1" + jest-resolve "27.5.1" + jest-util "27.5.1" + resolve.exports "1.1.0" + rxjs "^6.5.4" + tslib "^2.3.0" + +"@nrwl/linter@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-14.5.10.tgz#c9c78c796667f985ebbc4e126dc37ae5b14f0921" + integrity sha512-3c6KhSLJmt8wMkYZw+f/KayPHkM+KV/z+QaYQL59XY5o9DdYyq6jHjnvu/CuW2JzU97yHkacYbwkSFQlDKCyIg== + dependencies: + "@nrwl/devkit" "14.5.10" + "@nrwl/jest" "14.5.10" + "@phenomnomnominal/tsquery" "4.1.1" + nx "14.5.10" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nrwl/tao@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.5.10.tgz#69c90f8b6e13f2bb521840a5903f7eb4884285ff" + integrity sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA== + dependencies: + nx "14.5.10" + +"@nrwl/workspace@14.5.10": + version "14.5.10" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.5.10.tgz#cf224886a983c53eded62fa3d5e55c80863eca64" + integrity sha512-bJK2O5NcIYhU7z1mmWoONo2+tOt1VUYyOQUUrAcI00hiBhMJPOTwPPN+W5BbJsue95ndH6mRLo2UhTz20U2tNA== + dependencies: + "@nrwl/devkit" "14.5.10" + "@nrwl/jest" "14.5.10" + "@nrwl/linter" "14.5.10" + "@parcel/watcher" "2.0.4" + chalk "4.1.0" + chokidar "^3.5.1" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + dotenv "~10.0.0" + enquirer "~2.3.6" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^10.1.0" + glob "7.1.4" + ignore "^5.0.4" + minimatch "3.0.5" + npm-run-path "^4.0.1" + nx "14.5.10" + open "^8.4.0" + rxjs "^6.5.4" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.3.0" + yargs "^17.4.0" + yargs-parser "21.0.1" + +"@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== dependencies: - "@types/node" ">= 8" + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== +"@phenomnomnominal/tsquery@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== dependencies: - "@octokit/openapi-types" "^12.11.0" + esquery "^1.0.1" "@rollup/plugin-babel@5.3.1": version "5.3.1" @@ -2180,6 +1660,13 @@ dependencies: type-detect "4.0.8" +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" @@ -2300,6 +1787,11 @@ resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -2320,7 +1812,7 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== -"@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== @@ -2346,7 +1838,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.18.0" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.0.tgz#8134fd78cb39567465be65b9fdc16d378095f41f" integrity sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw== @@ -2418,7 +1910,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/graceful-fs@^4.1.3": +"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== @@ -2464,6 +1956,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -2474,21 +1971,11 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/node@*", "@types/node@>= 8", "@types/node@^18.6.3": +"@types/node@*", "@types/node@^18.6.3": version "18.7.11" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.11.tgz#486e72cfccde88da24e1f23ff1b7d8bfb64e6250" integrity sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw== -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - "@types/prettier@^2.1.5": version "2.7.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" @@ -2944,18 +2431,10 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -JSONStream@^1.0.4, JSONStream@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.8: version "1.3.8" @@ -2965,6 +2444,14 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" @@ -2975,6 +2462,11 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" @@ -2985,18 +2477,16 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -3004,20 +2494,6 @@ agent-base@6: dependencies: debug "4" -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" - ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -3028,7 +2504,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3038,10 +2514,10 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.2.1: version "4.3.2" @@ -3050,21 +2526,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -3105,24 +2566,11 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -3155,31 +2603,16 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== - array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" @@ -3191,23 +2624,11 @@ array-includes@^3.1.5: get-intrinsic "^1.1.1" is-string "^1.0.7" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -3223,32 +2644,11 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - arrify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -3259,18 +2659,6 @@ asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -3289,31 +2677,21 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - axios@^0.27.2: version "0.27.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" @@ -3322,8 +2700,22 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -babel-jest@^28.1.3: - version "28.1.3" +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-jest@^28.1.3: + version "28.1.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== dependencies: @@ -3353,6 +2745,16 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@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.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" @@ -3405,6 +2807,14 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + 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.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" @@ -3418,7 +2828,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3436,18 +2846,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -before-after-hook@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3470,7 +2868,16 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3511,6 +2918,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -3539,6 +2953,11 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -3617,11 +3036,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3641,6 +3055,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -3651,47 +3073,12 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== - -byte-size@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" - integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^12.0.0, cacache@^12.0.2: +cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -3735,72 +3122,12 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q== - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== - -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -3815,12 +3142,15 @@ caniuse-lite@^1.0.30001370: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz#4d37f0d0b6fffb826c8e5e1c0f4bf8ce592db949" integrity sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3837,7 +3167,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3850,11 +3180,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -3874,7 +3199,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1, chokidar@^3.5.3: +chokidar@^3.4.1, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -3889,7 +3214,7 @@ chokidar@^3.4.1, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -3899,11 +3224,6 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - ci-info@^3.2.0: version "3.3.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" @@ -3932,26 +3252,17 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== +cli-cursor@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + restore-cursor "^3.1.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cliui@^7.0.2: version "7.0.4" @@ -3962,29 +3273,11 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -cmd-shim@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.1.0.tgz#e59a08d4248dda3bb502044083a4db4ac890579a" - integrity sha512-A5C0Cyf2H8sKsHqX0tvIWRXw5/PK++3Dc0lDbsugr90nOECLLuSPahVQBG8pgmgiXgm/TzBWMqI2rWdZwHduAw== - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4022,15 +3315,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -columnify@^1.5.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -4047,14 +3332,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -4075,34 +3352,11 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -4120,88 +3374,6 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -conventional-changelog-angular@^5.0.3: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-core@^3.1.6: - version "3.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" - integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== - dependencies: - conventional-changelog-writer "^4.0.6" - conventional-commits-parser "^3.0.3" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "2.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^2.0.3" - lodash "^4.2.1" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^3.0.0" - -conventional-changelog-preset-loader@^2.1.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^4.0.6: - version "4.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" - integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== - dependencies: - compare-func "^2.0.0" - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.0.2, conventional-commits-parser@^3.0.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-recommended-bump@^4.0.4: - version "4.1.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-4.1.1.tgz#37014fadeda267d0607e2fc81124da840a585127" - integrity sha512-JT2vKfSP9kR18RXXf55BRY1O3AHG8FPg5btP3l7LYfcWJsiXI6MCf30DepQ98E8Qhowvgv7a8iev0J1bEDkTFA== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.1.1" - conventional-commits-filter "^2.0.2" - conventional-commits-parser "^3.0.2" - git-raw-commits "2.0.0" - git-semver-tags "^2.0.2" - meow "^4.0.0" - q "^1.5.1" - convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -4249,26 +3421,11 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.21.3" semver "7.0.0" -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -4305,7 +3462,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4342,36 +3499,36 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - array-find-index "^1.0.1" + cssom "~0.3.6" cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - integrity sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw== - dependencies: - number-is-nan "^1.0.0" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - assert-plus "^1.0.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -4380,13 +3537,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -4394,30 +3544,10 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - -decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js@^10.2.1: + version "10.4.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.0.tgz#97a7448873b01e92e5ff9117d89a7bca8e63e0fe" + integrity sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg== decode-uri-component@^0.2.0: version "0.2.0" @@ -4429,7 +3559,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-is@^0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -4439,12 +3569,10 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" @@ -4481,21 +3609,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -4509,23 +3627,15 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/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" @@ -4546,14 +3656,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4580,24 +3682,17 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -dot-prop@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" - integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== - dependencies: - is-obj "^1.0.0" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - is-obj "^2.0.0" + webidl-conversions "^5.0.0" -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" @@ -4609,19 +3704,18 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +ejs@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + electron-to-chromium@^1.4.202: version "1.4.227" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.227.tgz#28e46e2a701fed3188db3ca7bf0a3a475e484046" @@ -4645,6 +3739,11 @@ emittery@^0.10.2: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -4660,14 +3759,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4691,10 +3783,12 @@ enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" errno@^0.1.3, errno@~0.1.7: version "0.1.8" @@ -4703,14 +3797,14 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== @@ -4739,11 +3833,6 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -4765,18 +3854,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - esbuild-android-64@0.14.49: version "0.14.49" resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" @@ -5055,6 +4132,18 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-prettier@^8.3.0: version "8.5.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" @@ -5187,12 +4276,12 @@ espree@^9.3.2, espree@^9.3.3: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -5254,19 +4343,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -5315,6 +4391,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^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.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" @@ -5378,20 +4464,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -5406,32 +4478,21 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== +fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" fast-glob@^3.2.9: version "3.2.11" @@ -5449,7 +4510,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -5468,15 +4529,15 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: +figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== +figures@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -5492,6 +4553,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -5509,11 +4577,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -5536,21 +4599,6 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -5582,6 +4630,11 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" @@ -5605,10 +4658,14 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" form-data@^4.0.0: version "4.0.0" @@ -5619,15 +4676,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -5653,21 +4701,19 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - minipass "^2.6.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -5722,35 +4768,11 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -5770,34 +4792,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg== - dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" - through2 "^2.0.0" - -get-port@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -5823,62 +4817,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -git-raw-commits@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" - integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^2.0.2, git-semver-tags@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" - integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== - dependencies: - meow "^4.0.0" - semver "^6.0.0" - -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== - dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" - -git-url-parse@^11.1.2: - version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== - dependencies: - git-up "^4.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== - dependencies: - ini "^1.3.2" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -5901,17 +4839,24 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5947,20 +4892,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -5970,35 +4902,10 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -handlebars@^4.7.6: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" @@ -6034,11 +4941,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -6103,28 +5005,23 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - lru-cache "^6.0.0" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -6136,13 +5033,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: - agent-base "4" - debug "3.1.0" + "@tootallnate/once" "1" + agent-base "6" + debug "4" http-proxy@^1.18.1: version "1.18.1" @@ -6153,28 +5051,11 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -6193,33 +5074,26 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - husky@^8.0.0: version "8.0.1" resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" + harmony-reflect "^1.4.6" -ieee754@^1.1.4: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -6229,19 +5103,7 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -ignore-walk@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^5.1.4, ignore@^5.2.0: +ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -6251,14 +5113,6 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -6267,14 +5121,6 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -6288,24 +5134,7 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6333,44 +5162,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@^1.3.2, ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - -inquirer@^6.2.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -6380,16 +5171,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -6460,14 +5241,7 @@ is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-core-module@^2.5.0, is-core-module@^2.9.0: +is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== @@ -6513,10 +5287,10 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -6535,23 +5309,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -6605,21 +5362,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -6627,10 +5369,10 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-reference@^1.2.1: version "1.2.1" @@ -6654,18 +5396,6 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-ssh@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" - integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== - dependencies: - protocols "^2.0.1" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -6685,23 +5415,11 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== - dependencies: - text-extensions "^1.0.0" - -is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== - is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -6719,6 +5437,13 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6741,11 +5466,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -6788,6 +5508,16 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" @@ -6796,6 +5526,31 @@ jest-changed-files@^28.1.3: execa "^5.0.0" p-limit "^3.1.0" +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + jest-circus@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" @@ -6839,6 +5594,36 @@ jest-cli@^28.1.3: prompts "^2.0.1" yargs "^17.3.1" +jest-config@27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^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.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" @@ -6867,6 +5652,16 @@ jest-config@^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.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^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.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" @@ -6877,6 +5672,13 @@ jest-diff@^28.1.3: jest-get-type "^28.0.2" pretty-format "^28.1.3" +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + jest-docblock@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" @@ -6884,6 +5686,17 @@ jest-docblock@^28.1.1: dependencies: detect-newline "^3.0.0" +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^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.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" @@ -6895,6 +5708,31 @@ jest-each@^28.1.3: jest-util "^28.1.3" pretty-format "^28.1.3" +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jest-environment-node@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" @@ -6907,11 +5745,36 @@ jest-environment-node@^28.1.3: jest-mock "^28.1.3" jest-util "^28.1.3" +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/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.yarnpkg.com/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.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + jest-haste-map@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" @@ -6931,6 +5794,37 @@ jest-haste-map@^28.1.3: optionalDependencies: fsevents "^2.3.2" +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-leak-detector@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" @@ -6939,6 +5833,16 @@ jest-leak-detector@^28.1.3: jest-get-type "^28.0.2" pretty-format "^28.1.3" +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^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.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" @@ -6949,6 +5853,21 @@ jest-matcher-utils@^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.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^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.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" @@ -6964,8 +5883,16 @@ jest-message-util@^28.1.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.3: - version "28.1.3" +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-mock@^28.1.3: + version "28.1.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== dependencies: @@ -6977,6 +5904,11 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/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.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" @@ -6990,6 +5922,22 @@ jest-resolve-dependencies@^28.1.3: 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.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + jest-resolve@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" @@ -7005,6 +5953,33 @@ jest-resolve@^28.1.3: resolve.exports "^1.1.0" slash "^3.0.0" +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^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.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" @@ -7032,6 +6007,34 @@ jest-runner@^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.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + 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 "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + jest-runtime@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" @@ -7060,6 +6063,42 @@ jest-runtime@^28.1.3: slash "^3.0.0" strip-bom "^4.0.0" +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + jest-snapshot@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" @@ -7089,6 +6128,18 @@ jest-snapshot@^28.1.3: 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.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-util@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" @@ -7101,6 +6152,18 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + jest-validate@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" @@ -7127,7 +6190,7 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" -jest-worker@^27.4.5: +jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -7160,6 +6223,13 @@ jest@^28.1.1, jest@^28.1.3: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7168,17 +6238,38 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" @@ -7190,7 +6281,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -7205,21 +6296,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -7232,27 +6313,19 @@ json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsonc-parser@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" @@ -7281,7 +6354,7 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -7291,36 +6364,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -lerna@3.13.4: - version "3.13.4" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.4.tgz#03026c11c5643f341fda42e4fb1882e2df35e6cb" - integrity sha512-qTp22nlpcgVrJGZuD7oHnFbTk72j2USFimc2Pj4kC0/rXmcU2xPtCiyuxLl8y6/6Lj5g9kwEuvKDZtSXujjX/A== - dependencies: - "@lerna/add" "3.13.3" - "@lerna/bootstrap" "3.13.3" - "@lerna/changed" "3.13.4" - "@lerna/clean" "3.13.3" - "@lerna/cli" "3.13.0" - "@lerna/create" "3.13.3" - "@lerna/diff" "3.13.3" - "@lerna/exec" "3.13.3" - "@lerna/import" "3.13.4" - "@lerna/init" "3.13.3" - "@lerna/link" "3.13.3" - "@lerna/list" "3.13.3" - "@lerna/publish" "3.13.4" - "@lerna/run" "3.13.3" - "@lerna/version" "3.13.4" - import-local "^1.0.0" - npmlog "^4.1.2" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7334,30 +6377,13 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -libnpmaccess@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" - integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== - dependencies: - aproba "^2.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - -libnpmpublish@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" - integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - lodash.clonedeep "^4.5.0" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - semver "^5.5.1" - ssri "^6.0.1" + prelude-ls "~1.1.2" + type-check "~0.3.2" lie@3.1.1: version "3.1.1" @@ -7371,17 +6397,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -7418,14 +6433,6 @@ localforage@^1.8.1: dependencies: lie "3.1.1" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7448,67 +6455,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash.template@^4.0.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: +lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7520,14 +6477,6 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7547,11 +6496,6 @@ lru_map@^0.3.3: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -macos-release@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" - integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== - magic-string@0.26.2: version "0.26.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" @@ -7566,13 +6510,6 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7593,40 +6530,6 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" - integrity sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA== - dependencies: - agentkeepalive "^3.4.1" - cacache "^11.3.3" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - -make-fetch-happen@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" - integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -7634,33 +6537,11 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7682,15 +6563,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -7712,54 +6584,6 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7770,7 +6594,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -7820,7 +6644,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -7832,21 +6656,11 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -7857,50 +6671,32 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" + brace-expansion "^2.0.1" -minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7925,18 +6721,13 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.0: +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -7964,21 +6755,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - integrity sha512-0mzK8ymiWdehTBiJh0vClAzGyQbdtyWqzSVx//EK4N/D+599RFlGfTAsKw2zMSABtDG9C6Ul2+t8f2Lbdjf5mA== - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -7990,16 +6771,6 @@ multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@^2.12.1: version "2.16.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" @@ -8037,7 +6808,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -8047,38 +6818,15 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" - integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" +node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-gyp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-4.0.0.tgz#972654af4e5dd0cd2a19081b4b46fe0442ba6f45" - integrity sha512-2XiryJ8sICNo6ej8d0idXDEMKfVfFK7kekGCtJAuelGsYHQxhj13KTf95swTCN2dZ/4lTfZ84Fu31jqJEEgjWA== - dependencies: - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^4.4.8" - which "1" +node-gyp-build@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" + integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== node-int64@^0.4.0: version "0.4.0" @@ -8119,14 +6867,7 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== - dependencies: - abbrev "1" - -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -8136,16 +6877,6 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -8158,90 +6889,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-lifecycle@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.1.tgz#0027c09646f0fd346c5c93377bdaba59c6748fdf" - integrity sha512-+Vg6I60Z75V/09pdcH5iUo/99Q/vop35PaI99elvxk56azSVVsdsSsS/sXqKDNwbRRNN1qSxkcO45ZOu0yOWew== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^4.0.0" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== - dependencies: - hosted-git-info "^2.7.1" - osenv "^0.1.5" - semver "^5.6.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.12, npm-packlist@^1.4.1: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-registry-fetch@^3.9.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz#00ff6e4e35d3f75a172b332440b53e93f4cb67de" - integrity sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^4.0.2" - npm-package-arg "^6.1.0" - -npm-registry-fetch@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7" - integrity sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" - safe-buffer "^5.2.0" - npm-run-all@4.1.5, npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -8257,13 +6904,6 @@ npm-run-all@4.1.5, npm-run-all@^4.1.5: shell-quote "^1.6.1" string.prototype.padend "^3.0.0" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -8271,27 +6911,48 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +nwsapi@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" + integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== + +nx@14.5.10: + version "14.5.10" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" + integrity sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg== + dependencies: + "@nrwl/cli" "14.5.10" + "@nrwl/tao" "14.5.10" + "@parcel/watcher" "2.0.4" + chalk "4.1.0" + chokidar "^3.5.1" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^10.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.0.0" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^3.9.0" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.4.0" + yargs-parser "21.0.1" + +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -8350,16 +7011,6 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== - dependencies: - array.prototype.reduce "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" - object.hasown@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" @@ -8384,11 +7035,6 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8403,13 +7049,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -8417,6 +7056,27 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -8434,63 +7094,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -osenv@0, osenv@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -8505,13 +7108,6 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -8533,81 +7129,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" - integrity sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg== - dependencies: - p-reduce "^1.0.0" - -p-map@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -p-pipe@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" - integrity sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw== - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" - integrity sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg== - dependencies: - p-reduce "^1.0.0" - -pacote@^9.5.0: - version "9.5.12" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" - integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== - dependencies: - bluebird "^3.5.3" - cacache "^12.0.2" - chownr "^1.1.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-normalize-package-bin "^1.0.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^3.0.0" - npm-registry-fetch "^4.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.10" - unique-filename "^1.1.1" - which "^1.3.1" - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -8640,18 +7166,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8660,7 +7174,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8670,25 +7184,10 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-path@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" - integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" - -parse-url@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.5.tgz#4acab8982cef1846a0f8675fa686cef24b2f6f9b" - integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== - dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@~1.3.3: version "1.3.3" @@ -8710,13 +7209,6 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8732,7 +7224,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== @@ -8752,15 +7244,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -8784,11 +7267,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -8804,11 +7282,6 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -8819,30 +7292,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -8876,11 +7330,25 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.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.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" @@ -8918,14 +7386,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw== - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -8934,13 +7394,6 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== - dependencies: - read "1" - prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -8950,28 +7403,6 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== - -protocols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" - integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== - -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -8985,7 +7416,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -psl@^1.1.28: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -9042,11 +7473,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - qs@6.10.3: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -9054,28 +7480,6 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@^6.9.4: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9086,21 +7490,16 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -9136,70 +7535,15 @@ react-is@^16.13.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -read-cmd-shim@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" - integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== - dependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-tree@^5.1.6: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== read-pkg@^3.0.0: version "3.0.0" @@ -9210,24 +7554,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@~1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9240,7 +7567,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9249,16 +7576,6 @@ read@1, read@~1.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -9275,30 +7592,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw== - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -9384,61 +7677,16 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== - dependencies: - resolve-from "^3.0.0" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -9446,11 +7694,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -9466,7 +7709,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve.exports@^1.1.0: +resolve.exports@1.1.0, resolve.exports@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== @@ -9489,12 +7732,12 @@ resolve@^2.0.0-next.3: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -9502,17 +7745,12 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9555,11 +7793,6 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9574,14 +7807,14 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0: +rxjs@^6.5.4: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9598,11 +7831,18 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -9621,7 +7861,7 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9631,23 +7871,25 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== - send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -9691,11 +7933,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -9762,7 +7999,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, 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.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -9772,26 +8009,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== - -smart-buffer@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -9822,29 +8044,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== - dependencies: - ip "1.1.5" - smart-buffer "^4.1.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -9874,7 +8073,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12, source-map-support@~0.5.20: +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.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9933,11 +8132,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -9945,48 +8139,12 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" - -split2@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.0, ssri@^6.0.1: +ssri@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== @@ -10045,11 +8203,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -10058,16 +8211,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10076,14 +8220,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" @@ -10139,27 +8275,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -10167,13 +8282,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -10184,49 +8292,16 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strong-log-transformer@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -10261,6 +8336,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -10271,35 +8351,16 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^4.4.10, tar@^4.4.8: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== - -temp-write@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" - integrity sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q== +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: - graceful-fs "^4.1.2" - is-stream "^1.1.0" - make-dir "^1.0.0" - pify "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.0.1" + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" terminal-link@^2.0.0: version "2.1.1" @@ -10363,17 +8424,17 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through2@^2.0.0, through2@^2.0.2: +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -10381,26 +8442,6 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -10408,12 +8449,12 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: - os-tmpdir "~1.0.2" + rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" @@ -10467,40 +8508,22 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tough-cookie@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.1.tgz#3600960f1e1c83545f130ac80043b9de8e5d488b" + integrity sha512-Ns3k8QxkEzIfLZbRwLOrMPDqRa1BEAl4BzNNAOYY4BhBmEkf+HvP467F4NrD9loK3NcYflWOpUH3LJg0ehq/rQ== dependencies: - psl "^1.1.28" + psl "^1.1.33" punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: - punycode "^2.1.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + punycode "^2.1.1" ts-node@^10.9.1: version "10.9.1" @@ -10521,11 +8544,26 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tsconfig-paths@^3.9.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -10538,18 +8576,6 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -10557,16 +8583,18 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -10577,16 +8605,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10595,6 +8613,13 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10605,21 +8630,6 @@ typescript@^4.7.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== -uglify-js@^3.1.4: - version "3.17.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85" - integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg== - -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -10677,22 +8687,15 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -universal-user-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" - integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== - dependencies: - os-name "^3.1.0" - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -10742,6 +8745,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -10760,13 +8771,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA== - dependencies: - object.getownpropertydescriptors "^2.0.3" - util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -10786,21 +8790,25 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.0.1, uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.3: +v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" @@ -10810,7 +8818,7 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: +validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -10818,27 +8826,11 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vite@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" @@ -10856,7 +8848,21 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -walker@^1.0.8: +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -10889,22 +8895,15 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" @@ -10983,22 +8982,26 @@ webpack@5.74.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -11011,12 +9014,7 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@1, which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -11030,30 +9028,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -windows-release@^3.1.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" - integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== - dependencies: - execa "^1.0.0" - -word-wrap@^1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -11061,14 +9040,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -11083,14 +9054,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" write-file-atomic@^4.0.1: version "4.0.2" @@ -11100,32 +9072,27 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write-json-file@^2.2.0, write-json-file@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" - integrity sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - pify "^3.0.0" - sort-keys "^2.0.0" - write-file-atomic "^2.0.0" +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -write-pkg@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" - integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== - dependencies: - sort-keys "^2.0.0" - write-json-file "^2.2.0" +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== @@ -11135,7 +9102,7 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -11145,43 +9112,17 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@21.0.1: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== yargs-parser@^21.0.0: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^12.0.1: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^17.3.1: +yargs@^17.3.1, yargs@^17.4.0: version "17.5.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== From 9cb7ba65e30f84c37aa5852424dda9f6245c72aa Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 26 Aug 2022 10:19:12 +0200 Subject: [PATCH 035/640] feat: Implement `entries` option (#38) --- nx.json | 3 + .../array-entries-option.test.ts | 78 +++++++++++++++++ .../array-entries-option/input/entrypoint1.js | 2 + .../array-entries-option/input/entrypoint2.js | 2 + .../array-entries-option/input/entrypoint3.js | 2 + .../fixtures/array-entries-option/setup.ts | 13 +++ .../fixtures/basic-release-injection/setup.ts | 5 +- .../function-entries-option.test.ts | 78 +++++++++++++++++ .../input/entrypoint1.js | 2 + .../input/entrypoint2.js | 2 + .../input/entrypoint3.js | 2 + .../fixtures/function-entries-option/setup.ts | 18 ++++ .../regex-entries-option/input/entrypoint1.js | 2 + .../regex-entries-option/input/entrypoint2.js | 2 + .../fixtures/regex-entries-option/setup.ts | 12 +++ .../string-entries-option.test.ts | 63 ++++++++++++++ .../input/entrypoint1.js | 2 + .../input/entrypoint2.js | 2 + .../fixtures/string-entries-option/setup.ts | 12 +++ .../string-entries-option.test.ts | 63 ++++++++++++++ .../utils/create-cjs-bundles.ts | 26 +++--- packages/unplugin/src/index.ts | 86 +++++++++++++------ packages/unplugin/src/types.ts | 13 ++- 23 files changed, 448 insertions(+), 42 deletions(-) create mode 100644 packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts create mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js create mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js create mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js create mode 100644 packages/integration-tests/fixtures/array-entries-option/setup.ts create mode 100644 packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts create mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js create mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js create mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js create mode 100644 packages/integration-tests/fixtures/function-entries-option/setup.ts create mode 100644 packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js create mode 100644 packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js create mode 100644 packages/integration-tests/fixtures/regex-entries-option/setup.ts create mode 100644 packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts create mode 100644 packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js create mode 100644 packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js create mode 100644 packages/integration-tests/fixtures/string-entries-option/setup.ts create mode 100644 packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts diff --git a/nx.json b/nx.json index c2b76c2d9944..407ad942c044 100644 --- a/nx.json +++ b/nx.json @@ -19,6 +19,9 @@ }, "test": { "dependsOn": ["^build"] + }, + "check:types": { + "dependsOn": ["^build"] } } } diff --git a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts new file mode 100644 index 000000000000..cdf6d8613144 --- /dev/null +++ b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts @@ -0,0 +1,78 @@ +import childProcess from "child_process"; +import path from "path"; +import fs from "fs"; + +function getBundleOutput(bundlePath: string): string { + return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); +} + +function getFileContents(bundlePath: string): string { + return fs.readFileSync(bundlePath, { encoding: "utf-8" }); +} + +describe("`entries` option should work as expected when given an array of RegEx and strings", () => { + test("esbuild bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("rollup bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("vite bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 4 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 5 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); +}); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts new file mode 100644 index 000000000000..5092fe22d781 --- /dev/null +++ b/packages/integration-tests/fixtures/array-entries-option/setup.ts @@ -0,0 +1,13 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); +const entryPoint3Path = path.resolve(__dirname, "./input/entrypoint3.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles( + { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, + outputDir, + { release: "I AM A RELEASE!", include: outputDir, entries: [/entrypoint1\.js/, entryPoint3Path] } +); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index 4dda90b407ab..2cd1f928e046 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -4,4 +4,7 @@ import { createCjsBundles } from "../../utils/create-cjs-bundles"; const entryPointPath = path.resolve(__dirname, "./input/entrypoint.js"); const outputDir = path.resolve(__dirname, "./out"); -createCjsBundles(entryPointPath, outputDir, { release: "I AM A RELEASE!", include: "" }); +createCjsBundles({ index: entryPointPath }, outputDir, { + release: "I AM A RELEASE!", + include: outputDir, +}); diff --git a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts new file mode 100644 index 000000000000..d238a443879b --- /dev/null +++ b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts @@ -0,0 +1,78 @@ +import childProcess from "child_process"; +import path from "path"; +import fs from "fs"; + +function getBundleOutput(bundlePath: string): string { + return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); +} + +function getFileContents(bundlePath: string): string { + return fs.readFileSync(bundlePath, { encoding: "utf-8" }); +} + +describe("`entries` option should work as expected when given a function", () => { + test("esbuild bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("rollup bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("vite bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 4 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 5 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint3.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); +}); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts new file mode 100644 index 000000000000..58eee0af840d --- /dev/null +++ b/packages/integration-tests/fixtures/function-entries-option/setup.ts @@ -0,0 +1,18 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); +const entryPoint3Path = path.resolve(__dirname, "./input/entrypoint3.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles( + { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, + outputDir, + { + release: "I AM A RELEASE!", + include: outputDir, + entries: (entrypointPath) => + entrypointPath === entryPoint1Path || entrypointPath === entryPoint3Path, + } +); diff --git a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts new file mode 100644 index 000000000000..2dd0ccded728 --- /dev/null +++ b/packages/integration-tests/fixtures/regex-entries-option/setup.ts @@ -0,0 +1,12 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { + release: "I AM A RELEASE!", + include: outputDir, + entries: /entrypoint1\.js/, +}); diff --git a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts new file mode 100644 index 000000000000..d3637dd3caf3 --- /dev/null +++ b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts @@ -0,0 +1,63 @@ +import childProcess from "child_process"; +import path from "path"; +import fs from "fs"; + +function getBundleOutput(bundlePath: string): string { + return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); +} + +function getFileContents(bundlePath: string): string { + return fs.readFileSync(bundlePath, { encoding: "utf-8" }); +} + +describe("`entries` option should work as expected when given a regular expression", () => { + test("esbuild bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("rollup bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("vite bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 4 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 5 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); +}); diff --git a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js new file mode 100644 index 000000000000..53c3b7d56057 --- /dev/null +++ b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts new file mode 100644 index 000000000000..a31f86c736a1 --- /dev/null +++ b/packages/integration-tests/fixtures/string-entries-option/setup.ts @@ -0,0 +1,12 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { + release: "I AM A RELEASE!", + include: outputDir, + entries: entryPoint1Path, +}); diff --git a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts new file mode 100644 index 000000000000..7095f4fe6956 --- /dev/null +++ b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts @@ -0,0 +1,63 @@ +import childProcess from "child_process"; +import path from "path"; +import fs from "fs"; + +function getBundleOutput(bundlePath: string): string { + return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); +} + +function getFileContents(bundlePath: string): string { + return fs.readFileSync(bundlePath, { encoding: "utf-8" }); +} + +describe("`entries` option should work as expected when given a string", () => { + test("esbuild bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("rollup bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("vite bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 4 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); + + test("webpack 5 bundle", () => { + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( + "I AM A RELEASE!" + ); + expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + "I AM A RELEASE!" + ); + }); +}); diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 7057c3899809..e75b88487268 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -13,7 +13,7 @@ import { } from "@sentry/unplugin"; export function createCjsBundles( - entryPointPath: string, + entrypoints: { [name: string]: string }, outFolder: string, sentryUnpluginOptions: Options ): void { @@ -21,10 +21,12 @@ export function createCjsBundles( clearScreen: false, build: { outDir: path.join(outFolder, "vite"), - lib: { - entry: entryPointPath, - fileName: "index", - formats: ["cjs"], + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, }, }, plugins: [sentryVitePlugin(sentryUnpluginOptions)], @@ -32,20 +34,20 @@ export function createCjsBundles( void rollup .rollup({ - input: entryPointPath, + input: entrypoints, plugins: [sentryRollupPlugin(sentryUnpluginOptions)], }) .then((bundle) => bundle.write({ - file: path.join(outFolder, "rollup/index.js"), + dir: path.join(outFolder, "rollup"), format: "cjs", exports: "named", }) ); void esbuild.build({ - entryPoints: [entryPointPath], - outfile: path.join(outFolder, "esbuild/index.js"), + entryPoints: entrypoints, + outdir: path.join(outFolder, "esbuild"), plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], minify: true, bundle: true, @@ -55,11 +57,10 @@ export function createCjsBundles( webpack4( { mode: "production", - entry: entryPointPath, + entry: entrypoints, cache: false, output: { path: path.join(outFolder, "webpack4"), - filename: "index.js", libraryTarget: "commonjs", }, target: "node", // needed for webpack 4 so we can access node api @@ -75,9 +76,8 @@ export function createCjsBundles( webpack5( { cache: false, - entry: entryPointPath, + entry: entrypoints, output: { - filename: "index.js", path: path.join(outFolder, "webpack5"), library: { type: "commonjs", diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index f5e263ab9d31..4976b703f0fd 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -15,6 +15,11 @@ const defaultOptions: Omit = { ext: ["js", "map", "jsbundle", "bundle"], }; +// We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. +// This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. +// This probably doesn't work for all bundlers but for rollup it does. +const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; + /** * The sentry-unplugin concerns itself with two things: * - Release injection @@ -22,26 +27,15 @@ const defaultOptions: Omit = { * * Release injection: * - * The sentry-unpugin will inject a global `SENTRY_RELEASE` variable into all bundles. On a technical level this is done - * by appending an import (`import "sentry-release-injector;"`) to all files of the user code (see `transformInclude` - * and `transform` hooks). This import is then resolved by the sentry-unplugin to a virtual module that sets the global - * variable (see `resolveId` and `load` hooks). - * - * It sounds a bit dubious that we're injecting appending the same import to *all* user files but it has its reasons: - * With the way `unplugin` and bundlers work, we do not always have the information we need to only inject code at the - * top of an entry file. The `transform` and `transformInclude` hooks don't have any information as to whether a file is - * an entry file - so they need context from another hook for that. The only location where we can determine if a file - * is an entry file is the `resolveId` hook - sadly in this hook, we do not have an guaranteed absolute path of the file - * we're looking at, which would require us to do a heuristic (using `process.cwd()`) which isn't bulletproof. - * - * Since 1) sharing context across bundler hooks is a bit of an anti-pattern and 2) having a heuristic that is - * potentially producing false results, we went for the approach of simply importing the "global injector file" in every - * file. Luckily bundlers are smart enough to only include it once in a bundle. :) + * Per default the sentry-unpugin will inject a global `SENTRY_RELEASE` variable into the entrypoint of all bundles. On + * a technical level this is done by appending an import (`import "sentry-release-injector;"`) to all entrypoint files + * of the user code (see `transformInclude` and `transform` hooks). This import is then resolved by the sentry-unplugin + * to a virtual module that sets the global variable (see `resolveId` and `load` hooks). * * The resulting output approximately looks like this: * * ```text - * index.js (user file) + * entrypoint1.js (user file) * ┌───────────────────┐ ┌─────────────────────────────────────────────────┐ * │ │ │ import { myFunction } from "./my-library.js"; │ * │ sentry-unplugin │ │ │ @@ -53,7 +47,7 @@ const defaultOptions: Omit = { * │ └─────────────────────────────────────────────────┘ │ * │ │ * │ │ - * │ my-library.js (user file) │ + * │ entrypoint2.js (user file) │ * │ ┌─────────────────────────────────────────────────┐ │ * │ │ export function myFunction() { │ │ * │ │ return "Hello world!"; │ │ @@ -88,6 +82,12 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) } } + // This is `nonEntrypointSet` instead of `entrypointSet` because this set is filled in the `resolveId` hook and there + // we don't have guaranteed access to *absolute* paths of files if they're entrypoints. For non-entrypoints we're + // guaranteed to have absolute paths - we're then using the paths in later hooks to make decisions about whether a + // file is an entrypoint or a non-entrypoint. + const nonEntrypointSet = new Set(); + return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -96,6 +96,8 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. * + * We also record the id (i.e. absolute path) of any non-entrypoint. + * * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. * @param options Additional information to use for making a resolving decision. @@ -106,13 +108,23 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) `Called "resolveId": ${JSON.stringify({ id, importer: importer, options: { isEntry } })}` ); - if (id === "sentry-release-injector") { - return id; + if (!isEntry) { + nonEntrypointSet.add(id); + } + + if (id === RELEASE_INJECTOR_ID) { + return RELEASE_INJECTOR_ID; } else { return undefined; } }, + loadInclude(id) { + debugLog(`Called "loadInclude": ${JSON.stringify({ id })}`); + + return id === RELEASE_INJECTOR_ID; + }, + /** * Responsible for "virtually" loading the "sentry-release-injector" module. "Virtual" means that the module is not * read from somewhere on disk but rather just returned via a string. @@ -123,7 +135,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) load(id) { debugLog(`Called "transform": ${JSON.stringify({ id })}`); - if (id === "sentry-release-injector") { + if (id === RELEASE_INJECTOR_ID) { return generateGlobalInjectorCode({ release: getReleaseName(options.release) }); } else { return undefined; @@ -131,8 +143,8 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) }, /** - * This hook determines whether we want to transform a module. In the unplugin we want to transform every file - * except for the release injector file + * This hook determines whether we want to transform a module. In the unplugin we want to transform every entrypoint + * unless configured otherwise with the `entries` option. * * @param id Always the absolute (fully resolved) path to the module. * @returns `true` or `false` depending on whether we want to transform the module. For the sentry-unplugin we only @@ -141,12 +153,32 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) transformInclude(id) { debugLog(`Called "transformInclude": ${JSON.stringify({ id })}`); + if (options.entries) { + // If there's an `entries` option transform (ie. inject the release varible) when the file path matches the option. + if (typeof options.entries === "function") { + return options.entries(id); + } + + const arrayifiedEntriesOption = Array.isArray(options.entries) + ? options.entries + : [options.entries]; + + return arrayifiedEntriesOption.some((entry) => { + if (entry instanceof RegExp) { + return entry.test(id); + } else { + return id === entry; + } + }); + } + // We want to transform (release injection) every module except for "sentry-release-injector". - return id !== "sentry-release-injector"; + return id !== RELEASE_INJECTOR_ID && !nonEntrypointSet.has(id); }, /** - * This hook is responsible for injecting the "sentry release injector" imoprt statement into each user file. + * This hook is responsible for injecting the "sentry release injector" imoprt statement into each entrypoint unless + * configured otherwise with the `entries` option (logic for that is in the `transformInclude` hook). * * @param code Code of the file to transform. * @param id Always the absolute (fully resolved) path to the module. @@ -156,11 +188,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) debugLog(`Called "transform": ${JSON.stringify({ code, id })}`); // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. - const ms = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻ + const ms: MagicString = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻ - // appending instead of prepending has less probability of mucking with user's + // appending instead of prepending has less probability of mucking with user'sadly // source maps and import statements get to the top anyways - ms.append('import "sentry-release-injector";'); + ms.append(`import "${RELEASE_INJECTOR_ID}";`); if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index f1db088be955..efe98860f080 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -13,7 +13,18 @@ export type Options = { /* --- release properties: */ release?: string; // dist: string, - // entries: string[] | RegExp | ((key: string) => boolean); + + /** + * Filter for bundle entry points that should contain the provided release. By default, the release will be injected + * into all entry points. + * + * This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. + * It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should + * return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this + * option require a full match with the absolute path of the bundle. + */ + entries?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); + finalize?: boolean; /* --- source maps properties: */ From 2ab503574dd7eda4a03d11f8e466e4e8379ffcbd Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 26 Aug 2022 10:22:42 +0200 Subject: [PATCH 036/640] build: Remove unnecessary commands from ci --- .github/workflows/checks.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index eafad2228043..e71cd7a401fa 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -30,7 +30,6 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - - run: yarn build - run: yarn check:types formatting-check: @@ -54,7 +53,6 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - - run: yarn build - run: yarn test lint: @@ -67,5 +65,4 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - - run: yarn build - run: yarn lint From e5e0208d4143f9f1266817f048c5bd7d0880b282 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Fri, 26 Aug 2022 17:00:17 +0200 Subject: [PATCH 037/640] feat: Add Sentry (#36) --- packages/unplugin/package.json | 2 + packages/unplugin/src/index.ts | 107 ++++++++++++++++++++-- packages/unplugin/src/sentry/api.ts | 37 ++++---- packages/unplugin/src/sentry/facade.ts | 82 ++++++++++++++--- packages/unplugin/src/sentry/telemetry.ts | 75 +++++++++++++++ packages/unplugin/src/types.ts | 12 +++ yarn.lock | 10 ++ 7 files changed, 284 insertions(+), 41 deletions(-) create mode 100644 packages/unplugin/src/sentry/telemetry.ts diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 423c0837e364..c21f50a472c6 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -20,6 +20,8 @@ "lint": "eslint ./src ./test" }, "dependencies": { + "@sentry/node": "^7.11.1", + "@sentry/tracing": "^7.11.1", "axios": "^0.27.2", "form-data": "^4.0.0", "magic-string": "0.26.2", diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 4976b703f0fd..2b8cbade15b4 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -3,6 +3,9 @@ import MagicString from "magic-string"; import { getReleaseName } from "./getReleaseName"; import { Options } from "./types"; import { makeSentryFacade } from "./sentry/facade"; +import "@sentry/tracing"; +import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; +import { Span, Transaction } from "@sentry/types"; const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin @@ -13,6 +16,7 @@ const defaultOptions: Omit = { finalize: true, url: "https://sentry.io", ext: ["js", "map", "jsbundle", "bundle"], + telemetry: true, }; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. @@ -75,6 +79,30 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; const unplugin = createUnplugin((originalOptions, unpluginMetaContext) => { const options = { ...defaultOptions, ...originalOptions }; + //TODO: We can get rid of this variable once we have internal plugin options + const telemetryEnabled = options.telemetry === true; + + const { hub: sentryHub } = makeSentryClient( + "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", + telemetryEnabled, + options.org + ); + + if (options.telemetry) { + // eslint-disable-next-line no-console + console.log("[Sentry-plugin]", "Sending error and performance telemetry data to Sentry."); + // eslint-disable-next-line no-console + console.log("[Sentry-Plugin]", "To disable telemetry, set `options.telemetry` to `false`."); + } + + sentryHub.setTags({ + organization: options.org, + project: options.project, + bundler: unpluginMetaContext.framework, + }); + + sentryHub.setUser({ id: options.org }); + function debugLog(...args: unknown[]) { if (options?.debugLogging) { // eslint-disable-next-line no-console @@ -88,10 +116,29 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) // file is an entrypoint or a non-entrypoint. const nonEntrypointSet = new Set(); + let transaction: Transaction | undefined; + let releaseInjectionSpan: Span | undefined; + return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook + /** + * Responsible for starting the plugin execution transaction and the release injection span + */ + buildStart() { + transaction = sentryHub.startTransaction({ + op: "sentry-unplugin", + name: "plugin-execution", + }); + releaseInjectionSpan = addSpanToTransaction( + sentryHub, + transaction, + "release-injection", + "release-injection" + ); + }, + /** * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. @@ -104,9 +151,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. */ resolveId(id, importer, { isEntry }) { - debugLog( - `Called "resolveId": ${JSON.stringify({ id, importer: importer, options: { isEntry } })}` - ); + sentryHub.addBreadcrumb({ + category: "resolveId", + message: `isEntry: ${String(isEntry)}`, + level: "info", + }); if (!isEntry) { nonEntrypointSet.add(id); @@ -133,7 +182,10 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * @returns The global injector code when we load the "sentry-release-injector" module. Otherwise returns `undefined`. */ load(id) { - debugLog(`Called "transform": ${JSON.stringify({ id })}`); + sentryHub.addBreadcrumb({ + category: "load", + level: "info", + }); if (id === RELEASE_INJECTOR_ID) { return generateGlobalInjectorCode({ release: getReleaseName(options.release) }); @@ -151,7 +203,10 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * want to transform the release injector file. */ transformInclude(id) { - debugLog(`Called "transformInclude": ${JSON.stringify({ id })}`); + sentryHub.addBreadcrumb({ + category: "transformInclude", + level: "info", + }); if (options.entries) { // If there's an `entries` option transform (ie. inject the release varible) when the file path matches the option. @@ -184,8 +239,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * @param id Always the absolute (fully resolved) path to the module. * @returns transformed code + source map */ - transform(code, id) { - debugLog(`Called "transform": ${JSON.stringify({ code, id })}`); + transform(code) { + sentryHub.addBreadcrumb({ + category: "transform", + level: "info", + }); // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms: MagicString = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻ @@ -206,15 +264,37 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) }; } }, + + /** + * Responsible for executing the sentry release creation pipeline (i.e. creating a release on + * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) + */ buildEnd() { + releaseInjectionSpan?.finish(); + const releasePipelineSpan = + sentryHub && + transaction && + addSpanToTransaction( + sentryHub, + transaction, + "release-creation", + "release-creation-pipeline" + ); + const release = getReleaseName(options.release); + + sentryHub.addBreadcrumb({ + category: "buildEnd:start", + level: "info", + }); + //TODO: // 1. validate options to see if we get a valid include property, release name, etc. // 2. normalize the include property: Users can pass string | string [] | IncludeEntry[]. // That's good for them but a hassle for us. Let's try to normalize this into one data type // (I vote IncludeEntry[]) and continue with that down the line - const sentryFacade = makeSentryFacade(release, options); + const sentryFacade = makeSentryFacade(release, options, sentryHub); sentryFacade .createNewRelease() @@ -226,7 +306,18 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) .catch((e) => { //TODO: invoke error handler here // https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L540-L547 + captureMinimalError(e, sentryHub); + transaction?.setStatus("cancelled"); debugLog(e); + }) + .finally(() => { + sentryHub.addBreadcrumb({ + category: "buildEnd:finish", + level: "info", + }); + releasePipelineSpan?.finish(); + transaction?.setStatus("ok"); + transaction?.finish(); }); }, }; diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index 3d6b1db9ed85..9e2150c1fa6a 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -6,21 +6,14 @@ import FormData from "form-data"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import { version as unpluginVersion } from "../../package.json"; +import { captureMinimalError } from "./telemetry"; +import { Hub } from "@sentry/node"; const API_PATH = "/api/0"; // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access const USER_AGENT = `sentry-unplugin/${unpluginVersion}`; -const sentryApiAxiosInstance = axios.create(); -sentryApiAxiosInstance.interceptors.request.use((config) => { - return { - ...config, - headers: { - ...config.headers, - "User-Agent": USER_AGENT, - }, - }; -}); +const sentryApiAxiosInstance = axios.create({ headers: { "User-Agent": USER_AGENT } }); export async function createRelease({ org, @@ -28,12 +21,14 @@ export async function createRelease({ release, authToken, sentryUrl, + sentryHub, }: { release: string; project: string; org: string; authToken: string; sentryUrl: string; + sentryHub: Hub; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`; @@ -49,8 +44,8 @@ export async function createRelease({ headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { - // TODO: Maybe do some more sopthisticated error handling here - throw new Error("Something went wrong while creating a release"); + captureMinimalError(e, sentryHub); + throw e; } } @@ -60,12 +55,14 @@ export async function deleteAllReleaseArtifacts({ release, authToken, sentryUrl, + sentryHub, }: { org: string; release: string; sentryUrl: string; authToken: string; project: string; + sentryHub: Hub; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`; @@ -76,8 +73,8 @@ export async function deleteAllReleaseArtifacts({ }, }); } catch (e) { - // TODO: Maybe do some more sopthisticated error handling here - throw new Error("Something went wrong while cleaning previous release artifacts"); + captureMinimalError(e, sentryHub); + throw e; } } @@ -87,12 +84,14 @@ export async function updateRelease({ authToken, sentryUrl, project, + sentryHub, }: { release: string; org: string; authToken: string; sentryUrl: string; project: string; + sentryHub: Hub; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`; @@ -105,8 +104,8 @@ export async function updateRelease({ headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { - // TODO: Maybe do some more sopthisticated error handling here - throw new Error("Something went wrong while creating a release"); + captureMinimalError(e, sentryHub); + throw e; } } @@ -118,6 +117,7 @@ export async function uploadReleaseFile({ sentryUrl, filename, fileContent, + sentryHub, }: { org: string; release: string; @@ -126,6 +126,7 @@ export async function uploadReleaseFile({ project: string; filename: string; fileContent: string; + sentryHub: Hub; }) { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`; @@ -141,7 +142,7 @@ export async function uploadReleaseFile({ }, }); } catch (e) { - // TODO: Maybe do some more sopthisticated error handling here - throw new Error(`Something went wrong while uploading file ${filename}`); + captureMinimalError(e, sentryHub); + throw e; } } diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/facade.ts index 46551a1ea5c3..105882f6fdfb 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/facade.ts @@ -6,9 +6,12 @@ // - huge download // - unnecessary functionality +import { Hub } from "@sentry/node"; +import { Span } from "@sentry/types"; import { Options } from "../types"; import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; import { getFiles } from "./sourcemaps"; +import { addSpanToTransaction } from "./telemetry"; export type SentryFacade = { createNewRelease: () => Promise; @@ -23,18 +26,26 @@ export type SentryFacade = { * Factory function that provides all necessary Sentry functionality for creating * a release on Sentry. This includes uploading source maps and finalizing the release */ -export function makeSentryFacade(release: string, options: Options): SentryFacade { +export function makeSentryFacade(release: string, options: Options, sentryHub: Hub): SentryFacade { + const span = sentryHub.getScope()?.getSpan(); return { - createNewRelease: () => createNewRelease(release, options), - cleanArtifacts: () => cleanArtifacts(release, options), - uploadSourceMaps: () => uploadSourceMaps(release, options), - setCommits: () => setCommits(/* release */), - finalizeRelease: () => finalizeRelease(release, options), - addDeploy: () => addDeploy(/* release */), + createNewRelease: () => createNewRelease(release, options, sentryHub, span), + cleanArtifacts: () => cleanArtifacts(release, options, sentryHub, span), + uploadSourceMaps: () => uploadSourceMaps(release, options, sentryHub, span), + setCommits: () => setCommits(/* release, */ sentryHub, span), + finalizeRelease: () => finalizeRelease(release, options, sentryHub, span), + addDeploy: () => addDeploy(/* release, */ sentryHub, span), }; } -async function createNewRelease(release: string, options: Options): Promise { +async function createNewRelease( + release: string, + options: Options, + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "create-new-release"); + // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { // eslint-disable-next-line no-console @@ -60,15 +71,23 @@ async function createNewRelease(release: string, options: Options): Promise { +async function uploadSourceMaps( + release: string, + options: Options, + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "upload-sourceMaps"); // This is what Sentry CLI does: // TODO: 0. Preprocess source maps // - (Out of scope for now) @@ -84,7 +103,6 @@ async function uploadSourceMaps(release: string, options: Options): Promise { // eslint-disable-next-line no-console console.log("[Sentry-plugin] Successfully uploaded sourcemaps."); + span?.finish(); return "done"; }); } -async function finalizeRelease(release: string, options: Options): Promise { +async function finalizeRelease( + release: string, + options: Options, + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "finalize-release"); + if (options.finalize) { const { authToken, org, url, project } = options; if (!authToken || !org || !url || !project) { @@ -168,16 +195,24 @@ async function finalizeRelease(release: string, options: Options): Promise { +async function cleanArtifacts( + release: string, + options: Options, + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "clean-artifacts"); + if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { @@ -212,20 +247,37 @@ async function cleanArtifacts(release: string, options: Options): Promise { +async function setCommits( + /* version: string, */ + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "set-commits"); + + span?.finish(); return Promise.resolve("Noop"); } -async function addDeploy(/* version: string */): Promise { +async function addDeploy( + /* version: string, */ + sentryHub: Hub, + parentSpan?: Span +): Promise { + const span = addSpanToTransaction(sentryHub, parentSpan, "add-deploy"); + + span?.finish(); return Promise.resolve("Noop"); } diff --git a/packages/unplugin/src/sentry/telemetry.ts b/packages/unplugin/src/sentry/telemetry.ts new file mode 100644 index 000000000000..9db7aee3f451 --- /dev/null +++ b/packages/unplugin/src/sentry/telemetry.ts @@ -0,0 +1,75 @@ +import { + defaultStackParser, + Hub, + Integrations, + makeMain, + makeNodeTransport, + NodeClient, +} from "@sentry/node"; +import { Span } from "@sentry/tracing"; +import { AxiosError } from "axios"; +import { version as unpluginVersion } from "../../package.json"; + +export function makeSentryClient( + dsn: string, + telemetryEnabled: boolean, + org?: string +): { client: NodeClient; hub: Hub } { + const client = new NodeClient({ + dsn, + + enabled: telemetryEnabled, + tracesSampleRate: telemetryEnabled ? 1.0 : 0.0, + sampleRate: telemetryEnabled ? 1.0 : 0.0, + + release: `${org ? `${org}@` : ""}${unpluginVersion}`, + integrations: [new Integrations.Http({ tracing: true })], + tracePropagationTargets: ["sentry.io/api"], + + stackParser: defaultStackParser, + transport: makeNodeTransport, + + debug: true, + }); + + const hub = new Hub(client); + + //TODO: This call is problematic because as soon as we set our hub as the current hub + // we might interfere with other plugins that use Sentry. However, for now, we'll + // leave it in because without it, we can't get distributed traces (which are pretty nice) + // Let's keep it until someone complains about interference. + // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. + makeMain(hub); + + return { client, hub }; +} + +/** + * Adds a span to the passed parentSpan or to the current transaction that's on the passed hub's scope. + */ +export function addSpanToTransaction( + sentryHub: Hub, + parentSpan?: Span, + op?: string, + description?: string +): Span | undefined { + const actualSpan = parentSpan || sentryHub.getScope()?.getTransaction(); + const span = actualSpan?.startChild({ op, description }); + sentryHub.configureScope((scope) => scope.setSpan(span)); + + return span; +} + +export function captureMinimalError(error: unknown | Error | AxiosError, hub: Hub) { + const isAxiosError = error instanceof AxiosError; + const sentryError = + error instanceof Error + ? { + name: `${isAxiosError && error.status ? error.status : ""}: ${error.name}`, + message: error.message, + stack: error.stack, + } + : {}; + + hub.captureException(sentryError); +} diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index efe98860f080..e6e485d26705 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -64,6 +64,18 @@ export type Options = { // name?: string, // url?: string, // } + + /** + * If set to true, internal plugin errors and performance data will be sent to Sentry. + * + * At Sentry we like to use Sentry ourselves to deliver faster and more stable products. + * We're very careful of what we're sending. We won't collect anything other than error + * and high-level performance data. We will never collect your code or any details of the + * projects in which you're using this plugin. + * + * Defaults to true + */ + telemetry?: boolean; }; /* diff --git a/yarn.lock b/yarn.lock index 3fd11dfb3c1e..d34d5050a38d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1635,6 +1635,16 @@ lru_map "^0.3.3" tslib "^1.9.3" +"@sentry/tracing@^7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.11.1.tgz#50cbe82dd5b9a1307b31761cdd4b0d71132cf5c7" + integrity sha512-ilgnHfpdYUWKG/5yAXIfIbPVsCfrC4ONFBR/wN25/hdAyVfXMa3AJx7NCCXxZBOPDWH3hMW8rl4La5yuDbXofg== + dependencies: + "@sentry/hub" "7.11.1" + "@sentry/types" "7.11.1" + "@sentry/utils" "7.11.1" + tslib "^1.9.3" + "@sentry/types@7.11.1": version "7.11.1" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.11.1.tgz#06e2827f6ba37159c33644208a0453b86d25e232" From 3058cb297e32402b9de976819a60e70378fd561f Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 26 Aug 2022 18:01:26 +0200 Subject: [PATCH 038/640] ref: remove sentryFacade (#46) Remove our `SentryFacade` abstraction from the project. As we got rid of Sentry CLI (#34) there is no need anymore to have this additional layer and we can just call the facade's functions directly. Additionally, the PR introduces the `SentryContext` type which should hold "sentry internal" values/data, like the hub and the parent span. We might wanna add the logger here later (cc @vladanpaunovic). This replaces the arguments we pass down to the release pipeline functions so we can add more stuff w/o having to add yet another param. --- packages/unplugin/src/index.ts | 33 ++++---- .../sentry/{facade.ts => releasePipeline.ts} | 79 ++++++------------- packages/unplugin/src/sentry/telemetry.ts | 9 ++- packages/unplugin/src/types.ts | 13 +++ 4 files changed, 59 insertions(+), 75 deletions(-) rename packages/unplugin/src/sentry/{facade.ts => releasePipeline.ts} (78%) diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 2b8cbade15b4..d989e6b39799 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -1,8 +1,15 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; import { getReleaseName } from "./getReleaseName"; -import { Options } from "./types"; -import { makeSentryFacade } from "./sentry/facade"; +import { Options, BuildContext } from "./types"; +import { + createNewRelease, + cleanArtifacts, + addDeploy, + finalizeRelease, + setCommits, + uploadSourceMaps, +} from "./sentry/releasePipeline"; import "@sentry/tracing"; import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; @@ -132,8 +139,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) name: "plugin-execution", }); releaseInjectionSpan = addSpanToTransaction( - sentryHub, - transaction, + { hub: sentryHub, parentSpan: transaction }, "release-injection", "release-injection" ); @@ -272,11 +278,9 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) buildEnd() { releaseInjectionSpan?.finish(); const releasePipelineSpan = - sentryHub && transaction && addSpanToTransaction( - sentryHub, - transaction, + { hub: sentryHub, parentSpan: transaction }, "release-creation", "release-creation-pipeline" ); @@ -294,15 +298,14 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) // That's good for them but a hassle for us. Let's try to normalize this into one data type // (I vote IncludeEntry[]) and continue with that down the line - const sentryFacade = makeSentryFacade(release, options, sentryHub); + const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan }; - sentryFacade - .createNewRelease() - .then(() => sentryFacade.cleanArtifacts()) - .then(() => sentryFacade.uploadSourceMaps()) - .then(() => sentryFacade.setCommits()) // this is a noop for now - .then(() => sentryFacade.finalizeRelease()) - .then(() => sentryFacade.addDeploy()) // this is a noop for now + createNewRelease(release, options, ctx) + .then(() => cleanArtifacts(release, options, ctx)) + .then(() => uploadSourceMaps(release, options, ctx)) + .then(() => setCommits(ctx)) // this is a noop for now + .then(() => finalizeRelease(release, options, ctx)) + .then(() => addDeploy(ctx)) // this is a noop for now .catch((e) => { //TODO: invoke error handler here // https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L540-L547 diff --git a/packages/unplugin/src/sentry/facade.ts b/packages/unplugin/src/sentry/releasePipeline.ts similarity index 78% rename from packages/unplugin/src/sentry/facade.ts rename to packages/unplugin/src/sentry/releasePipeline.ts index 105882f6fdfb..56d088aeae4b 100644 --- a/packages/unplugin/src/sentry/facade.ts +++ b/packages/unplugin/src/sentry/releasePipeline.ts @@ -6,45 +6,17 @@ // - huge download // - unnecessary functionality -import { Hub } from "@sentry/node"; -import { Span } from "@sentry/types"; -import { Options } from "../types"; +import { Options, BuildContext } from "../types"; import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; import { getFiles } from "./sourcemaps"; import { addSpanToTransaction } from "./telemetry"; -export type SentryFacade = { - createNewRelease: () => Promise; - cleanArtifacts: () => Promise; - uploadSourceMaps: () => Promise; - setCommits: () => Promise; - finalizeRelease: () => Promise; - addDeploy: () => Promise; -}; - -/** - * Factory function that provides all necessary Sentry functionality for creating - * a release on Sentry. This includes uploading source maps and finalizing the release - */ -export function makeSentryFacade(release: string, options: Options, sentryHub: Hub): SentryFacade { - const span = sentryHub.getScope()?.getSpan(); - return { - createNewRelease: () => createNewRelease(release, options, sentryHub, span), - cleanArtifacts: () => cleanArtifacts(release, options, sentryHub, span), - uploadSourceMaps: () => uploadSourceMaps(release, options, sentryHub, span), - setCommits: () => setCommits(/* release, */ sentryHub, span), - finalizeRelease: () => finalizeRelease(release, options, sentryHub, span), - addDeploy: () => addDeploy(/* release, */ sentryHub, span), - }; -} - -async function createNewRelease( +export async function createNewRelease( release: string, options: Options, - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "create-new-release"); + const span = addSpanToTransaction(ctx, "create-new-release"); // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { @@ -71,7 +43,7 @@ async function createNewRelease( org: options.org, project: options.project, sentryUrl: options.url, - sentryHub, + sentryHub: ctx.hub, }); // eslint-disable-next-line no-console @@ -81,13 +53,12 @@ async function createNewRelease( return Promise.resolve("nothing to do here"); } -async function uploadSourceMaps( +export async function uploadSourceMaps( release: string, options: Options, - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "upload-sourceMaps"); + const span = addSpanToTransaction(ctx, "upload-sourceMaps"); // This is what Sentry CLI does: // TODO: 0. Preprocess source maps // - (Out of scope for now) @@ -160,7 +131,7 @@ async function uploadSourceMaps( sentryUrl: url, filename: file.name, fileContent: file.content, - sentryHub, + sentryHub: ctx.hub, }) ) ).then(() => { @@ -171,13 +142,12 @@ async function uploadSourceMaps( }); } -async function finalizeRelease( +export async function finalizeRelease( release: string, options: Options, - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "finalize-release"); + const span = addSpanToTransaction(ctx, "finalize-release"); if (options.finalize) { const { authToken, org, url, project } = options; @@ -195,7 +165,7 @@ async function finalizeRelease( release, sentryUrl: url, project, - sentryHub, + sentryHub: ctx.hub, }); // eslint-disable-next-line no-console console.log("[Sentry-plugin] Successfully finalized release."); @@ -205,13 +175,12 @@ async function finalizeRelease( return Promise.resolve("nothing to do here"); } -async function cleanArtifacts( +export async function cleanArtifacts( release: string, options: Options, - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "clean-artifacts"); + const span = addSpanToTransaction(ctx, "clean-artifacts"); if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them @@ -247,7 +216,7 @@ async function cleanArtifacts( release, sentryUrl: options.url, project: options.project, - sentryHub, + sentryHub: ctx.hub, }); // eslint-disable-next-line no-console @@ -260,23 +229,21 @@ async function cleanArtifacts( // TODO: Stuff we worry about later: -async function setCommits( +export async function setCommits( /* version: string, */ - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "set-commits"); + const span = addSpanToTransaction(ctx, "set-commits"); span?.finish(); return Promise.resolve("Noop"); } -async function addDeploy( +export async function addDeploy( /* version: string, */ - sentryHub: Hub, - parentSpan?: Span + ctx: BuildContext ): Promise { - const span = addSpanToTransaction(sentryHub, parentSpan, "add-deploy"); + const span = addSpanToTransaction(ctx, "add-deploy"); span?.finish(); return Promise.resolve("Noop"); diff --git a/packages/unplugin/src/sentry/telemetry.ts b/packages/unplugin/src/sentry/telemetry.ts index 9db7aee3f451..16bd7de8b6db 100644 --- a/packages/unplugin/src/sentry/telemetry.ts +++ b/packages/unplugin/src/sentry/telemetry.ts @@ -9,6 +9,7 @@ import { import { Span } from "@sentry/tracing"; import { AxiosError } from "axios"; import { version as unpluginVersion } from "../../package.json"; +import { BuildContext } from "../types"; export function makeSentryClient( dsn: string, @@ -48,14 +49,14 @@ export function makeSentryClient( * Adds a span to the passed parentSpan or to the current transaction that's on the passed hub's scope. */ export function addSpanToTransaction( - sentryHub: Hub, - parentSpan?: Span, + ctx: BuildContext, op?: string, description?: string ): Span | undefined { - const actualSpan = parentSpan || sentryHub.getScope()?.getTransaction(); + const { hub, parentSpan } = ctx; + const actualSpan = parentSpan || hub.getScope()?.getTransaction(); const span = actualSpan?.startChild({ op, description }); - sentryHub.configureScope((scope) => scope.setSpan(span)); + hub.configureScope((scope) => scope.setSpan(span)); return span; } diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index e6e485d26705..34c5f1274e94 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -1,4 +1,8 @@ //TODO: JsDoc for all properties + +import { Hub } from "@sentry/hub"; +import { Span } from "@sentry/tracing"; + //TODO: compare types w/ webpack plugin (and sentry-cli?) export type Options = { debugLogging?: boolean; @@ -84,3 +88,12 @@ type IncludeEntry = { //TODO: what about the other entries?? }; */ + +/** + * Holds data for internal purposes + * (e.g. telemetry and logging) + */ +export type BuildContext = { + hub: Hub; + parentSpan?: Span; +}; From 0741c94b55f872aff70701a6962c0c94f7d721c5 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Fri, 26 Aug 2022 18:06:21 +0200 Subject: [PATCH 039/640] feat: Add `errorHandler` option (#35) Co-authored-by: Luca Forstner --- .../playground/scripts/request-logger-proxy.ts | 2 +- packages/unplugin/src/index.ts | 15 +++++++++++---- packages/unplugin/src/types.ts | 16 +++++++++++++++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/packages/playground/scripts/request-logger-proxy.ts b/packages/playground/scripts/request-logger-proxy.ts index ce80bf0d77fc..bf078e550444 100644 --- a/packages/playground/scripts/request-logger-proxy.ts +++ b/packages/playground/scripts/request-logger-proxy.ts @@ -40,7 +40,7 @@ app.use(function (req, res, next) { res.end = function (chunk) { if (chunk) resBody.push(chunk); - const resLog = `Response headers: ${JSON.stringify( + const resLog = `Response status: ${res.statusCode}\nResponse headers: ${JSON.stringify( res.getHeaders(), null, 2 diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index d989e6b39799..5e844e3e7bc8 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -306,12 +306,20 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) .then(() => setCommits(ctx)) // this is a noop for now .then(() => finalizeRelease(release, options, ctx)) .then(() => addDeploy(ctx)) // this is a noop for now - .catch((e) => { - //TODO: invoke error handler here - // https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L540-L547 + .then(() => { + transaction?.setStatus("ok"); + }) + .catch((e: Error) => { captureMinimalError(e, sentryHub); transaction?.setStatus("cancelled"); + debugLog(e); + + if (options.errorHandler) { + options.errorHandler(e); + } else { + throw e; + } }) .finally(() => { sentryHub.addBreadcrumb({ @@ -319,7 +327,6 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) level: "info", }); releasePipelineSpan?.finish(); - transaction?.setStatus("ok"); transaction?.finish(); }); }, diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index 34c5f1274e94..92e8c6ad6150 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -52,7 +52,21 @@ export type Options = { debug?: boolean; // silent?: boolean, cleanArtifacts?: boolean; - // errorHandler?: (err: Error, invokeErr: function(): void, compilation: unknown) => void, + + /** + * When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. + * + * By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. + * + * To allow compilation to continue but still emit a warning, set this option to the following: + * + * ```js + * (err) => { + * console.warn(err); + * } + * ``` + */ + errorHandler?: (err: Error) => void; // setCommits?: { // repo?: string, // commit?: string, From b4d534e02efb64378d6bc479d83613a2e486e08c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 26 Aug 2022 18:15:48 +0200 Subject: [PATCH 040/640] feat: Add individual bundler packages (#42) --- nx.json | 4 +- package.json | 2 +- packages/esbuild-plugin/.babelrc.json | 3 + packages/esbuild-plugin/.eslintrc.js | 20 ++++++ packages/esbuild-plugin/.gitignore | 1 + packages/esbuild-plugin/LICENSE | 29 +++++++++ packages/esbuild-plugin/jest.config.js | 6 ++ packages/esbuild-plugin/package.json | 61 ++++++++++++++++++ packages/esbuild-plugin/rollup.config.js | 35 +++++++++++ packages/esbuild-plugin/src/index.ts | 2 + packages/esbuild-plugin/src/tsconfig.json | 8 +++ .../esbuild-plugin/test/public-api.test.ts | 6 ++ packages/esbuild-plugin/test/tsconfig.json | 8 +++ packages/esbuild-plugin/types.tsconfig.json | 11 ++++ packages/eslint-configs/package.json | 3 +- packages/integration-tests/.eslintrc.js | 2 +- packages/integration-tests/package.json | 11 ++-- packages/integration-tests/tsconfig.json | 2 +- .../utils/create-cjs-bundles.ts | 2 +- packages/playground/build-esbuild.js | 2 +- packages/playground/build-webpack4.js | 2 +- packages/playground/build-webpack5.js | 2 +- packages/playground/package.json | 8 +-- packages/playground/rollup.config.js | 2 +- packages/playground/vite.config.js | 2 +- .../playground/vite.config.smallNodeApp.js | 2 +- packages/rollup-plugin/.babelrc.json | 3 + packages/rollup-plugin/.eslintrc.js | 20 ++++++ packages/rollup-plugin/.gitignore | 1 + packages/rollup-plugin/LICENSE | 29 +++++++++ packages/rollup-plugin/jest.config.js | 6 ++ packages/rollup-plugin/package.json | 62 +++++++++++++++++++ packages/rollup-plugin/rollup.config.js | 35 +++++++++++ packages/rollup-plugin/src/index.ts | 2 + packages/rollup-plugin/src/tsconfig.json | 8 +++ .../rollup-plugin/test/public-api.test.ts | 6 ++ packages/rollup-plugin/test/tsconfig.json | 8 +++ packages/rollup-plugin/types.tsconfig.json | 11 ++++ packages/tsconfigs/package.json | 3 +- packages/unplugin/.eslintrc.js | 2 +- packages/unplugin/package.json | 21 +++++-- packages/unplugin/src/tsconfig.json | 2 +- packages/vite-plugin/.babelrc.json | 3 + packages/vite-plugin/.eslintrc.js | 20 ++++++ packages/vite-plugin/.gitignore | 1 + packages/vite-plugin/LICENSE | 29 +++++++++ packages/vite-plugin/jest.config.js | 6 ++ packages/vite-plugin/package.json | 61 ++++++++++++++++++ packages/vite-plugin/rollup.config.js | 35 +++++++++++ packages/vite-plugin/src/index.ts | 2 + packages/vite-plugin/src/tsconfig.json | 8 +++ packages/vite-plugin/test/public-api.test.ts | 6 ++ packages/vite-plugin/test/tsconfig.json | 8 +++ packages/vite-plugin/types.tsconfig.json | 11 ++++ packages/webpack-plugin/.babelrc.json | 3 + packages/webpack-plugin/.eslintrc.js | 20 ++++++ packages/webpack-plugin/.gitignore | 1 + packages/webpack-plugin/LICENSE | 29 +++++++++ packages/webpack-plugin/jest.config.js | 6 ++ packages/webpack-plugin/package.json | 62 +++++++++++++++++++ packages/webpack-plugin/rollup.config.js | 35 +++++++++++ packages/webpack-plugin/src/index.ts | 2 + packages/webpack-plugin/src/tsconfig.json | 8 +++ .../webpack-plugin/test/public-api.test.ts | 6 ++ packages/webpack-plugin/test/tsconfig.json | 8 +++ packages/webpack-plugin/types.tsconfig.json | 11 ++++ yarn.lock | 2 +- 67 files changed, 806 insertions(+), 32 deletions(-) create mode 100644 packages/esbuild-plugin/.babelrc.json create mode 100644 packages/esbuild-plugin/.eslintrc.js create mode 100644 packages/esbuild-plugin/.gitignore create mode 100644 packages/esbuild-plugin/LICENSE create mode 100644 packages/esbuild-plugin/jest.config.js create mode 100644 packages/esbuild-plugin/package.json create mode 100644 packages/esbuild-plugin/rollup.config.js create mode 100644 packages/esbuild-plugin/src/index.ts create mode 100644 packages/esbuild-plugin/src/tsconfig.json create mode 100644 packages/esbuild-plugin/test/public-api.test.ts create mode 100644 packages/esbuild-plugin/test/tsconfig.json create mode 100644 packages/esbuild-plugin/types.tsconfig.json create mode 100644 packages/rollup-plugin/.babelrc.json create mode 100644 packages/rollup-plugin/.eslintrc.js create mode 100644 packages/rollup-plugin/.gitignore create mode 100644 packages/rollup-plugin/LICENSE create mode 100644 packages/rollup-plugin/jest.config.js create mode 100644 packages/rollup-plugin/package.json create mode 100644 packages/rollup-plugin/rollup.config.js create mode 100644 packages/rollup-plugin/src/index.ts create mode 100644 packages/rollup-plugin/src/tsconfig.json create mode 100644 packages/rollup-plugin/test/public-api.test.ts create mode 100644 packages/rollup-plugin/test/tsconfig.json create mode 100644 packages/rollup-plugin/types.tsconfig.json create mode 100644 packages/vite-plugin/.babelrc.json create mode 100644 packages/vite-plugin/.eslintrc.js create mode 100644 packages/vite-plugin/.gitignore create mode 100644 packages/vite-plugin/LICENSE create mode 100644 packages/vite-plugin/jest.config.js create mode 100644 packages/vite-plugin/package.json create mode 100644 packages/vite-plugin/rollup.config.js create mode 100644 packages/vite-plugin/src/index.ts create mode 100644 packages/vite-plugin/src/tsconfig.json create mode 100644 packages/vite-plugin/test/public-api.test.ts create mode 100644 packages/vite-plugin/test/tsconfig.json create mode 100644 packages/vite-plugin/types.tsconfig.json create mode 100644 packages/webpack-plugin/.babelrc.json create mode 100644 packages/webpack-plugin/.eslintrc.js create mode 100644 packages/webpack-plugin/.gitignore create mode 100644 packages/webpack-plugin/LICENSE create mode 100644 packages/webpack-plugin/jest.config.js create mode 100644 packages/webpack-plugin/package.json create mode 100644 packages/webpack-plugin/rollup.config.js create mode 100644 packages/webpack-plugin/src/index.ts create mode 100644 packages/webpack-plugin/src/tsconfig.json create mode 100644 packages/webpack-plugin/test/public-api.test.ts create mode 100644 packages/webpack-plugin/test/tsconfig.json create mode 100644 packages/webpack-plugin/types.tsconfig.json diff --git a/nx.json b/nx.json index 407ad942c044..5fcc7fdcb750 100644 --- a/nx.json +++ b/nx.json @@ -1,7 +1,6 @@ { "extends": "nx/presets/npm.json", "$schema": "./node_modules/nx/schemas/nx-schema.json", - "npmScope": "sentry", "affected": { "defaultBase": "main" }, @@ -14,6 +13,9 @@ } }, "targetDefaults": { + "build": { + "dependsOn": ["^build"] + }, "lint": { "dependsOn": ["^build", "build"] }, diff --git a/package.json b/package.json index cb4782946056..30c27d7bb452 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@sentry/unplugin-root", + "name": "@sentry/sentry-unplugin-root", "version": "0.0.0", "description": "Root of the sentry unplugin monorepo.", "repository": "git@github.com:lforst/sentry-unplugin.git", diff --git a/packages/esbuild-plugin/.babelrc.json b/packages/esbuild-plugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/esbuild-plugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js new file mode 100644 index 000000000000..42b35d843948 --- /dev/null +++ b/packages/esbuild-plugin/.eslintrc.js @@ -0,0 +1,20 @@ +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.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./src/tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/esbuild-plugin/.gitignore b/packages/esbuild-plugin/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/esbuild-plugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/esbuild-plugin/LICENSE b/packages/esbuild-plugin/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/packages/esbuild-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/esbuild-plugin/jest.config.js b/packages/esbuild-plugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/esbuild-plugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json new file mode 100644 index 000000000000..686ddc6b53ab --- /dev/null +++ b/packages/esbuild-plugin/package.json @@ -0,0 +1,61 @@ +{ + "name": "@sentry/esbuild-plugin", + "version": "0.0.1", + "description": "Official Sentry esbuild plugin", + "repository": "git://github.com/getsentry/sentry-unplugin.git", + "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "esbuild", + "bundler", + "plugin" + ], + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "scripts": { + "build": "rimraf ./out && run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "test": "jest", + "lint": "eslint ./src ./test" + }, + "dependencies": { + "@sentry/sentry-unplugin": "0.0.1" + }, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "13.3.0", + "@swc/core": "^1.2.205", + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", + "@types/node": "^18.6.3", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", + "eslint": "^8.18.0", + "jest": "^28.1.1", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "rollup": "2.75.7", + "typescript": "^4.7.4" + } +} diff --git a/packages/esbuild-plugin/rollup.config.js b/packages/esbuild-plugin/rollup.config.js new file mode 100644 index 000000000000..eb423e78ca7b --- /dev/null +++ b/packages/esbuild-plugin/rollup.config.js @@ -0,0 +1,35 @@ +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; +import modulePackage from "module"; + +const input = ["src/index.ts"]; + +const extensions = [".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts new file mode 100644 index 000000000000..92e5078306d6 --- /dev/null +++ b/packages/esbuild-plugin/src/index.ts @@ -0,0 +1,2 @@ +export { sentryEsbuildPlugin as default } from "@sentry/sentry-unplugin"; +export type { Options } from "@sentry/sentry-unplugin"; diff --git a/packages/esbuild-plugin/src/tsconfig.json b/packages/esbuild-plugin/src/tsconfig.json new file mode 100644 index 000000000000..86051fab4936 --- /dev/null +++ b/packages/esbuild-plugin/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "include": ["./**/*", "../package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts new file mode 100644 index 000000000000..7a5ea90962c4 --- /dev/null +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -0,0 +1,6 @@ +import sentryEsbuildPlugin from "../src"; + +test("Esbuild plugin should exist", () => { + expect(sentryEsbuildPlugin).toBeDefined(); + expect(typeof sentryEsbuildPlugin).toBe("function"); +}); diff --git a/packages/esbuild-plugin/test/tsconfig.json b/packages/esbuild-plugin/test/tsconfig.json new file mode 100644 index 000000000000..b73d9b533da9 --- /dev/null +++ b/packages/esbuild-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../src/tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/esbuild-plugin/types.tsconfig.json b/packages/esbuild-plugin/types.tsconfig.json new file mode 100644 index 000000000000..fb161bc4ab78 --- /dev/null +++ b/packages/esbuild-plugin/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index bdbdec961fde..9f71e0e10d4e 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,7 @@ { - "name": "eslint-config-local", + "name": "@sentry-internal/eslint-config", "version": "0.0.0", + "license": "MIT", "private": true, "peerDependencies": { "eslint": "^8.14.0" diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js index 3e5522099d0e..bf333cd92a45 100644 --- a/packages/integration-tests/.eslintrc.js +++ b/packages/integration-tests/.eslintrc.js @@ -3,7 +3,7 @@ const jestPackageJson = require("jest/package.json"); /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["local/jest", "local/base"], + extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "fixtures/*/out", "jest.config.js"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 37bf574c0629..f04bd92c2fab 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,7 @@ { - "name": "@sentry/integration-tests", - "version": "1.0.0", + "name": "@sentry-internal/integration-tests", + "version": "0.0.0", + "license": "MIT", "private": true, "scripts": { "test": "run-s test:setup test:jest", @@ -12,10 +13,10 @@ "dependencies": { "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", - "@sentry/unplugin": "*", + "@sentry/sentry-unplugin": "*", "@types/webpack4": "npm:@types/webpack@4.41.32", - "eslint-config-local": "*", - "sentry-unplugin-tsconfigs": "*", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", "esbuild": "0.14.49", "jest": "^28.1.3", "npm-run-all": "4.1.5", diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json index 4eedee320803..c697299a2fcb 100644 --- a/packages/integration-tests/tsconfig.json +++ b/packages/integration-tests/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "sentry-unplugin-tsconfigs/base-config.json", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index e75b88487268..d335d656745b 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -10,7 +10,7 @@ import { sentryVitePlugin, sentryWebpackPlugin, Options, -} from "@sentry/unplugin"; +} from "@sentry/sentry-unplugin"; export function createCjsBundles( entrypoints: { [name: string]: string }, diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 7aa5bf99569a..6eee7f2a9e8c 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -1,4 +1,4 @@ -const { sentryEsbuildPlugin } = require("@sentry/unplugin"); +const { sentryEsbuildPlugin } = require("@sentry/sentry-unplugin"); const { build } = require("esbuild"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 50b00612be0a..3de801e19c89 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack4 = require("webpack4"); -const { sentryWebpackPlugin } = require("@sentry/unplugin"); +const { sentryWebpackPlugin } = require("@sentry/sentry-unplugin"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 886763ce44e7..0295c797f0ae 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack5 = require("webpack"); -const { sentryWebpackPlugin } = require("@sentry/unplugin"); +const { sentryWebpackPlugin } = require("@sentry/sentry-unplugin"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/package.json b/packages/playground/package.json index e0d23ef50829..3d800318f81a 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,8 +1,6 @@ { - "name": "@sentry/playground", - "version": "1.0.0", - "main": "index.js", - "author": "Luca Forstner", + "name": "@sentry-internal/unplugin-playground", + "version": "0.0.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +16,7 @@ "dependencies": { "@sentry/integrations": "^7.11.1", "@sentry/node": "^7.11.1", - "@sentry/unplugin": "*", + "@sentry/sentry-unplugin": "*", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.js index ab714fbf71ae..3eb8f3195a31 100644 --- a/packages/playground/rollup.config.js +++ b/packages/playground/rollup.config.js @@ -1,7 +1,7 @@ // @ts-check import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; -import { sentryRollupPlugin } from "@sentry/unplugin"; +import { sentryRollupPlugin } from "@sentry/sentry-unplugin"; import placeHolderOptions from "./config.json"; const input = ["src/entrypoint1.js"]; diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index 90c5df759c06..c68a6a8ff8db 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/unplugin"; +import { sentryVitePlugin } from "@sentry/sentry-unplugin"; import { defineConfig } from "vite"; import * as path from "path"; import placeHolderOptions from "./config.json"; diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index e1b9d13bc9ed..c4d112705085 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/unplugin"; +import { sentryVitePlugin } from "@sentry/sentry-unplugin"; import { defineConfig } from "vite"; import * as path from "path"; diff --git a/packages/rollup-plugin/.babelrc.json b/packages/rollup-plugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/rollup-plugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js new file mode 100644 index 000000000000..42b35d843948 --- /dev/null +++ b/packages/rollup-plugin/.eslintrc.js @@ -0,0 +1,20 @@ +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.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./src/tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/rollup-plugin/.gitignore b/packages/rollup-plugin/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/rollup-plugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/rollup-plugin/LICENSE b/packages/rollup-plugin/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/packages/rollup-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/rollup-plugin/jest.config.js b/packages/rollup-plugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/rollup-plugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json new file mode 100644 index 000000000000..10a3e9eb886e --- /dev/null +++ b/packages/rollup-plugin/package.json @@ -0,0 +1,62 @@ +{ + "name": "@sentry/rollup-plugin", + "version": "0.0.1", + "description": "Official Sentry Rollup plugin", + "repository": "git://github.com/getsentry/sentry-unplugin.git", + "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "rollup-plugin", + "Rollup", + "bundler", + "plugin" + ], + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "scripts": { + "build": "rimraf ./out && run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "test": "jest", + "lint": "eslint ./src ./test" + }, + "dependencies": { + "@sentry/sentry-unplugin": "0.0.1" + }, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "13.3.0", + "@swc/core": "^1.2.205", + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", + "@types/node": "^18.6.3", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", + "eslint": "^8.18.0", + "jest": "^28.1.1", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "rollup": "2.75.7", + "typescript": "^4.7.4" + } +} diff --git a/packages/rollup-plugin/rollup.config.js b/packages/rollup-plugin/rollup.config.js new file mode 100644 index 000000000000..eb423e78ca7b --- /dev/null +++ b/packages/rollup-plugin/rollup.config.js @@ -0,0 +1,35 @@ +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; +import modulePackage from "module"; + +const input = ["src/index.ts"]; + +const extensions = [".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts new file mode 100644 index 000000000000..1a96f42a0fef --- /dev/null +++ b/packages/rollup-plugin/src/index.ts @@ -0,0 +1,2 @@ +export { sentryRollupPlugin as default } from "@sentry/sentry-unplugin"; +export type { Options } from "@sentry/sentry-unplugin"; diff --git a/packages/rollup-plugin/src/tsconfig.json b/packages/rollup-plugin/src/tsconfig.json new file mode 100644 index 000000000000..86051fab4936 --- /dev/null +++ b/packages/rollup-plugin/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "include": ["./**/*", "../package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts new file mode 100644 index 000000000000..59cfdaa3c373 --- /dev/null +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -0,0 +1,6 @@ +import sentryRollupPlugin from "../src"; + +test("Rollup plugin should exist", () => { + expect(sentryRollupPlugin).toBeDefined(); + expect(typeof sentryRollupPlugin).toBe("function"); +}); diff --git a/packages/rollup-plugin/test/tsconfig.json b/packages/rollup-plugin/test/tsconfig.json new file mode 100644 index 000000000000..b73d9b533da9 --- /dev/null +++ b/packages/rollup-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../src/tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/rollup-plugin/types.tsconfig.json b/packages/rollup-plugin/types.tsconfig.json new file mode 100644 index 000000000000..fb161bc4ab78 --- /dev/null +++ b/packages/rollup-plugin/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index a64464ad6997..6060149e4d10 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,5 +1,6 @@ { - "name": "sentry-unplugin-tsconfigs", + "name": "@sentry-internal/sentry-unplugin-tsconfig", "version": "0.0.0", + "license": "MIT", "private": true } diff --git a/packages/unplugin/.eslintrc.js b/packages/unplugin/.eslintrc.js index fe53c9eb2e89..42b35d843948 100644 --- a/packages/unplugin/.eslintrc.js +++ b/packages/unplugin/.eslintrc.js @@ -3,7 +3,7 @@ const jestPackageJson = require("jest/package.json"); /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["local/jest", "local/base"], + extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.js"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index c21f50a472c6..7af444940d18 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -1,11 +1,20 @@ { - "name": "@sentry/unplugin", + "name": "@sentry/sentry-unplugin", "version": "0.0.1", - "description": "Sentry unplugin.", + "description": "Official Sentry unplugin", + "repository": "git://github.com/getsentry/sentry-unplugin.git", + "homepage": "https://github.com/getsentry/sentry-unplugin", + "author": "Sentry", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "types": "dist/types/index.d.ts", - "repository": "https://github.com/lforst/sentry-unplugin", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", @@ -33,14 +42,14 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "eslint-config-local": "*", - "sentry-unplugin-tsconfigs": "*", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/packages/unplugin/src/tsconfig.json b/packages/unplugin/src/tsconfig.json index c7d27b2e5ea7..d1b12b4159b2 100644 --- a/packages/unplugin/src/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "sentry-unplugin-tsconfigs/base-config.json", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true, diff --git a/packages/vite-plugin/.babelrc.json b/packages/vite-plugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/vite-plugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js new file mode 100644 index 000000000000..42b35d843948 --- /dev/null +++ b/packages/vite-plugin/.eslintrc.js @@ -0,0 +1,20 @@ +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.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./src/tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/vite-plugin/.gitignore b/packages/vite-plugin/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/vite-plugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/vite-plugin/LICENSE b/packages/vite-plugin/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/packages/vite-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/vite-plugin/jest.config.js b/packages/vite-plugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/vite-plugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json new file mode 100644 index 000000000000..b7bd0b1bbbca --- /dev/null +++ b/packages/vite-plugin/package.json @@ -0,0 +1,61 @@ +{ + "name": "@sentry/vite-plugin", + "version": "0.0.1", + "description": "Official Sentry Vite plugin", + "repository": "git://github.com/getsentry/sentry-unplugin.git", + "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "Vite", + "bundler", + "plugin" + ], + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "scripts": { + "build": "rimraf ./out && run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "test": "jest", + "lint": "eslint ./src ./test" + }, + "dependencies": { + "@sentry/sentry-unplugin": "0.0.1" + }, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "13.3.0", + "@swc/core": "^1.2.205", + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", + "@types/node": "^18.6.3", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", + "eslint": "^8.18.0", + "jest": "^28.1.1", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "rollup": "2.75.7", + "typescript": "^4.7.4" + } +} diff --git a/packages/vite-plugin/rollup.config.js b/packages/vite-plugin/rollup.config.js new file mode 100644 index 000000000000..eb423e78ca7b --- /dev/null +++ b/packages/vite-plugin/rollup.config.js @@ -0,0 +1,35 @@ +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; +import modulePackage from "module"; + +const input = ["src/index.ts"]; + +const extensions = [".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts new file mode 100644 index 000000000000..216d37ad1f69 --- /dev/null +++ b/packages/vite-plugin/src/index.ts @@ -0,0 +1,2 @@ +export { sentryVitePlugin as default } from "@sentry/sentry-unplugin"; +export type { Options } from "@sentry/sentry-unplugin"; diff --git a/packages/vite-plugin/src/tsconfig.json b/packages/vite-plugin/src/tsconfig.json new file mode 100644 index 000000000000..86051fab4936 --- /dev/null +++ b/packages/vite-plugin/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "include": ["./**/*", "../package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts new file mode 100644 index 000000000000..1de1f84db7f8 --- /dev/null +++ b/packages/vite-plugin/test/public-api.test.ts @@ -0,0 +1,6 @@ +import sentryVitePlugin from "../src"; + +test("Vite plugin should exist", () => { + expect(sentryVitePlugin).toBeDefined(); + expect(typeof sentryVitePlugin).toBe("function"); +}); diff --git a/packages/vite-plugin/test/tsconfig.json b/packages/vite-plugin/test/tsconfig.json new file mode 100644 index 000000000000..b73d9b533da9 --- /dev/null +++ b/packages/vite-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../src/tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/vite-plugin/types.tsconfig.json b/packages/vite-plugin/types.tsconfig.json new file mode 100644 index 000000000000..fb161bc4ab78 --- /dev/null +++ b/packages/vite-plugin/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/packages/webpack-plugin/.babelrc.json b/packages/webpack-plugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/webpack-plugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js new file mode 100644 index 000000000000..42b35d843948 --- /dev/null +++ b/packages/webpack-plugin/.eslintrc.js @@ -0,0 +1,20 @@ +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.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./src/tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/webpack-plugin/.gitignore b/packages/webpack-plugin/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/webpack-plugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/webpack-plugin/LICENSE b/packages/webpack-plugin/LICENSE new file mode 100644 index 000000000000..4acee9a39ecb --- /dev/null +++ b/packages/webpack-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/webpack-plugin/jest.config.js b/packages/webpack-plugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/webpack-plugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json new file mode 100644 index 000000000000..ea00ca445824 --- /dev/null +++ b/packages/webpack-plugin/package.json @@ -0,0 +1,62 @@ +{ + "name": "@sentry/webpack-plugin", + "version": "0.0.1", + "description": "Official Sentry Webpack plugin", + "repository": "git://github.com/getsentry/sentry-unplugin.git", + "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "Vite", + "bundler", + "plugin" + ], + "private": true, + "publishConfig": { + "access": "restricted" + }, + "files": [ + "dist" + ], + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "scripts": { + "build": "rimraf ./out && run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "test": "jest", + "lint": "eslint ./src ./test" + }, + "dependencies": { + "@sentry/sentry-unplugin": "0.0.1" + }, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "13.3.0", + "@swc/core": "^1.2.205", + "@swc/jest": "^0.2.21", + "@types/jest": "^28.1.3", + "@types/node": "^18.6.3", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", + "eslint": "^8.18.0", + "jest": "^28.1.1", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "rollup": "2.75.7", + "typescript": "^4.7.4" + } +} diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js new file mode 100644 index 000000000000..eb423e78ca7b --- /dev/null +++ b/packages/webpack-plugin/rollup.config.js @@ -0,0 +1,35 @@ +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; +import modulePackage from "module"; + +const input = ["src/index.ts"]; + +const extensions = [".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts new file mode 100644 index 000000000000..7f1b86e673ff --- /dev/null +++ b/packages/webpack-plugin/src/index.ts @@ -0,0 +1,2 @@ +export { sentryWebpackPlugin as default } from "@sentry/sentry-unplugin"; +export type { Options } from "@sentry/sentry-unplugin"; diff --git a/packages/webpack-plugin/src/tsconfig.json b/packages/webpack-plugin/src/tsconfig.json new file mode 100644 index 000000000000..86051fab4936 --- /dev/null +++ b/packages/webpack-plugin/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "include": ["./**/*", "../package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts new file mode 100644 index 000000000000..81979a74183f --- /dev/null +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -0,0 +1,6 @@ +import sentryWebpackPlugin from "../src"; + +test("Webpack plugin should exist", () => { + expect(sentryWebpackPlugin).toBeDefined(); + expect(typeof sentryWebpackPlugin).toBe("function"); +}); diff --git a/packages/webpack-plugin/test/tsconfig.json b/packages/webpack-plugin/test/tsconfig.json new file mode 100644 index 000000000000..b73d9b533da9 --- /dev/null +++ b/packages/webpack-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../src/tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/webpack-plugin/types.tsconfig.json b/packages/webpack-plugin/types.tsconfig.json new file mode 100644 index 000000000000..fb161bc4ab78 --- /dev/null +++ b/packages/webpack-plugin/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/yarn.lock b/yarn.lock index d34d5050a38d..a71a052cf63e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1564,7 +1564,7 @@ magic-string "^0.25.7" resolve "^1.17.0" -"@rollup/plugin-json@^4.1.0": +"@rollup/plugin-json@4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== From 8fd022757c71046a6067e4ed1d61cf810254d65e Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Fri, 26 Aug 2022 18:45:42 +0200 Subject: [PATCH 041/640] chore(README): Add READMEs (#39) Co-authored-by: Luca Forstner --- README.md | 36 +++++++++++++++++++++++++- packages/esbuild-plugin/README.md | 43 +++++++++++++++++++++++++++++++ packages/rollup-plugin/README.md | 43 +++++++++++++++++++++++++++++++ packages/unplugin/src/index.ts | 1 - packages/unplugin/src/types.ts | 1 - packages/vite-plugin/README.md | 43 +++++++++++++++++++++++++++++++ packages/webpack-plugin/README.md | 43 +++++++++++++++++++++++++++++++ 7 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 packages/esbuild-plugin/README.md create mode 100644 packages/rollup-plugin/README.md create mode 100644 packages/vite-plugin/README.md create mode 100644 packages/webpack-plugin/README.md diff --git a/README.md b/README.md index dc55f7cd218c..a29237caa0e9 100644 --- a/README.md +++ b/README.md @@ -1 +1,35 @@ -# sentry-unplugin +

+ + Sentry + +

+ +# Sentry Unplugin + +**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** + +Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. + +Check out the individual packages for more information and examples: + +- [Rollup](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/webpack-plugin) + +### Features + +The Sentry Unplugin supports [Sentry CLI](https://docs.sentry.io/learn/cli/) features required for node environments: + +- Sourcemap upload +- Release creation in Sentry +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically associate errors with releases (Release injection) + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md new file mode 100644 index 000000000000..b95d5da310c9 --- /dev/null +++ b/packages/esbuild-plugin/README.md @@ -0,0 +1,43 @@ +

+ + Sentry + +

+ +# Sentry Esbuild Plugin + +**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** + +A esbuild plugin that provides release management features for Sentry: + +- Sourcemap upload +- Release creation +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically association of errors with releases (Release injection) + +### Configuration + +Every plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. | +| project | `string` | optional | The slug of the Sentry project associated with the app. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | +| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | +| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | +| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | +| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | +| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md new file mode 100644 index 000000000000..919e61e06878 --- /dev/null +++ b/packages/rollup-plugin/README.md @@ -0,0 +1,43 @@ +

+ + Sentry + +

+ +# Sentry Rollup Plugin + +**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** + +A Rollup plugin that provides release management features for Sentry: + +- Sourcemap upload +- Release creation +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically association of errors with releases (Release injection) + +### Configuration + +Every plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. | +| project | `string` | optional | The slug of the Sentry project associated with the app. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | +| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | +| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | +| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | +| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | +| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 5e844e3e7bc8..35ad7a118d41 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -17,7 +17,6 @@ import { Span, Transaction } from "@sentry/types"; const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin // validate: false - configFile: "~/.sentryclirc", debug: false, cleanArtifacts: false, finalize: true, diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index 92e8c6ad6150..c73a2a5cbc13 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -12,7 +12,6 @@ export type Options = { project?: string; authToken?: string; url?: string; - configFile?: string; /* --- release properties: */ release?: string; diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md new file mode 100644 index 000000000000..29fde81497e7 --- /dev/null +++ b/packages/vite-plugin/README.md @@ -0,0 +1,43 @@ +

+ + Sentry + +

+ +# Sentry Vite Plugin + +**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** + +A Vite plugin that provides release management features for Sentry: + +- Sourcemap upload +- Release creation +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically association of errors with releases (Release injection) + +### Configuration + +Every plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. | +| project | `string` | optional | The slug of the Sentry project associated with the app. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | +| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | +| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | +| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | +| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | +| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md new file mode 100644 index 000000000000..05e169c55ba5 --- /dev/null +++ b/packages/webpack-plugin/README.md @@ -0,0 +1,43 @@ +

+ + Sentry + +

+ +# Sentry Webpack Plugin + +**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** + +A Webpack plugin that provides release management features for Sentry: + +- Sourcemap upload +- Release creation +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically association of errors with releases (Release injection) + +### Configuration + +Every plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. | +| project | `string` | optional | The slug of the Sentry project associated with the app. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | +| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | +| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | +| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | +| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | +| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) From 2c12274036db664f2fc91466e4f7b37b337bfc2a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 26 Aug 2022 23:12:16 +0200 Subject: [PATCH 042/640] ref: Inject package version via rollup plugin --- packages/unplugin/.eslintrc.js | 3 +++ packages/unplugin/jest.config.js | 5 +++++ packages/unplugin/package.json | 5 +++-- packages/unplugin/rollup.config.js | 4 ++++ packages/unplugin/src/globals.d.ts | 5 +++++ packages/unplugin/src/sentry/api.ts | 11 ++--------- packages/unplugin/src/sentry/telemetry.ts | 9 +++++++-- packages/unplugin/src/tsconfig.json | 2 +- yarn.lock | 8 ++++++++ 9 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 packages/unplugin/src/globals.d.ts diff --git a/packages/unplugin/.eslintrc.js b/packages/unplugin/.eslintrc.js index 42b35d843948..404bc734c663 100644 --- a/packages/unplugin/.eslintrc.js +++ b/packages/unplugin/.eslintrc.js @@ -9,6 +9,9 @@ module.exports = { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], }, + globals: { + __PACKAGE_VERSION__: "readonly", + }, env: { node: true, }, diff --git a/packages/unplugin/jest.config.js b/packages/unplugin/jest.config.js index 160178bbd22f..5354af34a5d8 100644 --- a/packages/unplugin/jest.config.js +++ b/packages/unplugin/jest.config.js @@ -1,6 +1,11 @@ +const packageJson = require("./package.json"); + module.exports = { testEnvironment: "node", transform: { "^.+\\.(t|j)sx?$": ["@swc/jest"], }, + globals: { + __PACKAGE_VERSION__: packageJson.version, + }, }; diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 7af444940d18..9c5578b70117 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -44,12 +44,13 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", + "@rollup/plugin-replace": "^4.0.0", + "@sentry-internal/eslint-config": "*", + "@sentry-internal/sentry-unplugin-tsconfig": "*", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/packages/unplugin/rollup.config.js b/packages/unplugin/rollup.config.js index 588b923cf5e2..8e13d8366fa0 100644 --- a/packages/unplugin/rollup.config.js +++ b/packages/unplugin/rollup.config.js @@ -1,5 +1,6 @@ import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; +import replace from "@rollup/plugin-replace"; import babel from "@rollup/plugin-babel"; import packageJson from "./package.json"; import json from "@rollup/plugin-json"; @@ -16,6 +17,9 @@ export default { resolve({ extensions, preferBuiltins: true }), commonjs(), json(), + replace({ + __PACKAGE_VERSION__: JSON.stringify(packageJson.version), + }), babel({ extensions, babelHelpers: "bundled", diff --git a/packages/unplugin/src/globals.d.ts b/packages/unplugin/src/globals.d.ts new file mode 100644 index 000000000000..f0bf426dddfc --- /dev/null +++ b/packages/unplugin/src/globals.d.ts @@ -0,0 +1,5 @@ +/** + * Variable injected during build process. Evaluates to the current version as provided in the package.json's version + * field. + */ +declare const __PACKAGE_VERSION__: string; diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index 9e2150c1fa6a..ebda97c9d80f 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -1,18 +1,11 @@ +import { Hub } from "@sentry/node"; import axios from "axios"; - import FormData from "form-data"; - -// We need to ignore the import because the package.json is not part of the TS project as configured in tsconfig.json -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import { version as unpluginVersion } from "../../package.json"; import { captureMinimalError } from "./telemetry"; -import { Hub } from "@sentry/node"; const API_PATH = "/api/0"; +const USER_AGENT = `sentry-unplugin/${__PACKAGE_VERSION__}`; -// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access -const USER_AGENT = `sentry-unplugin/${unpluginVersion}`; const sentryApiAxiosInstance = axios.create({ headers: { "User-Agent": USER_AGENT } }); export async function createRelease({ diff --git a/packages/unplugin/src/sentry/telemetry.ts b/packages/unplugin/src/sentry/telemetry.ts index 16bd7de8b6db..d33003caa1fc 100644 --- a/packages/unplugin/src/sentry/telemetry.ts +++ b/packages/unplugin/src/sentry/telemetry.ts @@ -8,7 +8,6 @@ import { } from "@sentry/node"; import { Span } from "@sentry/tracing"; import { AxiosError } from "axios"; -import { version as unpluginVersion } from "../../package.json"; import { BuildContext } from "../types"; export function makeSentryClient( @@ -23,7 +22,7 @@ export function makeSentryClient( tracesSampleRate: telemetryEnabled ? 1.0 : 0.0, sampleRate: telemetryEnabled ? 1.0 : 0.0, - release: `${org ? `${org}@` : ""}${unpluginVersion}`, + release: __PACKAGE_VERSION__, integrations: [new Integrations.Http({ tracing: true })], tracePropagationTargets: ["sentry.io/api"], @@ -35,6 +34,12 @@ export function makeSentryClient( const hub = new Hub(client); + hub.configureScope((scope) => { + if (org) { + scope.setTag("org", org); + } + }); + //TODO: This call is problematic because as soon as we set our hub as the current hub // we might interfere with other plugins that use Sentry. However, for now, we'll // leave it in because without it, we can't get distributed traces (which are pretty nice) diff --git a/packages/unplugin/src/tsconfig.json b/packages/unplugin/src/tsconfig.json index d1b12b4159b2..ec25fabd5819 100644 --- a/packages/unplugin/src/tsconfig.json +++ b/packages/unplugin/src/tsconfig.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], + "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, "resolveJsonModule": true, // needed to import package.json diff --git a/yarn.lock b/yarn.lock index a71a052cf63e..69bc56f5a370 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1583,6 +1583,14 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-replace@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" + integrity sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" From 4d96e30dead147d48b662eb37f9e59c64c683ae1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sat, 27 Aug 2022 10:36:06 +0200 Subject: [PATCH 043/640] fix: Inject global package version in tests --- packages/unplugin/jest.config.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/unplugin/jest.config.js b/packages/unplugin/jest.config.js index 5354af34a5d8..555d04bb645e 100644 --- a/packages/unplugin/jest.config.js +++ b/packages/unplugin/jest.config.js @@ -3,9 +3,21 @@ const packageJson = require("./package.json"); module.exports = { testEnvironment: "node", transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, - globals: { - __PACKAGE_VERSION__: packageJson.version, + "^.+\\.(t|j)sx?$": [ + "@swc/jest", + { + jsc: { + transform: { + optimizer: { + globals: { + vars: { + __PACKAGE_VERSION__: packageJson.version, + }, + }, + }, + }, + }, + }, + ], }, }; From a14faec2d650bb5c2f0f35d1a5f41910e9bd0009 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Mon, 29 Aug 2022 11:27:52 +0200 Subject: [PATCH 044/640] chore(options): add silent (#41) * chore(options): add silent * chore(logger): add logger class * feat(logger): add logger * chore: move logger to functional * fix: wrong imports * refactor(logger): add replace telemetry with hub * chore: check for telemetry * chore: expose prefix --- packages/playground/config.json | 1 - .../playground/vite.config.smallNodeApp.js | 3 +- packages/unplugin/src/index.ts | 28 +++----- packages/unplugin/src/sentry/logger.ts | 46 +++++++++++++ .../unplugin/src/sentry/releasePipeline.ts | 68 ++++++------------- packages/unplugin/src/types.ts | 6 +- packages/unplugin/test/logger.test.ts | 62 +++++++++++++++++ 7 files changed, 143 insertions(+), 71 deletions(-) create mode 100644 packages/unplugin/src/sentry/logger.ts create mode 100644 packages/unplugin/test/logger.test.ts diff --git a/packages/playground/config.json b/packages/playground/config.json index e40336e73f2c..aad27fecf9d6 100644 --- a/packages/playground/config.json +++ b/packages/playground/config.json @@ -4,6 +4,5 @@ "project": "some-proj", "authToken": "some-auth-token", "include": "/dist", - "debugLogging": true, "debug": true } diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index c4d112705085..996d7ac59fd3 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -22,8 +22,7 @@ export default defineConfig({ org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, debug: true, - debugLogging: true, - release: "0.0.10", + release: "0.0.11", include: "out/vite-smallNodeApp", cleanArtifacts: true, }), diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 35ad7a118d41..0b512164f598 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -13,6 +13,7 @@ import { import "@sentry/tracing"; import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; +import sentryLogger from "./sentry/logger"; const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin @@ -94,11 +95,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) options.org ); - if (options.telemetry) { - // eslint-disable-next-line no-console - console.log("[Sentry-plugin]", "Sending error and performance telemetry data to Sentry."); - // eslint-disable-next-line no-console - console.log("[Sentry-Plugin]", "To disable telemetry, set `options.telemetry` to `false`."); + const logger = sentryLogger({ options, hub: sentryHub }); + + if (telemetryEnabled) { + logger.info("Sending error and performance telemetry data to Sentry."); + logger.info("To disable telemetry, set `options.telemetry` to `false`."); } sentryHub.setTags({ @@ -109,13 +110,6 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) sentryHub.setUser({ id: options.org }); - function debugLog(...args: unknown[]) { - if (options?.debugLogging) { - // eslint-disable-next-line no-console - console.log("[Sentry-plugin]", ...args); - } - } - // This is `nonEntrypointSet` instead of `entrypointSet` because this set is filled in the `resolveId` hook and there // we don't have guaranteed access to *absolute* paths of files if they're entrypoints. For non-entrypoints we're // guaranteed to have absolute paths - we're then using the paths in later hooks to make decisions about whether a @@ -138,7 +132,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) name: "plugin-execution", }); releaseInjectionSpan = addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction }, + { hub: sentryHub, parentSpan: transaction, logger }, "release-injection", "release-injection" ); @@ -174,7 +168,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) }, loadInclude(id) { - debugLog(`Called "loadInclude": ${JSON.stringify({ id })}`); + logger.info(`Called "loadInclude": ${JSON.stringify({ id })}`); return id === RELEASE_INJECTOR_ID; }, @@ -279,7 +273,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) const releasePipelineSpan = transaction && addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction }, + { hub: sentryHub, parentSpan: transaction, logger }, "release-creation", "release-creation-pipeline" ); @@ -297,7 +291,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) // That's good for them but a hassle for us. Let's try to normalize this into one data type // (I vote IncludeEntry[]) and continue with that down the line - const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan }; + const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger }; createNewRelease(release, options, ctx) .then(() => cleanArtifacts(release, options, ctx)) @@ -312,7 +306,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) captureMinimalError(e, sentryHub); transaction?.setStatus("cancelled"); - debugLog(e); + logger.error(e.message); if (options.errorHandler) { options.errorHandler(e); diff --git a/packages/unplugin/src/sentry/logger.ts b/packages/unplugin/src/sentry/logger.ts new file mode 100644 index 000000000000..8be979abd449 --- /dev/null +++ b/packages/unplugin/src/sentry/logger.ts @@ -0,0 +1,46 @@ +import { Options } from "../types"; +import { SeverityLevel } from "@sentry/node"; +import { Hub } from "@sentry/node"; +interface LoggerI { + options: Pick; + hub: Hub; +} +export default function logger(props: LoggerI) { + const prefix = "[Sentry-unplugin]"; + + function addBreadcrumb(level: SeverityLevel, message: string) { + props.hub.addBreadcrumb({ + category: "logger", + level, + message, + }); + } + + return { + prefix, + info(message: string) { + if (!props.options.silent) { + // eslint-disable-next-line no-console + console.info(prefix, message); + } + + addBreadcrumb("info", message); + }, + warn(message: string) { + if (!props.options.silent) { + // eslint-disable-next-line no-console + console.warn(prefix, message); + } + + addBreadcrumb("warning", message); + }, + error(message: string) { + if (!props.options.silent) { + // eslint-disable-next-line no-console + console.error(prefix, message); + } + + addBreadcrumb("error", message); + }, + }; +} diff --git a/packages/unplugin/src/sentry/releasePipeline.ts b/packages/unplugin/src/sentry/releasePipeline.ts index 56d088aeae4b..aa97196e854e 100644 --- a/packages/unplugin/src/sentry/releasePipeline.ts +++ b/packages/unplugin/src/sentry/releasePipeline.ts @@ -20,20 +20,16 @@ export async function createNewRelease( // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "authToken" option. Will not create release.'); + ctx.logger.warn('Missing "authToken" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (options.org === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "org" option. Will not create release.'); + ctx.logger.warn('Missing "org" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (options.url === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "url" option. Will not create release.'); + ctx.logger.warn('Missing "url" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (options.project === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "project" option. Will not create release.'); + ctx.logger.warn('Missing "project" option. Will not create release.'); return Promise.resolve("nothing to do here"); } @@ -46,8 +42,7 @@ export async function createNewRelease( sentryHub: ctx.hub, }); - // eslint-disable-next-line no-console - console.log("[Sentry-plugin] Successfully created release."); + ctx.logger.info("Successfully created release."); span?.finish(); return Promise.resolve("nothing to do here"); @@ -94,32 +89,26 @@ export async function uploadSourceMaps( // TODO: pull these checks out of here and simplify them if (authToken === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "authToken" option. Will not create release.'); + ctx.logger.warn('Missing "authToken" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (org === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "org" option. Will not create release.'); + ctx.logger.warn('Missing "org" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (url === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "url" option. Will not create release.'); + ctx.logger.warn('Missing "url" option. Will not create release.'); return Promise.resolve("nothing to do here"); } else if (project === undefined) { - // eslint-disable-next-line no-console - console.log('[Sentry-plugin] WARNING: Missing "project" option. Will not create release.'); + ctx.logger.warn('Missing "project" option. Will not create release.'); return Promise.resolve("nothing to do here"); } - // eslint-disable-next-line no-console - console.log("[Sentry-plugin] Uploading Sourcemaps."); + ctx.logger.info("Uploading Sourcemaps."); //TODO: Remove this once we have internal options. this property must always be present const fileExtensions = ext || []; const files = getFiles(include, fileExtensions); - // eslint-disable-next-line no-console - console.log(`[Sentry-plugin] > Found ${files.length} files to upload.`); + ctx.logger.info(`Found ${files.length} files to upload.`); return Promise.all( files.map((file) => @@ -135,8 +124,7 @@ export async function uploadSourceMaps( }) ) ).then(() => { - // eslint-disable-next-line no-console - console.log("[Sentry-plugin] Successfully uploaded sourcemaps."); + ctx.logger.info("Successfully uploaded sourcemaps."); span?.finish(); return "done"; }); @@ -152,10 +140,7 @@ export async function finalizeRelease( if (options.finalize) { const { authToken, org, url, project } = options; if (!authToken || !org || !url || !project) { - // eslint-disable-next-line no-console - console.log( - "[Sentry-plugin] WARNING: Missing required option. Will not clean existing artifacts." - ); + ctx.logger.warn("Missing required option. Will not clean existing artifacts."); return Promise.resolve("nothing to do here"); } @@ -167,8 +152,8 @@ export async function finalizeRelease( project, sentryHub: ctx.hub, }); - // eslint-disable-next-line no-console - console.log("[Sentry-plugin] Successfully finalized release."); + + ctx.logger.info("Successfully finalized release."); } span?.finish(); @@ -185,28 +170,16 @@ export async function cleanArtifacts( if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { - // eslint-disable-next-line no-console - console.log( - '[Sentry-plugin] WARNING: Missing "authToken" option. Will not clean existing artifacts.' - ); + ctx.logger.warn('Missing "authToken" option. Will not clean existing artifacts.'); return Promise.resolve("nothing to do here"); } else if (options.org === undefined) { - // eslint-disable-next-line no-console - console.log( - '[Sentry-plugin] WARNING: Missing "org" option. Will not clean existing artifacts.' - ); + ctx.logger.warn('Missing "org" option. Will not clean existing artifacts.'); return Promise.resolve("nothing to do here"); } else if (options.url === undefined) { - // eslint-disable-next-line no-console - console.log( - '[Sentry-plugin] WARNING: Missing "url" option. Will not clean existing artifacts.' - ); + ctx.logger.warn('Missing "url" option. Will not clean existing artifacts.'); return Promise.resolve("nothing to do here"); } else if (options.project === undefined) { - // eslint-disable-next-line no-console - console.log( - '[Sentry-plugin] WARNING: Missing "project" option. Will not clean existing artifacts.' - ); + ctx.logger.warn('Missing "project" option. Will not clean existing artifacts.'); return Promise.resolve("nothing to do here"); } @@ -219,8 +192,7 @@ export async function cleanArtifacts( sentryHub: ctx.hub, }); - // eslint-disable-next-line no-console - console.log("[Sentry-plugin] Successfully cleaned previous artifacts."); + ctx.logger.info("Successfully cleaned previous artifacts."); } span?.finish(); diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index c73a2a5cbc13..a6de71c62ead 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -2,11 +2,10 @@ import { Hub } from "@sentry/hub"; import { Span } from "@sentry/tracing"; +import sentryLogger from "./sentry/logger"; //TODO: compare types w/ webpack plugin (and sentry-cli?) export type Options = { - debugLogging?: boolean; - /* --- authentication/identification: */ org?: string; project?: string; @@ -49,7 +48,7 @@ export type Options = { // dryRun?: boolean, debug?: boolean; - // silent?: boolean, + silent?: boolean; cleanArtifacts?: boolean; /** @@ -109,4 +108,5 @@ type IncludeEntry = { export type BuildContext = { hub: Hub; parentSpan?: Span; + logger: ReturnType; }; diff --git a/packages/unplugin/test/logger.test.ts b/packages/unplugin/test/logger.test.ts new file mode 100644 index 000000000000..5234e0e4e54c --- /dev/null +++ b/packages/unplugin/test/logger.test.ts @@ -0,0 +1,62 @@ +// import {makeSentryClient} from "../src/sentry/telemetry" +import { Hub } from "@sentry/node"; +import sentryLogger from "../src/sentry/logger"; + +describe("Logger", () => { + const info = jest.spyOn(console, "info").mockImplementation(() => { + return; + }); + const warn = jest.spyOn(console, "warn").mockImplementation(() => { + return; + }); + const error = jest.spyOn(console, "error").mockImplementation(() => { + return; + }); + + const spy = { info, warn, error }; + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const hub: Hub = { + addBreadcrumb: () => { + return; + }, + }; + + const mockedAddBreadcrumb = jest.spyOn(hub, "addBreadcrumb"); + + afterEach(() => { + info.mockReset(); + warn.mockReset(); + error.mockReset(); + mockedAddBreadcrumb.mockReset(); + }); + + const CASES = ["info", "warn", "error"]; + + it.each(CASES)("logs (%s)", (a: string) => { + const logger = sentryLogger({ options: { silent: false }, hub }); + // "info" -> make typescript happy + logger[a as "info"]("Hey!"); + + expect(spy[a as "info"]).toHaveBeenCalledWith(logger.prefix, "Hey!"); + expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ + category: "logger", + level: a === "warn" ? "warning" : a, + message: "Hey!", + }); + }); + + it.each(CASES)("does not log (%s)", (a: string) => { + const logger = sentryLogger({ options: { silent: true }, hub }); + // "info" -> make typescript happy + logger[a as "info"]("Hey!"); + + expect(spy[a as "info"]).not.toHaveBeenCalledWith(logger.prefix, "Hey!"); + expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ + category: "logger", + level: a === "warn" ? "warning" : a, + message: "Hey!", + }); + }); +}); From 4acf09c88cf4a2b55cef732b3553a9ad7436a5d3 Mon Sep 17 00:00:00 2001 From: Vladan Paunovic Date: Mon, 29 Aug 2022 12:23:25 +0200 Subject: [PATCH 045/640] feat(customHeaders): add option customHeaders (#48) feat(customHeaders): add options customHeaders --- packages/unplugin/src/sentry/api.ts | 25 +++++++++++++++---- .../unplugin/src/sentry/releasePipeline.ts | 4 +++ packages/unplugin/src/types.ts | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/unplugin/src/sentry/api.ts b/packages/unplugin/src/sentry/api.ts index ebda97c9d80f..17cfd2994828 100644 --- a/packages/unplugin/src/sentry/api.ts +++ b/packages/unplugin/src/sentry/api.ts @@ -1,12 +1,19 @@ import { Hub } from "@sentry/node"; import axios from "axios"; import FormData from "form-data"; +import { Options } from "../types"; import { captureMinimalError } from "./telemetry"; const API_PATH = "/api/0"; const USER_AGENT = `sentry-unplugin/${__PACKAGE_VERSION__}`; -const sentryApiAxiosInstance = axios.create({ headers: { "User-Agent": USER_AGENT } }); +const sentryApiAxiosInstance = ({ + authToken, + customHeaders, +}: Required> & Pick) => + axios.create({ + headers: { ...customHeaders, "User-Agent": USER_AGENT, Authorization: `Bearer ${authToken}` }, + }); export async function createRelease({ org, @@ -15,6 +22,7 @@ export async function createRelease({ authToken, sentryUrl, sentryHub, + customHeaders, }: { release: string; project: string; @@ -22,6 +30,7 @@ export async function createRelease({ authToken: string; sentryUrl: string; sentryHub: Hub; + customHeaders?: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`; @@ -33,7 +42,7 @@ export async function createRelease({ }; try { - await sentryApiAxiosInstance.post(requestUrl, releasePayload, { + await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, releasePayload, { headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { @@ -49,6 +58,7 @@ export async function deleteAllReleaseArtifacts({ authToken, sentryUrl, sentryHub, + customHeaders, }: { org: string; release: string; @@ -56,11 +66,12 @@ export async function deleteAllReleaseArtifacts({ authToken: string; project: string; sentryHub: Hub; + customHeaders?: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`; try { - await sentryApiAxiosInstance.delete(requestUrl, { + await sentryApiAxiosInstance({ authToken, customHeaders }).delete(requestUrl, { headers: { Authorization: `Bearer ${authToken}`, }, @@ -78,6 +89,7 @@ export async function updateRelease({ sentryUrl, project, sentryHub, + customHeaders, }: { release: string; org: string; @@ -85,6 +97,7 @@ export async function updateRelease({ sentryUrl: string; project: string; sentryHub: Hub; + customHeaders?: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`; @@ -93,7 +106,7 @@ export async function updateRelease({ }; try { - await sentryApiAxiosInstance.put(requestUrl, releasePayload, { + await sentryApiAxiosInstance({ authToken, customHeaders }).put(requestUrl, releasePayload, { headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { @@ -111,6 +124,7 @@ export async function uploadReleaseFile({ filename, fileContent, sentryHub, + customHeaders, }: { org: string; release: string; @@ -120,6 +134,7 @@ export async function uploadReleaseFile({ filename: string; fileContent: string; sentryHub: Hub; + customHeaders?: Record; }) { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`; @@ -128,7 +143,7 @@ export async function uploadReleaseFile({ form.append("file", Buffer.from(fileContent, "utf-8"), { filename }); try { - await sentryApiAxiosInstance.post(requestUrl, form, { + await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, form, { headers: { Authorization: `Bearer ${authToken}`, "Content-Type": "multipart/form-data", diff --git a/packages/unplugin/src/sentry/releasePipeline.ts b/packages/unplugin/src/sentry/releasePipeline.ts index aa97196e854e..380fcb840d40 100644 --- a/packages/unplugin/src/sentry/releasePipeline.ts +++ b/packages/unplugin/src/sentry/releasePipeline.ts @@ -40,6 +40,7 @@ export async function createNewRelease( project: options.project, sentryUrl: options.url, sentryHub: ctx.hub, + customHeaders: options.customHeaders, }); ctx.logger.info("Successfully created release."); @@ -121,6 +122,7 @@ export async function uploadSourceMaps( filename: file.name, fileContent: file.content, sentryHub: ctx.hub, + customHeaders: options.customHeaders, }) ) ).then(() => { @@ -151,6 +153,7 @@ export async function finalizeRelease( sentryUrl: url, project, sentryHub: ctx.hub, + customHeaders: options.customHeaders, }); ctx.logger.info("Successfully finalized release."); @@ -190,6 +193,7 @@ export async function cleanArtifacts( sentryUrl: options.url, project: options.project, sentryHub: ctx.hub, + customHeaders: options.customHeaders, }); ctx.logger.info("Successfully cleaned previous artifacts."); diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index a6de71c62ead..d6e99112d3a1 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -44,7 +44,7 @@ export type Options = { /* --- other unimportant (for now) stuff- properties: */ // vcsRemote: string, - // customHeader: string, + customHeaders?: Record; // dryRun?: boolean, debug?: boolean; From ad78c73e2bd211b921132b265203c81ea78ac4e8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 31 Aug 2022 15:14:20 +0200 Subject: [PATCH 046/640] ref(unplugin): Clean up logger (#49) Co-authored-by: Vladan Paunovic --- packages/unplugin/src/index.ts | 8 ++- packages/unplugin/src/sentry/logger.ts | 28 +++++----- packages/unplugin/src/types.ts | 4 +- packages/unplugin/test/logger.test.ts | 73 ++++++++++++++++---------- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/packages/unplugin/src/index.ts b/packages/unplugin/src/index.ts index 0b512164f598..841fe1bc98b5 100644 --- a/packages/unplugin/src/index.ts +++ b/packages/unplugin/src/index.ts @@ -13,7 +13,7 @@ import { import "@sentry/tracing"; import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; -import sentryLogger from "./sentry/logger"; +import { createLogger } from "./sentry/logger"; const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin @@ -95,7 +95,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) options.org ); - const logger = sentryLogger({ options, hub: sentryHub }); + const logger = createLogger({ + hub: sentryHub, + prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, + silent: options.silent, + }); if (telemetryEnabled) { logger.info("Sending error and performance telemetry data to Sentry."); diff --git a/packages/unplugin/src/sentry/logger.ts b/packages/unplugin/src/sentry/logger.ts index 8be979abd449..dc5fce6e5533 100644 --- a/packages/unplugin/src/sentry/logger.ts +++ b/packages/unplugin/src/sentry/logger.ts @@ -1,15 +1,14 @@ -import { Options } from "../types"; -import { SeverityLevel } from "@sentry/node"; -import { Hub } from "@sentry/node"; -interface LoggerI { - options: Pick; +import { SeverityLevel, Hub } from "@sentry/node"; + +interface LoggerOptions { + silent?: boolean; hub: Hub; + prefix: string; } -export default function logger(props: LoggerI) { - const prefix = "[Sentry-unplugin]"; +export function createLogger(options: LoggerOptions) { function addBreadcrumb(level: SeverityLevel, message: string) { - props.hub.addBreadcrumb({ + options.hub.addBreadcrumb({ category: "logger", level, message, @@ -17,27 +16,26 @@ export default function logger(props: LoggerI) { } return { - prefix, info(message: string) { - if (!props.options.silent) { + if (!options?.silent) { // eslint-disable-next-line no-console - console.info(prefix, message); + console.log(`${options.prefix} ${message}`); } addBreadcrumb("info", message); }, warn(message: string) { - if (!props.options.silent) { + if (!options?.silent) { // eslint-disable-next-line no-console - console.warn(prefix, message); + console.log(`${options.prefix} Warning! ${message}`); } addBreadcrumb("warning", message); }, error(message: string) { - if (!props.options.silent) { + if (!options?.silent) { // eslint-disable-next-line no-console - console.error(prefix, message); + console.log(`${options.prefix} Error: ${message}`); } addBreadcrumb("error", message); diff --git a/packages/unplugin/src/types.ts b/packages/unplugin/src/types.ts index d6e99112d3a1..392cc950bb12 100644 --- a/packages/unplugin/src/types.ts +++ b/packages/unplugin/src/types.ts @@ -2,7 +2,7 @@ import { Hub } from "@sentry/hub"; import { Span } from "@sentry/tracing"; -import sentryLogger from "./sentry/logger"; +import { createLogger } from "./sentry/logger"; //TODO: compare types w/ webpack plugin (and sentry-cli?) export type Options = { @@ -108,5 +108,5 @@ type IncludeEntry = { export type BuildContext = { hub: Hub; parentSpan?: Span; - logger: ReturnType; + logger: ReturnType; }; diff --git a/packages/unplugin/test/logger.test.ts b/packages/unplugin/test/logger.test.ts index 5234e0e4e54c..268a45077148 100644 --- a/packages/unplugin/test/logger.test.ts +++ b/packages/unplugin/test/logger.test.ts @@ -1,19 +1,8 @@ -// import {makeSentryClient} from "../src/sentry/telemetry" import { Hub } from "@sentry/node"; -import sentryLogger from "../src/sentry/logger"; +import { createLogger } from "../src/sentry/logger"; describe("Logger", () => { - const info = jest.spyOn(console, "info").mockImplementation(() => { - return; - }); - const warn = jest.spyOn(console, "warn").mockImplementation(() => { - return; - }); - const error = jest.spyOn(console, "error").mockImplementation(() => { - return; - }); - - const spy = { info, warn, error }; + const consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => undefined); // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -26,37 +15,63 @@ describe("Logger", () => { const mockedAddBreadcrumb = jest.spyOn(hub, "addBreadcrumb"); afterEach(() => { - info.mockReset(); - warn.mockReset(); - error.mockReset(); + consoleLogSpy.mockReset(); mockedAddBreadcrumb.mockReset(); }); - const CASES = ["info", "warn", "error"]; + it(".info() should log correctly", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix }); + logger.info("Hey!"); + + expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Hey!"); + expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ + category: "logger", + level: "info", + message: "Hey!", + }); + }); - it.each(CASES)("logs (%s)", (a: string) => { - const logger = sentryLogger({ options: { silent: false }, hub }); - // "info" -> make typescript happy - logger[a as "info"]("Hey!"); + it(".warn() should log correctly", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix }); + logger.warn("Hey!"); - expect(spy[a as "info"]).toHaveBeenCalledWith(logger.prefix, "Hey!"); + expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Warning! Hey!"); expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ category: "logger", - level: a === "warn" ? "warning" : a, + level: "warning", message: "Hey!", }); }); - it.each(CASES)("does not log (%s)", (a: string) => { - const logger = sentryLogger({ options: { silent: true }, hub }); - // "info" -> make typescript happy - logger[a as "info"]("Hey!"); + it(".error() should log correctly", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix }); + logger.error("Hey!"); - expect(spy[a as "info"]).not.toHaveBeenCalledWith(logger.prefix, "Hey!"); + expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Error: Hey!"); expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ category: "logger", - level: a === "warn" ? "warning" : a, + level: "error", message: "Hey!", }); }); + + describe("doesn't log when `silent` option is `true`", () => { + it.each(["info", "warn", "error"] as const)(".%s()", (loggerMethod) => { + const prefix = "[some-prefix]"; + const logger = createLogger({ silent: true, hub, prefix }); + + logger[loggerMethod]("Hey!"); + + expect(consoleLogSpy).not.toHaveBeenCalled(); + + expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ + category: "logger", + level: expect.stringMatching(/.*/) as string, + message: "Hey!", + }); + }); + }); }); From 52ad0ef57ee20570809feb11e70dc03f0442b54b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 19 Oct 2022 12:37:04 +0200 Subject: [PATCH 047/640] chore: Update READMEs (#51) Update and add `README.md` files across the packages we want to release. - remove old `hackweek-sentry-unplugin` links - make warnings that this is a heavy WIP more explicit - add Readme to the core sentry-unplugin package --- README.md | 16 +++++++------ packages/esbuild-plugin/README.md | 4 ++-- packages/rollup-plugin/README.md | 2 +- packages/unplugin/README.md | 37 +++++++++++++++++++++++++++++++ packages/vite-plugin/README.md | 4 ++-- packages/webpack-plugin/README.md | 4 ++-- 6 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 packages/unplugin/README.md diff --git a/README.md b/README.md index a29237caa0e9..2ede16e18882 100644 --- a/README.md +++ b/README.md @@ -4,28 +4,30 @@

-# Sentry Unplugin +# Sentry Unplugin (WIP) -**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** +**WARNING: This project is work in progress! Do not yet use it in production. We're happy to receive your feedback!** Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/hackweek-sentry-unplugin/tree/main/packages/webpack-plugin) +- [Rollup](https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin) ### Features -The Sentry Unplugin supports [Sentry CLI](https://docs.sentry.io/learn/cli/) features required for node environments: +The Sentry Unplugin take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: - Sourcemap upload - Release creation in Sentry - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically associate errors with releases (Release injection) +The Sentry Unplugin can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. + ### More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index b95d5da310c9..5bdc47d4f159 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -4,9 +4,9 @@

-# Sentry Esbuild Plugin +# Sentry Esbuild Plugin (WIP) -**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** +**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** A esbuild plugin that provides release management features for Sentry: diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 919e61e06878..5e2fa7630612 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -6,7 +6,7 @@ # Sentry Rollup Plugin -**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** +**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** A Rollup plugin that provides release management features for Sentry: diff --git a/packages/unplugin/README.md b/packages/unplugin/README.md new file mode 100644 index 000000000000..b3c303b9e921 --- /dev/null +++ b/packages/unplugin/README.md @@ -0,0 +1,37 @@ +

+ + Sentry + +

+ +# Sentry Unplugin (WIP) + +**WARNING: This package is work in progress! Do not yet use it in production. We're happy to receive your feedback!** + +Core package containing the bundler-agnostic functionality used by the bundler plugins. + +Check out the individual packages for more information and examples: + +- [Rollup](https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin) + +### Features + +The Sentry Unplugin take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: + +- Sourcemap upload +- Release creation in Sentry +- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) +- Automatically associate errors with releases (Release injection) + +The Sentry Unplugin can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. + +### More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) +- [Sentry CLI](https://docs.sentry.io/learn/cli/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 29fde81497e7..7f26aec8fcef 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -4,9 +4,9 @@

-# Sentry Vite Plugin +# Sentry Vite Plugin (WIP) -**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** +**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** A Vite plugin that provides release management features for Sentry: diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 05e169c55ba5..086e050eeaa5 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -4,9 +4,9 @@

-# Sentry Webpack Plugin +# Sentry Webpack Plugin (WIP) -**DISCLAIMER: This package is work in progress and not production ready. Use with caution. We're happy to receive your feedback!** +**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** A Webpack plugin that provides release management features for Sentry: From acfd34db7b47c1b19b307997338a36de72f45045 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 19 Oct 2022 14:13:05 +0200 Subject: [PATCH 048/640] chore: Add CHANGELOG.md file (#52) Add an (almost) almost empty `CHANGELOG.md` file to the repo Co-authored-by: Luca Forstner --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000000..a7c3d479274b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + +## Unreleased + +- "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott + +## 0.0.0-alpha.0 + +This release marks the first release of the Sentry bundler blugins. This is still a heavy work in progress and a lot of things are still missing and subject to change + +- Initial release From 77a217e978f0b12baa38886c9cfdc29e6e0d731b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 13:04:04 +0200 Subject: [PATCH 049/640] feat(publish): Add version bump script (#53) - Add Lerna to our repo to use it as a mechanism of bumping all our package versions. We need this for the craft publishing process. - Add a pre-release script we need for craft later on --- lerna.json | 6 + package.json | 3 +- packages/esbuild-plugin/package.json | 8 +- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 10 +- packages/playground/package.json | 4 +- packages/rollup-plugin/package.json | 8 +- packages/tsconfigs/package.json | 2 +- packages/unplugin/package.json | 6 +- packages/vite-plugin/package.json | 8 +- packages/webpack-plugin/package.json | 8 +- scripts/craft-pre-release.sh | 20 + yarn.lock | 2952 ++++++++++++++++++++++- 13 files changed, 2963 insertions(+), 74 deletions(-) create mode 100644 lerna.json create mode 100755 scripts/craft-pre-release.sh diff --git a/lerna.json b/lerna.json new file mode 100644 index 000000000000..c718d2ad8280 --- /dev/null +++ b/lerna.json @@ -0,0 +1,6 @@ +{ + "version": "0.0.0-alpha.0", + "packages": "packages/*", + "npmClient": "yarn", + "useWorkspaces": true +} diff --git a/package.json b/package.json index 30c27d7bb452..d6963f7ec9e5 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,9 @@ "devDependencies": { "@nrwl/cli": "14.5.10", "@nrwl/workspace": "14.5.10", - "nx": "14.5.10", "husky": "^8.0.0", + "lerna": "^6.0.1", + "nx": "14.5.10", "prettier": "^2.7.1", "pretty-quick": "^3.1.3" } diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 686ddc6b53ab..bc9ddd0623eb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.0.1", + "version": "0.0.0-alpha.0", "description": "Official Sentry esbuild plugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin", @@ -35,7 +35,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.1" + "@sentry/sentry-unplugin": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -45,12 +45,12 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9f71e0e10d4e..ffa9d598b643 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.0.0", + "version": "0.0.0-alpha.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index f04bd92c2fab..d3eb40d3a8bc 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.0.0", + "version": "0.0.0-alpha.0", "license": "MIT", "private": true, "scripts": { @@ -11,17 +11,17 @@ "check:types": "tsc --project ./tsconfig.json --noEmit" }, "dependencies": { + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry/sentry-unplugin": "0.0.0-alpha.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", - "@sentry/sentry-unplugin": "*", "@types/webpack4": "npm:@types/webpack@4.41.32", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "esbuild": "0.14.49", + "eslint": "^8.18.0", "jest": "^28.1.3", "npm-run-all": "4.1.5", "rollup": "2.77.0", - "eslint": "^8.18.0", "ts-node": "^10.9.1", "vite": "3.0.0", "webpack": "5.74.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 3d800318f81a..9b7db230914b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/unplugin-playground", - "version": "0.0.0", + "version": "0.0.0-alpha.0", "license": "MIT", "private": true, "scripts": { @@ -16,7 +16,7 @@ "dependencies": { "@sentry/integrations": "^7.11.1", "@sentry/node": "^7.11.1", - "@sentry/sentry-unplugin": "*", + "@sentry/sentry-unplugin": "0.0.0-alpha.0", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 10a3e9eb886e..5c56130986d0 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.0.1", + "version": "0.0.0-alpha.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin", @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.1" + "@sentry/sentry-unplugin": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -46,12 +46,12 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6060149e4d10..2d9dba9eef95 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-unplugin-tsconfig", - "version": "0.0.0", + "version": "0.0.0-alpha.0", "license": "MIT", "private": true } diff --git a/packages/unplugin/package.json b/packages/unplugin/package.json index 9c5578b70117..1e103a90dd0d 100644 --- a/packages/unplugin/package.json +++ b/packages/unplugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sentry-unplugin", - "version": "0.0.1", + "version": "0.0.0-alpha.0", "description": "Official Sentry unplugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin", @@ -45,8 +45,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b7bd0b1bbbca..a06b9ec4554c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.0.1", + "version": "0.0.0-alpha.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin", @@ -35,7 +35,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.1" + "@sentry/sentry-unplugin": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -45,12 +45,12 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index ea00ca445824..f10df214fbb7 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.0.1", + "version": "0.0.0-alpha.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin", @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.1" + "@sentry/sentry-unplugin": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -46,12 +46,12 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", + "@sentry-internal/eslint-config": "0.0.0-alpha.0", + "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", - "@sentry-internal/eslint-config": "*", - "@sentry-internal/sentry-unplugin-tsconfig": "*", "eslint": "^8.18.0", "jest": "^28.1.1", "npm-run-all": "^4.1.5", diff --git a/scripts/craft-pre-release.sh b/scripts/craft-pre-release.sh new file mode 100755 index 000000000000..75df3de94eef --- /dev/null +++ b/scripts/craft-pre-release.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -eux + +# Move to the project root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd $SCRIPT_DIR/.. +OLD_VERSION="${1}" +NEW_VERSION="${2}" + +# Do not tag and commit changes made by "npm version" +export npm_config_git_tag_version=false + +yarn install --frozen-lockfile +# --force-publish - force publish all packages, this will skip the lerna changed check for changed packages and forces a package that didn't have a git diff change to be updated. +# --exact - specify updated dependencies in updated packages exactly (with no punctuation), instead of as semver compatible (with a ^). +# --no-git-tag-version - don't commit changes to package.json files and don't tag the release. +# --no-push - don't push committed and tagged changes. +# --include-merged-tags - include tags from merged branches when detecting changed packages. +# --yes - skip all confirmation prompts +yarn lerna version --force-publish --exact --no-git-tag-version --no-push --include-merged-tags --yes "${NEW_VERSION}" diff --git a/yarn.lock b/yarn.lock index 69bc56f5a370..5b537dc738c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -994,6 +994,11 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@humanwhocodes/config-array@^0.10.4": version "0.10.4" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" @@ -1013,6 +1018,16 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1420,6 +1435,690 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@lerna/add@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.1.tgz#6d71084fe7918c96c909bebdc5c27ed6006e09d6" + integrity sha512-cCQIlMODhi3KYyTDOp2WWL4Kj2dKK+MmCiaSf+USrbSWPVVXQGn5Eb11XOMUfYYq3Ula75sWL2urtYwuu8IbmA== + dependencies: + "@lerna/bootstrap" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/validation-error" "6.0.1" + dedent "^0.7.0" + npm-package-arg "8.1.1" + p-map "^4.0.0" + pacote "^13.6.1" + semver "^7.3.4" + +"@lerna/bootstrap@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.1.tgz#2af0b790b9ce426b78f12543159c8506d77afc28" + integrity sha512-a3DWchHFOiRmDN24VTdmTxKvAqw6Msp8pDCWXq4rgOQSFxqyYECd8BYvmy8dTW6LcC4EG0HqTGRguuEaKCasOw== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/has-npm-version" "6.0.1" + "@lerna/npm-install" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/rimraf-dir" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/symlink-binary" "6.0.1" + "@lerna/symlink-dependencies" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@npmcli/arborist" "5.3.0" + dedent "^0.7.0" + get-port "^5.1.1" + multimatch "^5.0.0" + npm-package-arg "8.1.1" + npmlog "^6.0.2" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" + semver "^7.3.4" + +"@lerna/changed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.1.tgz#58614a0c65bfab77fefd142d5edc8282e057ea83" + integrity sha512-b0KzqpNv25ZxH9M/7jtDQaXWUBhVzBVJ8DQ4PjjeoulOCQ+mA9tNQr8UVmeU1UZiaNtNz6Hcy55vyvVvNe07VA== + dependencies: + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/listable" "6.0.1" + "@lerna/output" "6.0.1" + +"@lerna/check-working-tree@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.1.tgz#ad71d53941b5c85523499b283e5f44b52eca6276" + integrity sha512-9Ti1EuE3IiJUvvAtFk+Xr9Uw6KehT78ghnI4f/hi4uew5q0Mf2+DMaBNexbhOTpRFBeIq4ucDFhiN091pNkUNw== + dependencies: + "@lerna/collect-uncommitted" "6.0.1" + "@lerna/describe-ref" "6.0.1" + "@lerna/validation-error" "6.0.1" + +"@lerna/child-process@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.1.tgz#2141f643a4ed7d38fa9270a80403467a353a3b39" + integrity sha512-5smM8Or/RQkHysNFrUYdrCYlhpr3buNpCYU7T2DPYzOWRPm+X5rCvt/dDOcS3UgYT2jEyS86S5Y7pK2X7eXtmg== + dependencies: + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" + +"@lerna/clean@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.1.tgz#e59f94140e577cbb66f76f78794b97778f78a246" + integrity sha512-ZaWPzzYNkJM7Ib2GWPLSELVBf5nRCGOGBtR9DSLKAore0Me876JLgi4h2R+Y2PVyCvT1kmoQKAclnjxdZbCONA== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/rimraf-dir" "6.0.1" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" + +"@lerna/cli@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.1.tgz#8a92386702cff815f36104792ad5dc14f11a61a8" + integrity sha512-AuAnUXkBGdts/rmHltrkZucYy11OwYPb/4HM3zxLeq4O30w2ocZIytkOtSkuVKOMPWBZR8b37fNuZBzvxe5OmA== + dependencies: + "@lerna/global-options" "6.0.1" + dedent "^0.7.0" + npmlog "^6.0.2" + yargs "^16.2.0" + +"@lerna/collect-uncommitted@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.1.tgz#b93f5acfa9c63fffe41bfaaac02a0efad9180b00" + integrity sha512-qPqwmIlSlf8XBJnqMc+6pz6qXQ0Pfjil70FB2IPvoWbfrLvMI6K3I/AXeub9X5fj5HYqNs1XtwhWHJcMFpJddw== + dependencies: + "@lerna/child-process" "6.0.1" + chalk "^4.1.0" + npmlog "^6.0.2" + +"@lerna/collect-updates@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.1.tgz#7b4be193ee51a72ccedc20acf845fe32fdee9ee2" + integrity sha512-OwRcLqD1N5znlZM/Ctf031RDkodHVO62byiD35AbHGoGM2EI2TSYyIbqnJ8QsQJMB05/KhIBndL8Mpcdle7/rg== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/describe-ref" "6.0.1" + minimatch "^3.0.4" + npmlog "^6.0.2" + slash "^3.0.0" + +"@lerna/command@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.1.tgz#a429e724237bc3c4a735e8eaef9816f2203cb7dc" + integrity sha512-V9w8M7pMU7KztxaL0+fetTSQYTa12bhTl86ll9VjlgYZ5qUAXk9E42Y8hbVThyYtHEhkRnIMinkWsmH/9YKU/A== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/project" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@lerna/write-log-file" "6.0.1" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^5.0.0" + is-ci "^2.0.0" + npmlog "^6.0.2" + +"@lerna/conventional-commits@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.1.tgz#72dd55aadc7c20eca5af3d03cdcfb613964dafc4" + integrity sha512-6oIGEZKy1GpooW28C0aEDkZ/rVkqpX44knP8Jyb5//1054QogqPhGC5q6J0lZxyhun8dQkpF6XTHlIintI8xow== + dependencies: + "@lerna/validation-error" "6.0.1" + conventional-changelog-angular "^5.0.12" + conventional-changelog-core "^4.2.4" + conventional-recommended-bump "^6.1.0" + fs-extra "^9.1.0" + get-stream "^6.0.0" + npm-package-arg "8.1.1" + npmlog "^6.0.2" + pify "^5.0.0" + semver "^7.3.4" + +"@lerna/create-symlink@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.1.tgz#5a9f75f8e5c0d83c39d70240f51284cc5d6770ad" + integrity sha512-ZmLx9SP5De6u1xkD7Z6gMMFuyLKCb+2bodreFe7ryOVP3cOLbmNOmgMgj+gtUgIwIv7BDwX3qFWlPY6B3VW3hQ== + dependencies: + cmd-shim "^5.0.0" + fs-extra "^9.1.0" + npmlog "^6.0.2" + +"@lerna/create@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.1.tgz#7905cef9196cb6a1caff5d7cd78a46fc7ea635a9" + integrity sha512-VuTdvBJDzvAaMBYoKTRMBQC+nfwnihxdA/ekUqBD+W8MMsqPLCGCneyl7JK9RaSSib/10LyRDEmfo79UAndcgQ== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/validation-error" "6.0.1" + dedent "^0.7.0" + fs-extra "^9.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" + p-reduce "^2.1.0" + pacote "^13.6.1" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + yargs-parser "20.2.4" + +"@lerna/describe-ref@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.1.tgz#e9277bcc3c1c839fc7305b808f9dd02a5404aaf8" + integrity sha512-PcTVt4qgAXUPBtWHyqixtwE/eXe56+DFRnfTcJlb4x5F7LJ+7VNpdR/81qfP89Xj10U5IjELXbXmriz1KMwhfw== + dependencies: + "@lerna/child-process" "6.0.1" + npmlog "^6.0.2" + +"@lerna/diff@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.1.tgz#e8c5d541d74a9aa13a4ac6745f2f0d9531207fd1" + integrity sha512-/pGXH9txA8wX1YJ/KOBXzx0Z2opADBW4HKPCxxHAu+6dTGMbKABDljVT5Np3UpfIrAGDE5fTuf0aGL4vkKUWrg== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/validation-error" "6.0.1" + npmlog "^6.0.2" + +"@lerna/exec@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.1.tgz#d2d0785c46b7ceb3758fe75bb6d95d177a0a0ec3" + integrity sha512-x9puoI3091Alp45w7XOGRxThOw45p+tWGPR5TBCEQiiH7f8eF9Dc4WX5HXf31ooK6NmD40eKPYhBgy8oQnJY9w== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/profiler" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/validation-error" "6.0.1" + p-map "^4.0.0" + +"@lerna/filter-options@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.1.tgz#4dbd29a31fb2ac228f72c51b223f17623d1f2c71" + integrity sha512-6KxbBI/2skRl/yQdjugQ1PWrSLq19650z8mltF0HT7B686fj7LlDNtESFOtY6iZ8IPqKBkIavOP0DPmJZd7Szw== + dependencies: + "@lerna/collect-updates" "6.0.1" + "@lerna/filter-packages" "6.0.1" + dedent "^0.7.0" + npmlog "^6.0.2" + +"@lerna/filter-packages@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.1.tgz#07f10dc78e852bbba44843b785ebc16f386cedaa" + integrity sha512-2bKhexeF07Urs2b0xYX2OgYUN0EzmS2FSgvw0KT6He48PGOkqgJjU7PIiWdPyOvZdukwm07qXTmJZulAHftceA== + dependencies: + "@lerna/validation-error" "6.0.1" + multimatch "^5.0.0" + npmlog "^6.0.2" + +"@lerna/get-npm-exec-opts@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.1.tgz#c766588d030c0ec7170650808957998e8ad70831" + integrity sha512-y2T+ODP8HNzHQn1ldrrPW+n823fGsN2sY0r78yURFxYZnxA9ZINyQ6IAejo5LqHrYN8Qhr++0RHo2tUisIHdKg== + dependencies: + npmlog "^6.0.2" + +"@lerna/get-packed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.1.tgz#d31c10ec10658eeee4306886c100cd9600d6dd78" + integrity sha512-Z/5J5vbjdeGqZcPvUSiszvyizHdsTRiFlpPORWK3YfIsHllUB7QZnVHLg92UnSJrpPE0O1gH+k6ByhhR+3qEdA== + dependencies: + fs-extra "^9.1.0" + ssri "^9.0.1" + tar "^6.1.0" + +"@lerna/github-client@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.1.tgz#081d13c2debf312d0e5a2bb2fad6e0c69e1501d6" + integrity sha512-UA7V3XUunJnrfCL2eyW9QsCjBWShv4dCRGUITXmpQJrNIMZIqVbBJzqN9LVHDNc/hEVZGt0EjtHWdpFCgD4ypg== + dependencies: + "@lerna/child-process" "6.0.1" + "@octokit/plugin-enterprise-rest" "^6.0.1" + "@octokit/rest" "^19.0.3" + git-url-parse "^13.1.0" + npmlog "^6.0.2" + +"@lerna/gitlab-client@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.1.tgz#1863b621a1530bc482113cac8791247664dedb2a" + integrity sha512-yyaBKf/OqBAau6xDk1tnMjfkxRpC/j3OwUyXFFGfJFSulWRHpbHoFSfvIgOn/hkjAr9FfHC7TXItRg8qdm38Wg== + dependencies: + node-fetch "^2.6.1" + npmlog "^6.0.2" + +"@lerna/global-options@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.1.tgz#83061d85759c105120ff55716959642ba6eb0eea" + integrity sha512-vzjDI3Bg2NR+cSgfjHWax2bF1HmQYjJF2tmZlT/hJbwhaVMIEnhzHnJ9Yycmm98cdV77xEMlbmk5YD7xgFdG2w== + +"@lerna/has-npm-version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.1.tgz#ed27a27cad2090069feb3108b105ceec765bec5e" + integrity sha512-ol1onJaauMXK0cQsfRX2rvbhNRyNBY9Ne5trrRjfMROa7Tnr8c3I4+aKQs7m4z1JdWaGBV4xBH+NSZ/esPuaWA== + dependencies: + "@lerna/child-process" "6.0.1" + semver "^7.3.4" + +"@lerna/import@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.1.tgz#9e869d6bbe82446ee3620c4310ca6232881b7952" + integrity sha512-GrTtIWUCnDf+FqRjenV2OKWU+khoZj0h/etgfXus45PBO2+V/SkkzIY4xof23XphiydUYrSrYtwx2i1aEmk3Wg== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/validation-error" "6.0.1" + dedent "^0.7.0" + fs-extra "^9.1.0" + p-map-series "^2.1.0" + +"@lerna/info@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.1.tgz#68395061ffbd81c7716d60b99b5220c90ade2862" + integrity sha512-QEW7JtJjoR1etUrcft7BnrwPZFHE2JPmt2DoSvSmLISLyy+HlmdXHK+p6Ej3g1ql8gS0GWCacgwmlRZ27CDp5A== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/output" "6.0.1" + envinfo "^7.7.4" + +"@lerna/init@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.1.tgz#babee56707bd19b3c1b82967e3360d1083c04cf9" + integrity sha512-zOMrSij09LSAVUUujpD3y32wkHp8dQ+/dVCp4USlfcGfI+kIPc5prkYCGDO8dEcqkze0pMfDMF23pVNvAf9g7w== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/project" "6.0.1" + fs-extra "^9.1.0" + p-map "^4.0.0" + write-json-file "^4.3.0" + +"@lerna/link@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.1.tgz#a94cf3aead92538835d955c6de281c65097f3471" + integrity sha512-VXZ77AWsJCycTu219ZLUHyRzMd5hgivLk5ZyBD1s/emArFvdEmGLscj2RXn3P3w/951b+DNG2Zbi6nek0iJ6DA== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/symlink-dependencies" "6.0.1" + "@lerna/validation-error" "6.0.1" + p-map "^4.0.0" + slash "^3.0.0" + +"@lerna/list@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.1.tgz#ab6d056c5d7b99ca0ed6a17d48bf907afd9d970a" + integrity sha512-M9Vneh866E1nlpU88rcUMLR+XTVi3VY0fLPr1OqXdYF+eTe6RkEHUQj8HIk94Rnt02HsWc4+FO31T4i5sf+PaA== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/listable" "6.0.1" + "@lerna/output" "6.0.1" + +"@lerna/listable@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.1.tgz#444e81f6642c198d116e9e6b86d96d10ddf2e147" + integrity sha512-+xEByVX0sbnBW3EBu3XCg71Bz9/dahncmCjNK0kVnZLnQZzfULCndaQeSt+f9KO0VCs8h1tnXdo2uLPm4lThnw== + dependencies: + "@lerna/query-graph" "6.0.1" + chalk "^4.1.0" + columnify "^1.6.0" + +"@lerna/log-packed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.1.tgz#20fe38b5f18e65392b42bf84cfdda0afc0b62330" + integrity sha512-HTJdZzfBbb5jyk/QU2O6o+yaWRwLoaPruhK+Q3ESTzQ2mlNCr0CI4UKWDcWURWx0EsVsYqsoUHuPZInpIHqCnA== + dependencies: + byte-size "^7.0.0" + columnify "^1.6.0" + has-unicode "^2.0.1" + npmlog "^6.0.2" + +"@lerna/npm-conf@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.1.tgz#fa242a36ef687c7b5207a9d9a85b9e7a4f38bdc5" + integrity sha512-VjxODCnl6QJGoQ8z8AWEID1GO9CtCr2yRyn6NoRdBOTYmzI5KhBBM+nWmyMSOUe0EZI+K5j04/GRzKHg2KXTAQ== + dependencies: + config-chain "^1.1.12" + pify "^5.0.0" + +"@lerna/npm-dist-tag@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.1.tgz#4718bdedd82f375ba619319070b694f1113e627b" + integrity sha512-jJKDgnhj6xGqSWGcbwdcbPtoo2m4mHRwqu8iln9e3TMOEyUO9aA4uvd0/18tEAsboOMiLUhhcQ8709iKv21ZEA== + dependencies: + "@lerna/otplease" "6.0.1" + npm-package-arg "8.1.1" + npm-registry-fetch "^13.3.0" + npmlog "^6.0.2" + +"@lerna/npm-install@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.1.tgz#5d6f0c62b34f2bfeb8f20b81b08f01ca0d3ed60b" + integrity sha512-saDJSyhhl/wxgZSzRx2/pr0wsMR+hZpdhLGd1lZgo5XzLq3ogK+BxPFz3AK3xhRnNaMq96gDQ3xmeetoV53lwQ== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/get-npm-exec-opts" "6.0.1" + fs-extra "^9.1.0" + npm-package-arg "8.1.1" + npmlog "^6.0.2" + signal-exit "^3.0.3" + write-pkg "^4.0.0" + +"@lerna/npm-publish@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.1.tgz#ffbca4be5b971df978a60917460ee8f28b1c62b7" + integrity sha512-hgzF9fOfp010z7PJtqNLxNXiHr6u4UDVwiX8g22rhJKBh9Ekrq7N9NS3mF0l+RcleRU/jJKYtZ0Ci3fICaaRUg== + dependencies: + "@lerna/otplease" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + fs-extra "^9.1.0" + libnpmpublish "^6.0.4" + npm-package-arg "8.1.1" + npmlog "^6.0.2" + pify "^5.0.0" + read-package-json "^5.0.1" + +"@lerna/npm-run-script@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.1.tgz#3a255aa6f37a5e2369a37a8ddcb2709f84019ed1" + integrity sha512-K+D4LEoVRuBoKRImprkVRHIORu0xouX+c6yI1B93KWHKJ60H8qCeB0gQkA30pFALx3qG07bXVnFmfK9SGQXD3Q== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/get-npm-exec-opts" "6.0.1" + npmlog "^6.0.2" + +"@lerna/otplease@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.1.tgz#da5467c603565940c1f91e65d077abf25d96df7f" + integrity sha512-RrP8GtfE9yz37GuuCFqddR3mVIQc1ulUpAaaDNK4AOTb7gM0aCsTN7V2gCGBk1zdIsBuvNvNqt5jpWm4U6/EAA== + dependencies: + "@lerna/prompt" "6.0.1" + +"@lerna/output@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.1.tgz#5e301ad0bed607ee139cf207fd75ed1e5fac7908" + integrity sha512-4jZ3fgaCbnsTZ353/lXE/3w20Cge6G3iUoESVip+JE2yhZ8rWgPISG8RFR0YGEtSgq2yC9AgGnGlvmOnAc4SAQ== + dependencies: + npmlog "^6.0.2" + +"@lerna/pack-directory@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.1.tgz#4a0bf61b7cb1b1b3f1fb95afec987a7c63ff9f95" + integrity sha512-vNgS5Rs7s6khOYuHE5nTds0VDfHBH8YNGvV1s0yGAg/Zkivi7bOTs8jDQFiYhQX3HOTC1/85BLhGQ3zcDHlrew== + dependencies: + "@lerna/get-packed" "6.0.1" + "@lerna/package" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/temp-write" "6.0.1" + npm-packlist "^5.1.1" + npmlog "^6.0.2" + tar "^6.1.0" + +"@lerna/package-graph@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.1.tgz#db72ab9ed45933d1518de7f7389a6c79e6059336" + integrity sha512-OMppRWpfSaI6HO/Tc5FVpNefgOsCc3/DzaMLme6QTTpbEwD3EhvQ3Xx0MgsGMPdmZhWp/WOoAJsVRnLa+l03gg== + dependencies: + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/validation-error" "6.0.1" + npm-package-arg "8.1.1" + npmlog "^6.0.2" + semver "^7.3.4" + +"@lerna/package@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.1.tgz#cb950e574b1ea3ef5cd8cf62b3c4308f6c869122" + integrity sha512-vCwyiLVJ4K3SR6KZleglq1dUXIiYGmk3b+NrFWP/Z3dhVE0C+RqgxSsAS4aaUNMSO2KSI0dBdce7BT/D+FdpIQ== + dependencies: + load-json-file "^6.2.0" + npm-package-arg "8.1.1" + write-pkg "^4.0.0" + +"@lerna/prerelease-id-from-version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.1.tgz#a47980aa6c78deaa36430d03b6300bc889960b50" + integrity sha512-aZBs/FinztKjNXlk0cW99FpABynZzZwlmJuW4h9nMrQPgWoaDAERfImbefIH/lcpxdRuuGtClyZUFBOSq8ppfg== + dependencies: + semver "^7.3.4" + +"@lerna/profiler@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.1.tgz#2b7a043e6999823ad97a7ddaea0ed7f338032f92" + integrity sha512-vZrgF5pDhYWY/Gx7MjtyOgTVMA6swDV2+xPZwkvRD1Z0XpWEIn5d79zRN/1SBpdMNozC7Lj++1oEbCGNWhy/ow== + dependencies: + fs-extra "^9.1.0" + npmlog "^6.0.2" + upath "^2.0.1" + +"@lerna/project@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.1.tgz#0d4a6dbca1943478d554d4a3a610968caf9b303a" + integrity sha512-/n2QuAEgImbwUqrJND15FxYu29p/mLTUpL/8cSg6IUlOQRFyXteESRyl8A2Ex7Wj00FMbtB13vgbmTdkTgKL0A== + dependencies: + "@lerna/package" "6.0.1" + "@lerna/validation-error" "6.0.1" + cosmiconfig "^7.0.0" + dedent "^0.7.0" + dot-prop "^6.0.1" + glob-parent "^5.1.1" + globby "^11.0.2" + js-yaml "^4.1.0" + load-json-file "^6.2.0" + npmlog "^6.0.2" + p-map "^4.0.0" + resolve-from "^5.0.0" + write-json-file "^4.3.0" + +"@lerna/prompt@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.1.tgz#2a744b168ce4a29b7c66d500258a3f65b3f028e2" + integrity sha512-faR7oVdHBO3QTJ6o9kUEDPpyjCftd/CCa1rAC6q8f3vlLfCPrTym0qT+DcOBFGpDQh4m2dmGfJZgpXIVi6bMbg== + dependencies: + inquirer "^8.2.4" + npmlog "^6.0.2" + +"@lerna/publish@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.1.tgz#9448a35a87e2c986c8919114698f3a314a9a2574" + integrity sha512-xIleRwCuPHtShNSPc6RDH33Z+EO1E4O0LOhPq5qTwanNPYh5eL6bDHBsox44BbMD9dhhI4PUrqIGTu3AoKdDxg== + dependencies: + "@lerna/check-working-tree" "6.0.1" + "@lerna/child-process" "6.0.1" + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/describe-ref" "6.0.1" + "@lerna/log-packed" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/npm-dist-tag" "6.0.1" + "@lerna/npm-publish" "6.0.1" + "@lerna/otplease" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/pack-directory" "6.0.1" + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@lerna/version" "6.0.1" + fs-extra "^9.1.0" + libnpmaccess "^6.0.3" + npm-package-arg "8.1.1" + npm-registry-fetch "^13.3.0" + npmlog "^6.0.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + pacote "^13.6.1" + semver "^7.3.4" + +"@lerna/pulse-till-done@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.1.tgz#d23985aea1ba25bb33cf74b39f36f2b7a5d21791" + integrity sha512-DK5Ylh/O7Vzn9ObEggvoHdLxc1hiXsDZ4fUvSmi50kc5QrMrk+xo6OyPgIaDBhYxj6lm3TQ1KkvWnRgiEynKAg== + dependencies: + npmlog "^6.0.2" + +"@lerna/query-graph@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.1.tgz#f72b55f0ee4662d06167e639e975019e5c004c59" + integrity sha512-X8Z63Ax5a9nXgNBG+IAXEdCL4MG88akr7L4mBvKiTPrK5VgP46YzuZSaSoPI8bU67MlWBkSYQWAJJ5t0HEtKTw== + dependencies: + "@lerna/package-graph" "6.0.1" + +"@lerna/resolve-symlink@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.1.tgz#30c3ccf4c730451754ce7aa002772f26dd757c20" + integrity sha512-btosycLN+2lpqou6pz0Oeq4XIKHDIn0NvdnuCBLxtuBOBNIkdlx5QWKCtZ31GYKbCUt55w1DSGL64kfVuejVQQ== + dependencies: + fs-extra "^9.1.0" + npmlog "^6.0.2" + read-cmd-shim "^3.0.0" + +"@lerna/rimraf-dir@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.1.tgz#e52ba283a4c39ade75792c23d0c6dcec65dcbbf4" + integrity sha512-rBFkwrxEQWFfZV5IMiPfGVubOquvOTNsPJPUf5tZoPAqKHXVQi5iYZGB65VG8JA7eFenZxh5mVErX2gtWFh1Ew== + dependencies: + "@lerna/child-process" "6.0.1" + npmlog "^6.0.2" + path-exists "^4.0.0" + rimraf "^3.0.2" + +"@lerna/run-lifecycle@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.1.tgz#ab94838cf7daa1edd6228be0a161b38ec1a42a0b" + integrity sha512-gC7rnV3mrgFFIM8GlHc3d22ovYHoExu9CuIAxN26CVrMq7iEYxWoxYvweqVANsCHR7CVbs+dsDx8/TP1pQG8wg== + dependencies: + "@lerna/npm-conf" "6.0.1" + "@npmcli/run-script" "^4.1.7" + npmlog "^6.0.2" + p-queue "^6.6.2" + +"@lerna/run-topologically@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.1.tgz#dcf26259e57b224d4aad2e3b259555ecd2f226ea" + integrity sha512-p4J9RvOUyDUjQ21tDh7Durci9YnuBu3T8WXD8xu5ZwcxVnawK1h5B8kP4V1R5L/jwNqkXsAnlLwikPVGQ5Iptw== + dependencies: + "@lerna/query-graph" "6.0.1" + p-queue "^6.6.2" + +"@lerna/run@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.1.tgz#20d3c77fa8faad01b915214b95477ae5390c8b45" + integrity sha512-F1vvpaevsWCjaQs3NlBegH54izm3cO3Qbg/cRRzPZMK4Jo7gE1ddL7+zCIq0zGt6aeVqRGBOtUMk4SvNGkzI4w== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/npm-run-script" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/profiler" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/timer" "6.0.1" + "@lerna/validation-error" "6.0.1" + fs-extra "^9.1.0" + p-map "^4.0.0" + +"@lerna/symlink-binary@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.1.tgz#b9278650c3360cc518e0d313d9999cd740a2c054" + integrity sha512-TcwxDMgU9w+hGl0EeYihPytVRKV0KTeZZW4Bq6NEtjTCIIuKWxZjcY5ocxW22i6BClBvfFAJqkf+e+i3Nixlhg== + dependencies: + "@lerna/create-symlink" "6.0.1" + "@lerna/package" "6.0.1" + fs-extra "^9.1.0" + p-map "^4.0.0" + +"@lerna/symlink-dependencies@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.1.tgz#28c01b3f910c1d13b1d447d27c47f5c76efd0096" + integrity sha512-ImyqjLjMBu0ORGO9gYHr9oDgN/5QeeGuELtYNweLS5vMNSH1dokQW9fqZSrgfCJPbxeCizBcDTi/Knqg17ebkA== + dependencies: + "@lerna/create-symlink" "6.0.1" + "@lerna/resolve-symlink" "6.0.1" + "@lerna/symlink-binary" "6.0.1" + fs-extra "^9.1.0" + p-map "^4.0.0" + p-map-series "^2.1.0" + +"@lerna/temp-write@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.1.tgz#84f8aa3f74b6150706a70430c68815517f5301cf" + integrity sha512-9eklYncDnwTnGF9o14GOrZU05ZK5n6/x5XYRQHbuLfK5T9pmOiUyl6sO1613cZygUMaWHHi7BLtBPiw2CklqXQ== + dependencies: + graceful-fs "^4.1.15" + is-stream "^2.0.0" + make-dir "^3.0.0" + temp-dir "^1.0.0" + uuid "^8.3.2" + +"@lerna/timer@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.1.tgz#eb10242c48a1246e1bf216af305974fbd6332d39" + integrity sha512-FLoga8iprKmRkh9jO+LP4Bm7MZLO4wNHM4LML4Dlh9CPwcIOWTteI8wSgRXvEJpt33IRIoPOUnfL3iHh8WwaYA== + +"@lerna/validation-error@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.1.tgz#afcf6b193eae86d64df9561afb7698696257304f" + integrity sha512-kjAxfFY1pDltwoCTvMQCbnpBwMXBFuvE4hdi8qePhBQ1Lf0PlTOI4ZqMFIkaTud+oujzysDXraTJbYTjc+C+zw== + dependencies: + npmlog "^6.0.2" + +"@lerna/version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.1.tgz#988675be8ea29f1548cb4554c257c2cc94b78084" + integrity sha512-d/addeHVsRFWx3fb/XZIh6f23KuEC9Fn3ytpaMzA8rlLF3Nob1opIR98ZfUz7Nf+skpIV1QiIbXdJTZzIKvd9g== + dependencies: + "@lerna/check-working-tree" "6.0.1" + "@lerna/child-process" "6.0.1" + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/conventional-commits" "6.0.1" + "@lerna/github-client" "6.0.1" + "@lerna/gitlab-client" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/temp-write" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@nrwl/devkit" ">=14.8.6 < 16" + chalk "^4.1.0" + dedent "^0.7.0" + load-json-file "^6.2.0" + minimatch "^3.0.4" + npmlog "^6.0.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + p-reduce "^2.1.0" + p-waterfall "^2.1.1" + semver "^7.3.4" + slash "^3.0.0" + write-json-file "^4.3.0" + +"@lerna/write-log-file@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.1.tgz#4335d5e08686f8250ebae9d7f56b64452bd90cd3" + integrity sha512-fJGDE8rlE35DwKSqV8M1VV2xw/vQlgwTwURjNOMvd1Ar23Aa9CkJC4XAwc9uUgIku34IsWUM8MNbw9ClSsJaqw== + dependencies: + npmlog "^6.0.2" + write-file-atomic "^4.0.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1441,6 +2140,140 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/arborist@5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.3.0.tgz#321d9424677bfc08569e98a5ac445ee781f32053" + integrity sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/map-workspaces" "^2.0.3" + "@npmcli/metavuln-calculator" "^3.0.1" + "@npmcli/move-file" "^2.0.0" + "@npmcli/name-from-folder" "^1.0.1" + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/package-json" "^2.0.0" + "@npmcli/run-script" "^4.1.3" + bin-links "^3.0.0" + cacache "^16.0.6" + common-ancestor-path "^1.0.1" + json-parse-even-better-errors "^2.3.1" + json-stringify-nice "^1.1.4" + mkdirp "^1.0.4" + mkdirp-infer-owner "^2.0.0" + nopt "^5.0.0" + npm-install-checks "^5.0.0" + npm-package-arg "^9.0.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.0" + npmlog "^6.0.2" + pacote "^13.6.1" + parse-conflict-json "^2.0.1" + proc-log "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^2.0.2" + readdir-scoped-modules "^1.1.0" + rimraf "^3.0.2" + semver "^7.3.7" + ssri "^9.0.0" + treeverse "^2.0.0" + walk-up-path "^1.0.0" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/git@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== + dependencies: + "@npmcli/promise-spawn" "^3.0.0" + lru-cache "^7.4.4" + mkdirp "^1.0.4" + npm-pick-manifest "^7.0.0" + proc-log "^2.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +"@npmcli/map-workspaces@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== + dependencies: + "@npmcli/name-from-folder" "^1.0.1" + glob "^8.0.1" + minimatch "^5.0.1" + read-package-json-fast "^2.0.3" + +"@npmcli/metavuln-calculator@^3.0.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" + integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== + dependencies: + cacache "^16.0.0" + json-parse-even-better-errors "^2.3.1" + pacote "^13.0.3" + semver "^7.3.5" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/name-from-folder@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" + integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== + +"@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + +"@npmcli/package-json@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" + integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== + dependencies: + json-parse-even-better-errors "^2.3.1" + +"@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + "@nrwl/cli@14.5.10": version "14.5.10" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.5.10.tgz#826c06a9a272523424f0c5690f5d745260ed1ea1" @@ -1448,6 +2281,13 @@ dependencies: nx "14.5.10" +"@nrwl/cli@15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" + integrity sha512-D0zAhZ375bQnoUM2HLifMzAa75A3/lC9OkkewsiVVbqaznjEIry8ezHZepgfjFRVzLr3ue7FIpDEH3iJIYzvVw== + dependencies: + nx "15.0.0" + "@nrwl/devkit@14.5.10": version "14.5.10" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.5.10.tgz#b87bc3dad8e6d019c76adf7f65a56af19df70283" @@ -1459,6 +2299,17 @@ semver "7.3.4" tslib "^2.3.0" +"@nrwl/devkit@>=14.8.6 < 16": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.0.0.tgz#755bc07581a57e0ae87f68a7562ab86ff737e919" + integrity sha512-ALtPfILlxLDg77rV/XNdDGbhUkh0gZPj/4Ehy3ScvVqPhTrDIZNLGX13dXgUUF9xhGb7SXPmvzZkduBpqmHnfQ== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tslib "^2.3.0" + "@nrwl/jest@14.5.10": version "14.5.10" resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.5.10.tgz#1e808608665660c59e4b3026ba0eab7f86153163" @@ -1497,6 +2348,13 @@ dependencies: nx "14.5.10" +"@nrwl/tao@15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" + integrity sha512-qup1eSWYwp/KVrw/wxeWBvYttQ9dcbQnqpXb5NQMD31SpXEZSpJB1i3GV/o6CF5qQQSNLwICXZx25rNTTQAqpg== + dependencies: + nx "15.0.0" + "@nrwl/workspace@14.5.10": version "14.5.10" resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.5.10.tgz#cf224886a983c53eded62fa3d5e55c80863eca64" @@ -1528,6 +2386,112 @@ yargs "^17.4.0" yargs-parser "21.0.1" +"@octokit/auth-token@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.2.tgz#a0fc8de149fd15876e1ac78f6525c1c5ab48435f" + integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== + dependencies: + "@octokit/types" "^8.0.0" + +"@octokit/core@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.1.0.tgz#b6b03a478f1716de92b3f4ec4fd64d05ba5a9251" + integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^8.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^7.0.0": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.3.tgz#0b96035673a9e3bedf8bab8f7335de424a2147ed" + integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== + dependencies: + "@octokit/types" "^8.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^5.0.0": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.4.tgz#519dd5c05123868276f3ae4e50ad565ed7dff8c8" + integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== + dependencies: + "@octokit/request" "^6.0.0" + "@octokit/types" "^8.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== + +"@octokit/plugin-enterprise-rest@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + +"@octokit/plugin-paginate-rest@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz#93d7e74f1f69d68ba554fa6b888c2a9cf1f99a83" + integrity sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw== + dependencies: + "@octokit/types" "^8.0.0" + +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@^6.7.0": + version "6.7.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz#2f6f17f25b6babbc8b41d2bb0a95a8839672ce7c" + integrity sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw== + dependencies: + "@octokit/types" "^8.0.0" + deprecation "^2.3.1" + +"@octokit/request-error@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.2.tgz#f74c0f163d19463b87528efe877216c41d6deb0a" + integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== + dependencies: + "@octokit/types" "^8.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^6.0.0": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.2.tgz#a2ba5ac22bddd5dcb3f539b618faa05115c5a255" + integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== + dependencies: + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^8.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/rest@^19.0.3": + version "19.0.5" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.5.tgz#4dbde8ae69b27dca04b5f1d8119d282575818f6c" + integrity sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow== + dependencies: + "@octokit/core" "^4.1.0" + "@octokit/plugin-paginate-rest" "^5.0.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^6.7.0" + +"@octokit/types@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.0.0.tgz#93f0b865786c4153f0f6924da067fe0bb7426a9f" + integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== + dependencies: + "@octokit/openapi-types" "^14.0.0" + "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -1810,6 +2774,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -1989,11 +2958,26 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "@types/node@*", "@types/node@^18.6.3": version "18.7.11" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.11.tgz#486e72cfccde88da24e1f23ff1b7d8bfb64e6250" integrity sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw== +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prettier@^2.1.5": version "2.7.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" @@ -2449,11 +3433,44 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@^3.0.0-rc.18": + version "3.0.0-rc.26" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.26.tgz#353976e2c2dff453c824724532ab246772a4f6f6" + integrity sha512-F52Zryoi6uSHi43A/htykDD7l1707TQjHeAHTKxNWJBTwvrEKWYvuu1w8bzSHpFVc06ig2KyrpHPfmeiuOip8Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -2505,13 +3522,35 @@ acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== -agent-base@6: +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agentkeepalive@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2584,11 +3623,24 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -2631,6 +3683,11 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" @@ -2662,11 +3719,21 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + arrify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -2705,6 +3772,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2718,6 +3790,15 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" +axios@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" + integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" @@ -2864,11 +3945,28 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bin-links@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" + integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== + dependencies: + cmd-shim "^5.0.0" + mkdirp-infer-owner "^2.0.0" + npm-normalize-package-bin "^2.0.0" + read-cmd-shim "^3.0.0" + rimraf "^3.0.0" + write-file-atomic "^4.0.0" + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -2886,7 +3984,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.0.3: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -3091,6 +4189,23 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + +byte-size@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -3117,6 +4232,30 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3145,6 +4284,15 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3185,7 +4333,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3198,6 +4346,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -3237,11 +4390,21 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.2.0: version "3.3.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" @@ -3270,7 +4433,12 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-cursor@3.1.0: +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== @@ -3282,6 +4450,16 @@ cli-spinners@2.6.1: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -3291,6 +4469,27 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +cmd-shim@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== + dependencies: + mkdirp-infer-owner "^2.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3333,6 +4532,19 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +columnify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3345,11 +4557,24 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -3370,11 +4595,34 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.12: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -3392,6 +4640,88 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +conventional-changelog-angular@^5.0.12: + version "5.0.13" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-core@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +conventional-recommended-bump@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -3444,6 +4774,17 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -3539,6 +4880,11 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -3548,6 +4894,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3555,13 +4906,31 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== + +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decimal.js@^10.2.1: version "10.4.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.0.tgz#97a7448873b01e92e5ff9117d89a7bca8e63e0fe" @@ -3587,6 +4956,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3627,11 +5003,26 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -3645,11 +5036,29 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +dezalgo@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" @@ -3707,11 +5116,30 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + dotenv@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3777,6 +5205,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3808,6 +5243,21 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.4: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4343,7 +5793,7 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -4482,6 +5932,15 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4552,7 +6011,7 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@3.2.0: +figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -4617,6 +6076,13 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4671,6 +6137,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.9: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -4733,6 +6204,23 @@ fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4786,6 +6274,20 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4810,6 +6312,21 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -4822,18 +6339,67 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + +git-url-parse@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + git-up "^7.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" glob-parent@^3.1.0: version "3.1.0" @@ -4843,7 +6409,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4886,6 +6452,17 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -4898,7 +6475,7 @@ globals@^13.15.0: dependencies: type-fest "^0.20.2" -globby@^11.1.0: +globby@^11.0.2, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4910,7 +6487,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -4920,6 +6497,23 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -4959,6 +6553,11 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5028,6 +6627,27 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.1.0.tgz#9786123f92ef3627f24abc3f15c20d98ec4a6594" + integrity sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q== + dependencies: + lru-cache "^7.5.1" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -5040,6 +6660,11 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -5060,6 +6685,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" @@ -5092,18 +6726,32 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + husky@^8.0.0: version "8.0.1" resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" @@ -5121,6 +6769,13 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -5152,7 +6807,12 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -infer-owner@^1.0.3: +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -5180,6 +6840,45 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== +ini@^1.3.2, ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== + dependencies: + npm-package-arg "^9.0.1" + promzard "^0.3.0" + read "^1.0.7" + read-package-json "^5.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + +inquirer@^8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -5189,6 +6888,11 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -5259,6 +6963,20 @@ is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -5351,6 +7069,16 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -5380,6 +7108,21 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5387,6 +7130,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -5414,6 +7162,13 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + dependencies: + protocols "^2.0.1" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -5433,11 +7188,23 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -6248,7 +8015,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -6319,6 +8086,16 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -6336,6 +8113,11 @@ jsonc-parser@3.0.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -6345,6 +8127,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -6353,6 +8140,16 @@ jsonfile@^6.0.1: array-includes "^3.1.5" object.assign "^4.1.3" +just-diff-apply@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.4.1.tgz#1debed059ad009863b4db0e8d8f333d743cdd83b" + integrity sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g== + +just-diff@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.1.1.tgz#8da6414342a5ed6d02ccd64f5586cbbed3146202" + integrity sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -6372,7 +8169,7 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -6382,6 +8179,35 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +lerna@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.1.tgz#7b14f05d1e17dc628478d33f225a579a6088d317" + integrity sha512-aNodtj1jyuEqzYmkYh+vTfRuzLkG3RZkvYxFCuLeXXzIYD5pjMHtf+1q4m03SPsZt+cElhhwkgjdg6GjihraBw== + dependencies: + "@lerna/add" "6.0.1" + "@lerna/bootstrap" "6.0.1" + "@lerna/changed" "6.0.1" + "@lerna/clean" "6.0.1" + "@lerna/cli" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/create" "6.0.1" + "@lerna/diff" "6.0.1" + "@lerna/exec" "6.0.1" + "@lerna/import" "6.0.1" + "@lerna/info" "6.0.1" + "@lerna/init" "6.0.1" + "@lerna/link" "6.0.1" + "@lerna/list" "6.0.1" + "@lerna/publish" "6.0.1" + "@lerna/run" "6.0.1" + "@lerna/version" "6.0.1" + "@nrwl/devkit" ">=14.8.6 < 16" + import-local "^3.0.2" + inquirer "^8.2.4" + npmlog "^6.0.2" + nx ">=14.8.6 < 16" + typescript "^3 || ^4" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6403,6 +8229,27 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libnpmaccess@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + +libnpmpublish@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" + integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== + dependencies: + normalize-package-data "^4.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + semver "^7.3.7" + ssri "^9.0.0" + lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -6425,6 +8272,16 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +load-json-file@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -6451,6 +8308,14 @@ localforage@^1.8.1: dependencies: lie "3.1.1" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -6478,16 +8343,29 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6509,6 +8387,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.14.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" + integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== + lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -6528,7 +8411,7 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@^2.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -6548,6 +8431,28 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -6560,6 +8465,16 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -6602,6 +8517,23 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -6679,6 +8611,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -6710,11 +8647,87 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + minimist@^1.2.0, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6739,6 +8752,15 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== + dependencies: + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" + mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -6746,6 +8768,16 @@ mkdirp@^0.5.1, mkdirp@^0.5.3: dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6773,7 +8805,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6789,6 +8821,22 @@ multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" +multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nan@^2.12.1: version "2.16.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" @@ -6821,12 +8869,12 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -6841,11 +8889,34 @@ node-addon-api@^3.2.1: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-gyp-build@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== +node-gyp@^9.0.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.0.tgz#f8eefe77f0ad8edb3b3b898409b53e697642b319" + integrity sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -6885,7 +8956,21 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== -normalize-package-data@^2.3.2: +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -6895,6 +8980,26 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -6907,6 +9012,89 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + +npm-install-checks@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" + integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-packlist@^5.1.0, npm-packlist@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + +npm-pick-manifest@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== + dependencies: + npm-install-checks "^5.0.0" + npm-normalize-package-bin "^2.0.0" + npm-package-arg "^9.0.0" + semver "^7.3.5" + +npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + npm-run-all@4.1.5, npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -6929,19 +9117,69 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npmlog@^6.0.0, npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nwsapi@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== -nx@14.5.10: - version "14.5.10" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" - integrity sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg== +nx@14.5.10: + version "14.5.10" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" + integrity sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg== + dependencies: + "@nrwl/cli" "14.5.10" + "@nrwl/tao" "14.5.10" + "@parcel/watcher" "2.0.4" + chalk "4.1.0" + chokidar "^3.5.1" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^10.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.0.0" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^3.9.0" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.4.0" + yargs-parser "21.0.1" + +nx@15.0.0, "nx@>=14.8.6 < 16": + version "15.0.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" + integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== dependencies: - "@nrwl/cli" "14.5.10" - "@nrwl/tao" "14.5.10" + "@nrwl/cli" "15.0.0" + "@nrwl/tao" "15.0.0" "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" chalk "4.1.0" chokidar "^3.5.1" cli-cursor "3.1.0" @@ -6956,12 +9194,13 @@ nx@14.5.10: glob "7.1.4" ignore "^5.0.4" js-yaml "4.1.0" - jsonc-parser "3.0.0" + jsonc-parser "3.2.0" minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" semver "7.3.4" string-width "^4.2.3" + strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" tsconfig-paths "^3.9.0" @@ -7107,11 +9346,43 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7126,6 +9397,13 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -7147,11 +9425,87 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-waterfall@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + +pacote@^13.0.3, pacote@^13.6.1: + version "13.6.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== + dependencies: + "@npmcli/git" "^3.0.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/promise-spawn" "^3.0.0" + "@npmcli/run-script" "^4.1.0" + cacache "^16.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.6" + mkdirp "^1.0.4" + npm-package-arg "^9.0.0" + npm-packlist "^5.1.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.1" + proc-log "^2.0.0" + promise-retry "^2.0.1" + read-package-json "^5.0.0" + read-package-json-fast "^2.0.3" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -7184,6 +9538,15 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-conflict-json@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" + integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== + dependencies: + json-parse-even-better-errors "^2.3.1" + just-diff "^5.0.1" + just-diff-apply "^5.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -7192,7 +9555,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.2.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -7202,6 +9565,20 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + dependencies: + protocols "^2.0.0" + +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + parse5@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -7300,6 +9677,11 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -7310,6 +9692,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -7389,6 +9776,11 @@ pretty-quick@^3.1.3: mri "^1.1.5" multimatch "^4.0.0" +proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -7399,11 +9791,29 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24" + integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -7412,6 +9822,13 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -7421,6 +9838,16 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -7429,6 +9856,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -7491,6 +9923,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + qs@6.10.3: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -7518,6 +9955,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -7563,6 +10005,46 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +read-cmd-shim@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" + integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== + +read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^5.0.0, read-package-json@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -7572,6 +10054,23 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@1, read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -7585,7 +10084,7 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -7594,6 +10093,16 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdir-scoped-modules@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -7610,6 +10119,14 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -7763,6 +10280,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -7811,6 +10333,11 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7832,6 +10359,13 @@ rxjs@^6.5.4: dependencies: tslib "^1.9.0" +rxjs@^7.5.5: + version "7.5.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + dependencies: + tslib "^2.1.0" + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -7849,7 +10383,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -7901,6 +10435,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" @@ -7951,6 +10492,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -7979,6 +10525,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8032,6 +10585,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -8062,6 +10620,37 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" + integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== + dependencies: + is-plain-obj "^2.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -8157,6 +10746,20 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -8169,6 +10772,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^9.0.0, ssri@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + stack-utils@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" @@ -8229,7 +10839,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8315,11 +10925,27 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -8380,6 +11006,23 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -8442,6 +11085,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -8460,6 +11108,18 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -8467,6 +11127,13 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -8543,6 +11210,21 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeverse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" + integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" @@ -8577,7 +11259,7 @@ tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.0: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -8613,6 +11295,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -8623,6 +11310,21 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -8643,11 +11345,21 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +"typescript@^3 || ^4": + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + typescript@^4.7.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +uglify-js@^3.1.4: + version "3.17.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.3.tgz#f0feedf019c4510f164099e8d7e72ff2d7304377" + integrity sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -8698,6 +11410,13 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -8705,6 +11424,18 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -8743,6 +11474,11 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + update-browserslist-db@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" @@ -8808,6 +11544,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -8836,7 +11577,7 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -8844,6 +11585,20 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -8880,6 +11635,11 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" +walk-up-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/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: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -8913,6 +11673,18 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +wcwidth@^1.0.0, wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -9012,6 +11784,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -9039,18 +11819,30 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -9072,6 +11864,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -9082,7 +11883,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.1: +write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== @@ -9090,6 +11891,39 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-json-file@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" + integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== + dependencies: + detect-indent "^6.0.0" + graceful-fs "^4.1.15" + is-plain-obj "^2.0.0" + make-dir "^3.0.0" + sort-keys "^4.0.0" + write-file-atomic "^3.0.0" + +write-pkg@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + ws@^7.4.6: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" @@ -9130,16 +11964,44 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + yargs-parser@21.0.1: version "21.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.3.1, yargs@^17.4.0: version "17.5.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" From 8c04dce9c53680bd0fed637a8474acda64db4a17 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 13:36:46 +0200 Subject: [PATCH 050/640] feat(publish): Create NPM tarballs (#54) - Add yarn scripts (`yarn build:npm`) to our packages to create NPM tarballs. - Rename the root package (purely cosmetic) and the core package (to get a somewhat reasonanable package name) --- .gitignore | 4 ++++ nx.json | 3 +++ package.json | 7 ++++--- packages/{unplugin => bundler-plugin-core}/.babelrc.json | 0 packages/{unplugin => bundler-plugin-core}/.eslintrc.js | 0 packages/{unplugin => bundler-plugin-core}/.gitignore | 0 packages/{unplugin => bundler-plugin-core}/LICENSE | 0 packages/{unplugin => bundler-plugin-core}/README.md | 6 ++---- packages/{unplugin => bundler-plugin-core}/jest.config.js | 0 packages/{unplugin => bundler-plugin-core}/package.json | 3 ++- .../{unplugin => bundler-plugin-core}/rollup.config.js | 0 .../src/getReleaseName.ts | 0 .../{unplugin => bundler-plugin-core}/src/globals.d.ts | 0 packages/{unplugin => bundler-plugin-core}/src/index.ts | 0 .../{unplugin => bundler-plugin-core}/src/sentry/api.ts | 0 .../{unplugin => bundler-plugin-core}/src/sentry/logger.ts | 0 .../src/sentry/releasePipeline.ts | 0 .../src/sentry/sourcemaps.ts | 0 .../src/sentry/telemetry.ts | 0 .../{unplugin => bundler-plugin-core}/src/tsconfig.json | 0 packages/{unplugin => bundler-plugin-core}/src/types.ts | 0 .../test/getReleaseName.test.ts | 0 .../{unplugin => bundler-plugin-core}/test/logger.test.ts | 0 .../{unplugin => bundler-plugin-core}/test/tsconfig.json | 0 .../{unplugin => bundler-plugin-core}/types.tsconfig.json | 0 packages/esbuild-plugin/package.json | 3 ++- packages/esbuild-plugin/src/index.ts | 4 ++-- packages/integration-tests/package.json | 2 +- packages/integration-tests/utils/create-cjs-bundles.ts | 2 +- packages/playground/build-esbuild.js | 2 +- packages/playground/build-webpack4.js | 2 +- packages/playground/build-webpack5.js | 2 +- packages/playground/package.json | 2 +- packages/playground/rollup.config.js | 2 +- packages/playground/vite.config.js | 2 +- packages/playground/vite.config.smallNodeApp.js | 2 +- packages/rollup-plugin/package.json | 3 ++- packages/rollup-plugin/src/index.ts | 4 ++-- packages/vite-plugin/package.json | 3 ++- packages/vite-plugin/src/index.ts | 4 ++-- packages/webpack-plugin/package.json | 2 +- packages/webpack-plugin/src/index.ts | 4 ++-- 42 files changed, 39 insertions(+), 29 deletions(-) rename packages/{unplugin => bundler-plugin-core}/.babelrc.json (100%) rename packages/{unplugin => bundler-plugin-core}/.eslintrc.js (100%) rename packages/{unplugin => bundler-plugin-core}/.gitignore (100%) rename packages/{unplugin => bundler-plugin-core}/LICENSE (100%) rename packages/{unplugin => bundler-plugin-core}/README.md (84%) rename packages/{unplugin => bundler-plugin-core}/jest.config.js (100%) rename packages/{unplugin => bundler-plugin-core}/package.json (96%) rename packages/{unplugin => bundler-plugin-core}/rollup.config.js (100%) rename packages/{unplugin => bundler-plugin-core}/src/getReleaseName.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/globals.d.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/index.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/sentry/api.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/sentry/logger.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/sentry/releasePipeline.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/sentry/sourcemaps.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/sentry/telemetry.ts (100%) rename packages/{unplugin => bundler-plugin-core}/src/tsconfig.json (100%) rename packages/{unplugin => bundler-plugin-core}/src/types.ts (100%) rename packages/{unplugin => bundler-plugin-core}/test/getReleaseName.test.ts (100%) rename packages/{unplugin => bundler-plugin-core}/test/logger.test.ts (100%) rename packages/{unplugin => bundler-plugin-core}/test/tsconfig.json (100%) rename packages/{unplugin => bundler-plugin-core}/types.tsconfig.json (100%) diff --git a/.gitignore b/.gitignore index 93cab344de41..cdf43c383107 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ node_modules yarn-error.log + +.vscode/settings.json + +*.tgz \ No newline at end of file diff --git a/nx.json b/nx.json index 5fcc7fdcb750..a7836ba51dd0 100644 --- a/nx.json +++ b/nx.json @@ -24,6 +24,9 @@ }, "check:types": { "dependsOn": ["^build"] + }, + "build:npm": { + "dependsOn": ["build", "^build"] } } } diff --git a/package.json b/package.json index d6963f7ec9e5..234b48708487 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "@sentry/sentry-unplugin-root", + "name": "@sentry/bundler-plugins", "version": "0.0.0", - "description": "Root of the sentry unplugin monorepo.", - "repository": "git@github.com:lforst/sentry-unplugin.git", + "description": "Sentry Bundler Plugins Monorepo.", + "repository": "git@github.com:getsentry/sentry-unplugin.git", "private": true, "workspaces": [ "packages/*" @@ -11,6 +11,7 @@ "build": "nx run-many --target=build --all", "build:watch": "nx run-many --target=build:watch --all", "build:graph": "nx graph", + "build:npm": "nx run-many --target=build:npm --all", "check:types": "nx run-many --target=check:types --all", "test": "nx run-many --target=test --all", "lint": "nx run-many --target=lint --all", diff --git a/packages/unplugin/.babelrc.json b/packages/bundler-plugin-core/.babelrc.json similarity index 100% rename from packages/unplugin/.babelrc.json rename to packages/bundler-plugin-core/.babelrc.json diff --git a/packages/unplugin/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js similarity index 100% rename from packages/unplugin/.eslintrc.js rename to packages/bundler-plugin-core/.eslintrc.js diff --git a/packages/unplugin/.gitignore b/packages/bundler-plugin-core/.gitignore similarity index 100% rename from packages/unplugin/.gitignore rename to packages/bundler-plugin-core/.gitignore diff --git a/packages/unplugin/LICENSE b/packages/bundler-plugin-core/LICENSE similarity index 100% rename from packages/unplugin/LICENSE rename to packages/bundler-plugin-core/LICENSE diff --git a/packages/unplugin/README.md b/packages/bundler-plugin-core/README.md similarity index 84% rename from packages/unplugin/README.md rename to packages/bundler-plugin-core/README.md index b3c303b9e921..5c41bd0051bf 100644 --- a/packages/unplugin/README.md +++ b/packages/bundler-plugin-core/README.md @@ -4,7 +4,7 @@

-# Sentry Unplugin (WIP) +# Sentry Bundler Plugin Core **WARNING: This package is work in progress! Do not yet use it in production. We're happy to receive your feedback!** @@ -19,15 +19,13 @@ Check out the individual packages for more information and examples: ### Features -The Sentry Unplugin take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: +The Sentry bundler plugin core package contains the following functionality: - Sourcemap upload - Release creation in Sentry - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically associate errors with releases (Release injection) -The Sentry Unplugin can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. - ### More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/packages/unplugin/jest.config.js b/packages/bundler-plugin-core/jest.config.js similarity index 100% rename from packages/unplugin/jest.config.js rename to packages/bundler-plugin-core/jest.config.js diff --git a/packages/unplugin/package.json b/packages/bundler-plugin-core/package.json similarity index 96% rename from packages/unplugin/package.json rename to packages/bundler-plugin-core/package.json index 1e103a90dd0d..6bf3e921229e 100644 --- a/packages/unplugin/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,5 +1,5 @@ { - "name": "@sentry/sentry-unplugin", + "name": "@sentry/bundler-plugin-core", "version": "0.0.0-alpha.0", "description": "Official Sentry unplugin", "repository": "git://github.com/getsentry/sentry-unplugin.git", @@ -22,6 +22,7 @@ "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", diff --git a/packages/unplugin/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js similarity index 100% rename from packages/unplugin/rollup.config.js rename to packages/bundler-plugin-core/rollup.config.js diff --git a/packages/unplugin/src/getReleaseName.ts b/packages/bundler-plugin-core/src/getReleaseName.ts similarity index 100% rename from packages/unplugin/src/getReleaseName.ts rename to packages/bundler-plugin-core/src/getReleaseName.ts diff --git a/packages/unplugin/src/globals.d.ts b/packages/bundler-plugin-core/src/globals.d.ts similarity index 100% rename from packages/unplugin/src/globals.d.ts rename to packages/bundler-plugin-core/src/globals.d.ts diff --git a/packages/unplugin/src/index.ts b/packages/bundler-plugin-core/src/index.ts similarity index 100% rename from packages/unplugin/src/index.ts rename to packages/bundler-plugin-core/src/index.ts diff --git a/packages/unplugin/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts similarity index 100% rename from packages/unplugin/src/sentry/api.ts rename to packages/bundler-plugin-core/src/sentry/api.ts diff --git a/packages/unplugin/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts similarity index 100% rename from packages/unplugin/src/sentry/logger.ts rename to packages/bundler-plugin-core/src/sentry/logger.ts diff --git a/packages/unplugin/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts similarity index 100% rename from packages/unplugin/src/sentry/releasePipeline.ts rename to packages/bundler-plugin-core/src/sentry/releasePipeline.ts diff --git a/packages/unplugin/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts similarity index 100% rename from packages/unplugin/src/sentry/sourcemaps.ts rename to packages/bundler-plugin-core/src/sentry/sourcemaps.ts diff --git a/packages/unplugin/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts similarity index 100% rename from packages/unplugin/src/sentry/telemetry.ts rename to packages/bundler-plugin-core/src/sentry/telemetry.ts diff --git a/packages/unplugin/src/tsconfig.json b/packages/bundler-plugin-core/src/tsconfig.json similarity index 100% rename from packages/unplugin/src/tsconfig.json rename to packages/bundler-plugin-core/src/tsconfig.json diff --git a/packages/unplugin/src/types.ts b/packages/bundler-plugin-core/src/types.ts similarity index 100% rename from packages/unplugin/src/types.ts rename to packages/bundler-plugin-core/src/types.ts diff --git a/packages/unplugin/test/getReleaseName.test.ts b/packages/bundler-plugin-core/test/getReleaseName.test.ts similarity index 100% rename from packages/unplugin/test/getReleaseName.test.ts rename to packages/bundler-plugin-core/test/getReleaseName.test.ts diff --git a/packages/unplugin/test/logger.test.ts b/packages/bundler-plugin-core/test/logger.test.ts similarity index 100% rename from packages/unplugin/test/logger.test.ts rename to packages/bundler-plugin-core/test/logger.test.ts diff --git a/packages/unplugin/test/tsconfig.json b/packages/bundler-plugin-core/test/tsconfig.json similarity index 100% rename from packages/unplugin/test/tsconfig.json rename to packages/bundler-plugin-core/test/tsconfig.json diff --git a/packages/unplugin/types.tsconfig.json b/packages/bundler-plugin-core/types.tsconfig.json similarity index 100% rename from packages/unplugin/types.tsconfig.json rename to packages/bundler-plugin-core/types.tsconfig.json diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index bc9ddd0623eb..72e60901057f 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -28,6 +28,7 @@ "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", @@ -35,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 92e5078306d6..a7e7f03da45d 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryEsbuildPlugin as default } from "@sentry/sentry-unplugin"; -export type { Options } from "@sentry/sentry-unplugin"; +export { sentryEsbuildPlugin as default } from "@sentry/bundler-plugin-core"; +export type { Options } from "@sentry/bundler-plugin-core"; diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index d3eb40d3a8bc..18d5c5f9392b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -13,7 +13,7 @@ "dependencies": { "@sentry-internal/eslint-config": "0.0.0-alpha.0", "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", - "@sentry/sentry-unplugin": "0.0.0-alpha.0", + "@sentry/bundler-plugin-core": "0.0.0-alpha.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index d335d656745b..b88860646718 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -10,7 +10,7 @@ import { sentryVitePlugin, sentryWebpackPlugin, Options, -} from "@sentry/sentry-unplugin"; +} from "@sentry/bundler-plugin-core"; export function createCjsBundles( entrypoints: { [name: string]: string }, diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 6eee7f2a9e8c..a8d5283cfde1 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -1,4 +1,4 @@ -const { sentryEsbuildPlugin } = require("@sentry/sentry-unplugin"); +const { sentryEsbuildPlugin } = require("@sentry/bundler-plugin-core"); const { build } = require("esbuild"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 3de801e19c89..8cd29aff146d 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack4 = require("webpack4"); -const { sentryWebpackPlugin } = require("@sentry/sentry-unplugin"); +const { sentryWebpackPlugin } = require("@sentry/bundler-plugin-core"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 0295c797f0ae..812dd5df38f2 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack5 = require("webpack"); -const { sentryWebpackPlugin } = require("@sentry/sentry-unplugin"); +const { sentryWebpackPlugin } = require("@sentry/bundler-plugin-core"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/package.json b/packages/playground/package.json index 9b7db230914b..e56132160810 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -16,7 +16,7 @@ "dependencies": { "@sentry/integrations": "^7.11.1", "@sentry/node": "^7.11.1", - "@sentry/sentry-unplugin": "0.0.0-alpha.0", + "@sentry/bundler-plugin-core": "0.0.0-alpha.0", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.js index 3eb8f3195a31..7c54c2697d75 100644 --- a/packages/playground/rollup.config.js +++ b/packages/playground/rollup.config.js @@ -1,7 +1,7 @@ // @ts-check import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; -import { sentryRollupPlugin } from "@sentry/sentry-unplugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugin-core"; import placeHolderOptions from "./config.json"; const input = ["src/entrypoint1.js"]; diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index c68a6a8ff8db..a625bae999b3 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/sentry-unplugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugin-core"; import { defineConfig } from "vite"; import * as path from "path"; import placeHolderOptions from "./config.json"; diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 996d7ac59fd3..6873c32669fb 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/sentry-unplugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugin-core"; import { defineConfig } from "vite"; import * as path from "path"; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 5c56130986d0..ef3743a5b944 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -29,6 +29,7 @@ "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", @@ -36,7 +37,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 1a96f42a0fef..6e64e732d3f4 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryRollupPlugin as default } from "@sentry/sentry-unplugin"; -export type { Options } from "@sentry/sentry-unplugin"; +export { sentryRollupPlugin as default } from "@sentry/bundler-plugin-core"; +export type { Options } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a06b9ec4554c..b476d848a316 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -28,6 +28,7 @@ "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", @@ -35,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 216d37ad1f69..f4754ff8b06b 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryVitePlugin as default } from "@sentry/sentry-unplugin"; -export type { Options } from "@sentry/sentry-unplugin"; +export { sentryVitePlugin as default } from "@sentry/bundler-plugin-core"; +export type { Options } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f10df214fbb7..3795d0548de9 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/sentry-unplugin": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.0-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 7f1b86e673ff..67cd0758054a 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryWebpackPlugin as default } from "@sentry/sentry-unplugin"; -export type { Options } from "@sentry/sentry-unplugin"; +export { sentryWebpackPlugin as default } from "@sentry/bundler-plugin-core"; +export type { Options } from "@sentry/bundler-plugin-core"; From 922d4c27ab1bf9d2633daef39687b0f8f802028c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 20 Oct 2022 14:09:31 +0200 Subject: [PATCH 051/640] meta: Remove unplugin references (#56) --- README.md | 16 ++++++++-------- package.json | 2 +- packages/bundler-plugin-core/README.md | 8 ++++---- packages/bundler-plugin-core/package.json | 4 ++-- packages/bundler-plugin-core/src/index.ts | 12 ++++++------ packages/bundler-plugin-core/src/sentry/api.ts | 2 +- .../src/sentry/releasePipeline.ts | 12 ++++++------ packages/bundler-plugin-core/src/tsconfig.json | 2 +- packages/esbuild-plugin/package.json | 6 +++--- packages/esbuild-plugin/src/tsconfig.json | 2 +- packages/integration-tests/package.json | 2 +- packages/integration-tests/tsconfig.json | 2 +- packages/playground/package.json | 2 +- packages/rollup-plugin/package.json | 6 +++--- packages/rollup-plugin/src/tsconfig.json | 2 +- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 6 +++--- packages/vite-plugin/src/tsconfig.json | 2 +- packages/webpack-plugin/package.json | 6 +++--- packages/webpack-plugin/src/tsconfig.json | 2 +- 20 files changed, 49 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 2ede16e18882..558f3c0e2745 100644 --- a/README.md +++ b/README.md @@ -4,29 +4,29 @@

-# Sentry Unplugin (WIP) +# Sentry Bundler Plugins (WIP) **WARNING: This project is work in progress! Do not yet use it in production. We're happy to receive your feedback!** -Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. +Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/getsentry/bundler-plugins). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin) +- [Rollup](https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin) ### Features -The Sentry Unplugin take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: +The Sentry Bundler Plugins take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: - Sourcemap upload - Release creation in Sentry - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically associate errors with releases (Release injection) -The Sentry Unplugin can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. +The Sentry Bundler Plugins can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. ### More information diff --git a/package.json b/package.json index 234b48708487..975fa2dddeb6 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@sentry/bundler-plugins", "version": "0.0.0", "description": "Sentry Bundler Plugins Monorepo.", - "repository": "git@github.com:getsentry/sentry-unplugin.git", + "repository": "git@github.com:getsentry/bundler-plugins.git", "private": true, "workspaces": [ "packages/*" diff --git a/packages/bundler-plugin-core/README.md b/packages/bundler-plugin-core/README.md index 5c41bd0051bf..b95d143afb25 100644 --- a/packages/bundler-plugin-core/README.md +++ b/packages/bundler-plugin-core/README.md @@ -12,10 +12,10 @@ Core package containing the bundler-agnostic functionality used by the bundler p Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin) +- [Rollup](https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin) ### Features diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 6bf3e921229e..5ec1c34e5dc5 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,7 +1,7 @@ { "name": "@sentry/bundler-plugin-core", "version": "0.0.0-alpha.0", - "description": "Official Sentry unplugin", + "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin", "author": "Sentry", @@ -47,7 +47,7 @@ "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 841fe1bc98b5..5ca37107676b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -132,13 +132,13 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) */ buildStart() { transaction = sentryHub.startTransaction({ - op: "sentry-unplugin", - name: "plugin-execution", + op: "function.plugin", + name: "Sentry Bundler Plugin execution", }); releaseInjectionSpan = addSpanToTransaction( { hub: sentryHub, parentSpan: transaction, logger }, - "release-injection", - "release-injection" + "function.plugin.inject_release", + "Release injection" ); }, @@ -278,8 +278,8 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) transaction && addSpanToTransaction( { hub: sentryHub, parentSpan: transaction, logger }, - "release-creation", - "release-creation-pipeline" + "function.plugin.release", + "Release pipeline" ); const release = getReleaseName(options.release); diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index 17cfd2994828..a9d57c40d5a4 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -5,7 +5,7 @@ import { Options } from "../types"; import { captureMinimalError } from "./telemetry"; const API_PATH = "/api/0"; -const USER_AGENT = `sentry-unplugin/${__PACKAGE_VERSION__}`; +const USER_AGENT = `sentry-bundler-plugin/${__PACKAGE_VERSION__}`; const sentryApiAxiosInstance = ({ authToken, diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 380fcb840d40..c8e31b4fb3ae 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -16,7 +16,7 @@ export async function createNewRelease( options: Options, ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "create-new-release"); + const span = addSpanToTransaction(ctx, "function.plugin.create_release"); // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { @@ -54,7 +54,7 @@ export async function uploadSourceMaps( options: Options, ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "upload-sourceMaps"); + const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); // This is what Sentry CLI does: // TODO: 0. Preprocess source maps // - (Out of scope for now) @@ -137,7 +137,7 @@ export async function finalizeRelease( options: Options, ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "finalize-release"); + const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); if (options.finalize) { const { authToken, org, url, project } = options; @@ -168,7 +168,7 @@ export async function cleanArtifacts( options: Options, ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "clean-artifacts"); + const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them @@ -209,7 +209,7 @@ export async function setCommits( /* version: string, */ ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "set-commits"); + const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); span?.finish(); return Promise.resolve("Noop"); @@ -219,7 +219,7 @@ export async function addDeploy( /* version: string, */ ctx: BuildContext ): Promise { - const span = addSpanToTransaction(ctx, "add-deploy"); + const span = addSpanToTransaction(ctx, "function.plugin.add_deploy"); span?.finish(); return Promise.resolve("Noop"); diff --git a/packages/bundler-plugin-core/src/tsconfig.json b/packages/bundler-plugin-core/src/tsconfig.json index ec25fabd5819..2607d6f03246 100644 --- a/packages/bundler-plugin-core/src/tsconfig.json +++ b/packages/bundler-plugin-core/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 72e60901057f..5ed266ade09b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/esbuild-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry esbuild plugin", - "repository": "git://github.com/getsentry/sentry-unplugin.git", - "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/esbuild-plugin", + "repository": "git@github.com:getsentry/bundler-plugins.git", + "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin", "author": "Sentry", "license": "MIT", "keywords": [ @@ -47,7 +47,7 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/esbuild-plugin/src/tsconfig.json b/packages/esbuild-plugin/src/tsconfig.json index 86051fab4936..fd37e1237c42 100644 --- a/packages/esbuild-plugin/src/tsconfig.json +++ b/packages/esbuild-plugin/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 18d5c5f9392b..627ac490a62b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@sentry/bundler-plugin-core": "0.0.0-alpha.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json index c697299a2fcb..79bc94be3707 100644 --- a/packages/integration-tests/tsconfig.json +++ b/packages/integration-tests/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, diff --git a/packages/playground/package.json b/packages/playground/package.json index e56132160810..311ac62411ce 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,5 +1,5 @@ { - "name": "@sentry-internal/unplugin-playground", + "name": "@sentry-internal/bundler-plugin-playground", "version": "0.0.0-alpha.0", "license": "MIT", "private": true, diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ef3743a5b944..9a4a067026de 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/rollup-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Rollup plugin", - "repository": "git://github.com/getsentry/sentry-unplugin.git", - "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/rollup-plugin", + "repository": "git://github.com/getsentry/bundler-plugins.git", + "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin", "author": "Sentry", "license": "MIT", "keywords": [ @@ -48,7 +48,7 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/rollup-plugin/src/tsconfig.json b/packages/rollup-plugin/src/tsconfig.json index 86051fab4936..fd37e1237c42 100644 --- a/packages/rollup-plugin/src/tsconfig.json +++ b/packages/rollup-plugin/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 2d9dba9eef95..7fd1c852c3dc 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,5 +1,5 @@ { - "name": "@sentry-internal/sentry-unplugin-tsconfig", + "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", "version": "0.0.0-alpha.0", "license": "MIT", "private": true diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b476d848a316..416c363cda20 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/vite-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Vite plugin", - "repository": "git://github.com/getsentry/sentry-unplugin.git", - "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/vite-plugin", + "repository": "git://github.com/getsentry/bundler-plugins.git", + "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin", "author": "Sentry", "license": "MIT", "keywords": [ @@ -47,7 +47,7 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/vite-plugin/src/tsconfig.json b/packages/vite-plugin/src/tsconfig.json index 86051fab4936..fd37e1237c42 100644 --- a/packages/vite-plugin/src/tsconfig.json +++ b/packages/vite-plugin/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3795d0548de9..3f84b3915725 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/webpack-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Webpack plugin", - "repository": "git://github.com/getsentry/sentry-unplugin.git", - "homepage": "https://github.com/getsentry/sentry-unplugin/tree/main/packages/webpack-plugin", + "repository": "git://github.com/getsentry/bundler-plugins.git", + "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin", "author": "Sentry", "license": "MIT", "keywords": [ @@ -47,7 +47,7 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-unplugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/src/tsconfig.json b/packages/webpack-plugin/src/tsconfig.json index 86051fab4936..fd37e1237c42 100644 --- a/packages/webpack-plugin/src/tsconfig.json +++ b/packages/webpack-plugin/src/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-unplugin-tsconfig/base-config.json", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*", "../package.json"], "compilerOptions": { "esModuleInterop": true From a8975d67521b7c6d5d52f2a78b1498df1df3b95f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 20 Oct 2022 15:19:30 +0200 Subject: [PATCH 052/640] meta: Rename repo to `sentry-javascript-bundler-plugins` (#57) --- README.md | 10 +++++----- package.json | 4 ++-- packages/bundler-plugin-core/README.md | 8 ++++---- packages/esbuild-plugin/package.json | 4 ++-- packages/rollup-plugin/package.json | 4 ++-- packages/vite-plugin/package.json | 4 ++-- packages/webpack-plugin/package.json | 4 ++-- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 558f3c0e2745..c50a1b04205e 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,14 @@ **WARNING: This project is work in progress! Do not yet use it in production. We're happy to receive your feedback!** -Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/getsentry/bundler-plugins). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. +Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin) +- [Rollup](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin) ### Features diff --git a/package.json b/package.json index 975fa2dddeb6..a4218e935daa 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "@sentry/bundler-plugins", + "name": "@sentry/sentry-javascript-bundler-plugins", "version": "0.0.0", "description": "Sentry Bundler Plugins Monorepo.", - "repository": "git@github.com:getsentry/bundler-plugins.git", + "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "private": true, "workspaces": [ "packages/*" diff --git a/packages/bundler-plugin-core/README.md b/packages/bundler-plugin-core/README.md index b95d143afb25..bc20d6a3b8f5 100644 --- a/packages/bundler-plugin-core/README.md +++ b/packages/bundler-plugin-core/README.md @@ -12,10 +12,10 @@ Core package containing the bundler-agnostic functionality used by the bundler p Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin) +- [Rollup](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin) +- [Vite](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin) +- [esbuild](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin) +- [Webpack](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin) ### Features diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5ed266ade09b..0dbb96a875ee 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/esbuild-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry esbuild plugin", - "repository": "git@github.com:getsentry/bundler-plugins.git", - "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/esbuild-plugin", + "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", "author": "Sentry", "license": "MIT", "keywords": [ diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 9a4a067026de..774c785f1d4f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/rollup-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Rollup plugin", - "repository": "git://github.com/getsentry/bundler-plugins.git", - "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/rollup-plugin", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", "author": "Sentry", "license": "MIT", "keywords": [ diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 416c363cda20..92083ec68fbc 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/vite-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Vite plugin", - "repository": "git://github.com/getsentry/bundler-plugins.git", - "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/vite-plugin", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", "author": "Sentry", "license": "MIT", "keywords": [ diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3f84b3915725..21f0617a6840 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -2,8 +2,8 @@ "name": "@sentry/webpack-plugin", "version": "0.0.0-alpha.0", "description": "Official Sentry Webpack plugin", - "repository": "git://github.com/getsentry/bundler-plugins.git", - "homepage": "https://github.com/getsentry/bundler-plugins/tree/main/packages/webpack-plugin", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", "author": "Sentry", "license": "MIT", "keywords": [ From 6977e411170155e88e5f13a8ee661fadb6a99fd6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 15:26:20 +0200 Subject: [PATCH 053/640] feat(publish): Add GHA and Craft configs (#55) This adds a few files to set up Craft and our release process. - New GHA `release` workflow - Upload artifacts job - Craft config --- .craft.yml | 17 ++++++++++++++++ .github/workflows/checks.yml | 38 ++++++++++++++++++++++++++++++++++- .github/workflows/release.yml | 30 +++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .craft.yml create mode 100644 .github/workflows/release.yml diff --git a/.craft.yml b/.craft.yml new file mode 100644 index 000000000000..56e26bd00693 --- /dev/null +++ b/.craft.yml @@ -0,0 +1,17 @@ +github: + owner: getsentry + repo: bundler-plugins +changelogPolicy: simple +preReleaseCommand: bash scripts/craft-pre-release.sh +requireNames: + - /^sentry-bundler-plugin-core--*.tgz$/ + - /^sentry-esbuild-plugin-*.tgz$/ + - /^sentry-rollup-plugin-*.tgz$/ + - /^sentry-vite-plugin-*.tgz$/ + # TODO: Comment in when we replace the webpack plugin + # - /^sentry-webpack-plugin-*.tgz$/ +targets: + - name: github + includeNames: /^sentry-.*.tgz$/ + - name: npm + includeNames: /^sentry-.*.tgz$/ diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index e71cd7a401fa..dee7a2c211a5 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -2,10 +2,13 @@ name: Checks on: push: - branches: [main] + branches: + - main + - release/** pull_request: env: + # We pin the exact version to enforce reproducable builds with node + npm. DEFAULT_NODE_VERSION: "16.15.1" jobs: @@ -66,3 +69,36 @@ jobs: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - run: yarn lint + + artifacts: + needs: build + name: Upload Artifacts + runs-on: ubuntu-latest + # Build artifacts are only needed for releasing workflow. + # TODO comment back in + # if: startsWith(github.ref, 'refs/heads/release/') + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + # - name: Check dependency cache + # uses: actions/cache@v3 + # with: + # path: ${{ env.CACHED_DEPENDENCY_PATHS }} + # key: ${{ needs.job_build.outputs.dependency_cache_key }} + # - name: Check build cache + # uses: actions/cache@v3 + # with: + # path: ${{ env.CACHED_BUILD_PATHS }} + # key: ${{ env.BUILD_CACHE_KEY }} + - run: yarn --frozen-lockfile + - name: pack + run: yarn build:npm + - name: archive artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ github.sha }} + path: | + ${{ github.workspace }}/packages/*/dist/** + ${{ github.workspace }}/packages/**/*.tgz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000000..15eea42568e2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Prepare Release +on: + workflow_dispatch: + inputs: + version: + description: Version to release + required: true + force: + description: Force a release even when there are release-blockers (optional) + required: false + merge_target: + description: Target branch to merge into. Uses the default branch as a fallback (optional) + required: false +jobs: + release: + runs-on: ubuntu-latest + name: "Release a new version" + steps: + - uses: actions/checkout@v3 + with: + token: ${{ secrets.GH_RELEASE_PAT }} + fetch-depth: 0 + - name: Prepare release + uses: getsentry/action-prepare-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }} + with: + version: ${{ github.event.inputs.version }} + force: ${{ github.event.inputs.force }} + merge_target: ${{ github.event.inputs.merge_target }} From 23fa0b963e73a576fbf12271a5760c9b706e4ca6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 17:09:35 +0200 Subject: [PATCH 054/640] fix(publish): Correct craft requireNames config (#59) --- .craft.yml | 6 +++--- CHANGELOG.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.craft.yml b/.craft.yml index 56e26bd00693..146958da1c87 100644 --- a/.craft.yml +++ b/.craft.yml @@ -4,12 +4,12 @@ github: changelogPolicy: simple preReleaseCommand: bash scripts/craft-pre-release.sh requireNames: - - /^sentry-bundler-plugin-core--*.tgz$/ + - /^sentry-bundler-plugin-core-*.tgz$/ - /^sentry-esbuild-plugin-*.tgz$/ - /^sentry-rollup-plugin-*.tgz$/ - /^sentry-vite-plugin-*.tgz$/ - # TODO: Comment in when we replace the webpack plugin - # - /^sentry-webpack-plugin-*.tgz$/ +# TODO: Comment in when we replace the webpack plugin +# - /^sentry-webpack-plugin-*.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ diff --git a/CHANGELOG.md b/CHANGELOG.md index a7c3d479274b..478db95e7709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott -## 0.0.0-alpha.0 +## 0.0.1-alpha.0 This release marks the first release of the Sentry bundler blugins. This is still a heavy work in progress and a lot of things are still missing and subject to change From 18d0392613ea26a5da90c6abd7c49ddeb22e91a8 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 17:15:42 +0200 Subject: [PATCH 055/640] chore: Add CONTRIBUTING file (#58) add a slightly changed version of the JS SDK's CONTRIBUTION.md guide Co-authored-by: Luca Forstner --- CONTRIBUTING.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000000..6f6d82e80d4e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,90 @@ +

+ + Sentry + +

+ +# Contributing + +We welcome suggested improvements and bug fixes to the `@sentry/*` family of packages, in the form of pull requests on [`GitHub`](https://github.com/getsentry/sentry-javascript-bundler-plugins). The guide below will help you get started, but if you have further questions, please feel free to reach out on [Discord](https://discord.gg/Ww9hbqr). + +## Setting up an Environment + +To run the test suite and our code linter, node.js and yarn are required. + +[`node` download](https://nodejs.org/download) +[`yarn` download](https://yarnpkg.com/en/docs/install) + +`sentry-javascript-bundler-plugins` is a monorepo containing several packages, and we use `nx` to manage them. To get started, install all dependencies and then perform an initial build. + +``` +$ yarn +$ yarn build +``` + +With that, the repo is fully set up and you are ready to run all commands. + +## Building Packages + +Since we are using [`TypeScript`](https://www.typescriptlang.org/), you need to transpile the code to JavaScript to be able to use it. From the top level of the repo, there are three commands available: + +- `yarn build`, which runs a one-time build (transpiling and type generation) of every package +- `yarn build:watch`, which runs the command listed above in watch mode, meaning the command is re-executed after every file change + +## Adding Tests + +**Any nontrivial fixes/features should include tests.** You'll find a `test` folder in each package. + +## Running Tests + +Running tests works the same way as building - running `yarn test` at the project root will run tests for all packages, and running `yarn test` in a specific package will run tests for that package. There are also commands to run subsets of the tests in each location. Check out the `scripts` entry of the corresponding `package.json` for details. + +## Linting + +Similar to building and testing, linting can be done in the project root or in individual packages by calling `yarn lint`. + +## Considerations Before Sending Your First PR + +When contributing to the codebase, please note: + +- Non-trivial PRs will not be accepted without tests (see above). + If you need assistance in writing tests, feel free to reach out to us. +- Please do not bump version numbers yourself. + +## PR reviews + +For feedback in PRs, we use the [LOGAF scale](https://blog.danlew.net/2020/04/15/the-logaf-scale/) to specify how important a comment is: + +- `l`: low - nitpick. You may address this comment, but you don't have to. +- `m`: medium - normal comment. Worth addressing and fixing. +- `h`: high - Very important. We must not merge this PR without addressing this issue. + +You only need one approval from a maintainer to be able to merge. For some PRs, asking specific or multiple people for review might be adequate. + +Our different types of reviews: + +1. **LGTM without any comments.** You can merge immediately. +2. **LGTM with low and medium comments.** The reviewer trusts you to resolve these comments yourself, and you don't need to wait for another approval. +3. **Only comments.** You must address all the comments and need another review until you merge. +4. **Request changes.** Only use if something critical is in the PR that absolutely must be addressed. We usually use `h` comments for that. When someone requests changes, the same person must approve the changes to allow merging. Use this sparingly. + +## Publishing a Release + +_These steps are only relevant to Sentry employees when preparing and publishing a new SDK release._ + +1. Determine what version will be released (we use [semver](https://semver.org)). +2. Update [`CHANGELOG.md`](https://github.com/getsentry/sentry-javascript-bundler-plugins/edit/master/CHANGELOG.md) to add an entry for the next release number and a list of changes since the last release. (See details below.) +3. Run the [Prepare Release](https://github.com/getsentry/sentry-javascript-bundler-plugins/actions/workflows/release.yml) workflow. +4. A new issue should appear in https://github.com/getsentry/publish/issues. +5. Ask a member of the [@getsentry/releases team](https://github.com/orgs/getsentry/teams/releases/members) to approve the release. + +### Updating the Changelog + +1. Create a new branch. +2. Run `git log --format="- %s"` and copy everything since the last release. +3. Create a new section in the changelog, deciding based on the changes whether it should be a minor bump or a patch release. +4. Paste in the logs you copied earlier. +5. Delete any which aren't user-facing changes. +6. Alphabetize the rest. +7. If any of the PRs are from external contributors, include underneath the commits `Work in this release contributed by . Thank you for your contributions!`. If there's only one external PR, don't forget to remove the final `s`. If there are three or more, use an Oxford comma. (It's in the Sentry styleguide!) +8. Commit, push, and open a PR with the title `meta: Update changelog for `. From f80128d68f28d9806344ae5a2b1e659807954f08 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 20 Oct 2022 17:42:15 +0200 Subject: [PATCH 056/640] fix(publish): Fix regex in craft.yml --- .craft.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.craft.yml b/.craft.yml index 146958da1c87..88dfd5ac1e62 100644 --- a/.craft.yml +++ b/.craft.yml @@ -4,10 +4,10 @@ github: changelogPolicy: simple preReleaseCommand: bash scripts/craft-pre-release.sh requireNames: - - /^sentry-bundler-plugin-core-*.tgz$/ - - /^sentry-esbuild-plugin-*.tgz$/ - - /^sentry-rollup-plugin-*.tgz$/ - - /^sentry-vite-plugin-*.tgz$/ + - /^sentry-bundler-plugin-core-.*\.tgz$/ + - /^sentry-esbuild-plugin-.*\.tgz$/ + - /^sentry-rollup-plugin-.*\.tgz$/ + - /^sentry-vite-plugin-.*\.tgz$/ # TODO: Comment in when we replace the webpack plugin # - /^sentry-webpack-plugin-*.tgz$/ targets: From 3dc95c1434993ba7b3f8098b2765a073e50133fe Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 21 Oct 2022 10:15:25 +0200 Subject: [PATCH 057/640] fix(publish): Rename repo in craft config (#63) Adjust the repo name in .craft.yml to the current (and hopefully final) repo name --- .craft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index 88dfd5ac1e62..a970baac1043 100644 --- a/.craft.yml +++ b/.craft.yml @@ -1,6 +1,6 @@ github: owner: getsentry - repo: bundler-plugins + repo: sentry-javascript-bundler-plugins changelogPolicy: simple preReleaseCommand: bash scripts/craft-pre-release.sh requireNames: From 607112c4ef649897c6b61f3c68ab7304f0e18872 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 21 Oct 2022 08:29:50 +0000 Subject: [PATCH 058/640] release: 0.0.1-alpha.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lerna.json b/lerna.json index c718d2ad8280..b537b4f9cbc3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5ec1c34e5dc5..d8e14ca88068 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-unplugin.git", "homepage": "https://github.com/getsentry/sentry-unplugin", @@ -46,8 +46,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 0dbb96a875ee..98ad45e891c6 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.1-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -46,8 +46,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index ffa9d598b643..59984ab1b449 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 627ac490a62b..31f5556b5c35 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "license": "MIT", "private": true, "scripts": { @@ -11,9 +11,9 @@ "check:types": "tsc --project ./tsconfig.json --noEmit" }, "dependencies": { - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", - "@sentry/bundler-plugin-core": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry/bundler-plugin-core": "0.0.1-alpha.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 311ac62411ce..2741911f002c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "license": "MIT", "private": true, "scripts": { @@ -14,9 +14,9 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { + "@sentry/bundler-plugin-core": "0.0.1-alpha.0", "@sentry/integrations": "^7.11.1", "@sentry/node": "^7.11.1", - "@sentry/bundler-plugin-core": "0.0.0-alpha.0", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 774c785f1d4f..08588eefa112 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -37,7 +37,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.1-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -47,8 +47,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 7fd1c852c3dc..e3d5e4a3830b 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 92083ec68fbc..bfc3bbac0c22 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.1-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -46,8 +46,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 21f0617a6840..0b870dc0f0d3 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.0.0-alpha.0", + "version": "0.0.1-alpha.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -36,7 +36,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.0-alpha.0" + "@sentry/bundler-plugin-core": "0.0.1-alpha.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -46,8 +46,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.0-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.0-alpha.0", + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 0076936fb2b91da5fa4d357a87c5c63f8415175c Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 21 Oct 2022 13:28:24 +0200 Subject: [PATCH 059/640] fix(publish): Fix repository and homepage values in root package.json (#64) --- package.json | 3 ++- packages/bundler-plugin-core/package.json | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a4218e935daa..36875dd3038d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "@sentry/sentry-javascript-bundler-plugins", "version": "0.0.0", "description": "Sentry Bundler Plugins Monorepo.", - "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins", "private": true, "workspaces": [ "packages/*" diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d8e14ca88068..97b5f5d81bba 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -2,8 +2,8 @@ "name": "@sentry/bundler-plugin-core", "version": "0.0.1-alpha.0", "description": "Sentry Bundler Plugin Core", - "repository": "git://github.com/getsentry/sentry-unplugin.git", - "homepage": "https://github.com/getsentry/sentry-unplugin", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", "author": "Sentry", "license": "MIT", "publishConfig": { From 3ea33a0ccbcf3f5dbca6e37980c10c6ef355f9c1 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 21 Oct 2022 13:32:45 +0200 Subject: [PATCH 060/640] chore: Add `yarn clean` scripts (#65) yarn clean and yarn clean:all --- package.json | 5 ++++- packages/bundler-plugin-core/package.json | 5 ++++- packages/esbuild-plugin/package.json | 5 ++++- packages/eslint-configs/package.json | 4 ++++ packages/integration-tests/package.json | 7 +++++-- packages/playground/package.json | 5 ++++- packages/rollup-plugin/package.json | 5 ++++- packages/vite-plugin/package.json | 5 ++++- packages/webpack-plugin/package.json | 5 ++++- yarn.lock | 2 +- 10 files changed, 38 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 36875dd3038d..3be276d6f921 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,8 @@ "build:graph": "nx graph", "build:npm": "nx run-many --target=build:npm --all", "check:types": "nx run-many --target=check:types --all", + "clean": "nx run-many --target=clean --all", + "clean:all": "nx run-many --target=clean:all --all && yarn", "test": "nx run-many --target=test --all", "lint": "nx run-many --target=lint --all", "check:formatting": "prettier --check .", @@ -27,6 +29,7 @@ "lerna": "^6.0.1", "nx": "14.5.10", "prettier": "^2.7.1", - "pretty-quick": "^3.1.3" + "pretty-quick": "^3.1.3", + "npm-run-all": "^4.1.5" } } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 97b5f5d81bba..483debea7ff0 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -26,6 +26,10 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -54,7 +58,6 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 98ad45e891c6..6cfe1b757e0a 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -32,6 +32,10 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -54,7 +58,6 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 59984ab1b449..e10030503f54 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -16,5 +16,9 @@ }, "devDependencies": { "eslint": "^8.14.0" + }, + "scripts": { + "clean:all": "run-s clean:deps", + "clean:deps": "rimraf node_modules" } } diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 31f5556b5c35..5c969d905b52 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -8,7 +8,11 @@ "test:setup": "ts-node scripts/run-fixture-setups.ts", "test:jest": "jest", "lint": "eslint .", - "check:types": "tsc --project ./tsconfig.json --noEmit" + "check:types": "tsc --project ./tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./fixtures/*/out", + "clean:deps": "rimraf node_modules" }, "dependencies": { "@sentry-internal/eslint-config": "0.0.1-alpha.0", @@ -20,7 +24,6 @@ "esbuild": "0.14.49", "eslint": "^8.18.0", "jest": "^28.1.3", - "npm-run-all": "4.1.5", "rollup": "2.77.0", "ts-node": "^10.9.1", "vite": "3.0.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 2741911f002c..5de2792f75b1 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -11,6 +11,10 @@ "build:webpack5": "node build-webpack5.js", "build:esbuild": "node build-esbuild.js", "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js", + "clean": "run-s clean:build", + "clean:all": "run-p clean:deps", + "clean:build": "rimraf ./out", + "clean:deps": "rimraf node_modules", "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { @@ -22,7 +26,6 @@ "esbuild": "0.14.49", "express": "^4.18.1", "http-proxy": "^1.18.1", - "npm-run-all": "4.1.5", "rollup": "2.77.0", "vite": "3.0.0", "webpack": "5.74.0", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 08588eefa112..22f94eeddc37 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -33,6 +33,10 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -55,7 +59,6 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index bfc3bbac0c22..a700f43a3f7f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -32,6 +32,10 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -54,7 +58,6 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 0b870dc0f0d3..aed42747a48c 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -32,6 +32,10 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -54,7 +58,6 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" diff --git a/yarn.lock b/yarn.lock index 5b537dc738c4..7a038a31ea7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9095,7 +9095,7 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3 npm-package-arg "^9.0.1" proc-log "^2.0.0" -npm-run-all@4.1.5, npm-run-all@^4.1.5: +npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== From 61e91efde921fe66606e0b6bf4c3e5abd626a258 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Oct 2022 09:52:49 +0200 Subject: [PATCH 061/640] fix: Use `writeBundle` hook instead of `buildEnd` (#67) --- packages/bundler-plugin-core/package.json | 2 +- packages/bundler-plugin-core/src/index.ts | 8 ++++---- yarn.lock | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 483debea7ff0..378e27e949ca 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -39,7 +39,7 @@ "axios": "^0.27.2", "form-data": "^4.0.0", "magic-string": "0.26.2", - "unplugin": "0.9.4" + "unplugin": "0.10.1" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 5ca37107676b..66f7c8715688 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -80,7 +80,7 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * * Source maps upload: * - * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `buildEnd` hook. + * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `writeBundle` hook. * TODO: elaborate a bit on how sourcemaps upload works */ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) => { @@ -272,7 +272,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) * Responsible for executing the sentry release creation pipeline (i.e. creating a release on * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) */ - buildEnd() { + writeBundle() { releaseInjectionSpan?.finish(); const releasePipelineSpan = transaction && @@ -285,7 +285,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) const release = getReleaseName(options.release); sentryHub.addBreadcrumb({ - category: "buildEnd:start", + category: "writeBundle:start", level: "info", }); @@ -320,7 +320,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) }) .finally(() => { sentryHub.addBreadcrumb({ - category: "buildEnd:finish", + category: "writeBundle:finish", level: "info", }); releasePipelineSpan?.finish(); diff --git a/yarn.lock b/yarn.lock index 7a038a31ea7b..e304efef8cb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11451,15 +11451,15 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unplugin@0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.9.4.tgz#53e6f4fc92905122219af0e3f40af753563d38b6" - integrity sha512-lUe769wSsZiltVA1Ns9ZRx3K1ri/4yzOrLLI/ebSAj2f0PsXqIJeHIXhkhiayEe1pv+mHuZYyBS3B2RXG2Q2EQ== +unplugin@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.10.1.tgz#e00dc951c1901aef4124121057102a8c290e28b3" + integrity sha512-y1hdBitiLOJvCmer0/IGrMGmHplsm2oFRGWleoAJTRQ8aMHxHOe9gLntYlh1WNLKufBuQ2sOTrHF+KWH4xE8Ag== dependencies: acorn "^8.8.0" chokidar "^3.5.3" webpack-sources "^3.2.3" - webpack-virtual-modules "^0.4.4" + webpack-virtual-modules "^0.4.5" unset-value@^1.0.0: version "1.0.0" @@ -11708,10 +11708,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-virtual-modules@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz#a19fcf371923c59c4712d63d7d194b1e4d8262cc" - integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== +webpack-virtual-modules@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz#e476842dab5eafb7beb844aa2f747fc12ebbf6ec" + integrity sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg== "webpack4@npm:webpack@4.46.0": version "4.46.0" From f3843b54cf21e22e61e88dd902a314663e49657c Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 24 Oct 2022 11:35:39 +0200 Subject: [PATCH 062/640] Add all options including JSDoc to `Options` type (#66) Add all options + JSDoc from the webpack plugin to our `Options` type. Changes to Webpack Plugin: * Remove env variable usage * Remove configFile property ref: #62 --- packages/bundler-plugin-core/src/index.ts | 2 +- .../src/sentry/releasePipeline.ts | 3 +- packages/bundler-plugin-core/src/types.ts | 314 +++++++++++++++--- .../fixtures/array-entries-option/setup.ts | 7 +- .../fixtures/basic-release-injection/setup.ts | 3 +- .../fixtures/function-entries-option/setup.ts | 3 +- .../fixtures/regex-entries-option/setup.ts | 3 +- .../fixtures/string-entries-option/setup.ts | 3 +- 8 files changed, 291 insertions(+), 47 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 66f7c8715688..27525fa19c16 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -15,7 +15,7 @@ import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./s import { Span, Transaction } from "@sentry/types"; import { createLogger } from "./sentry/logger"; -const defaultOptions: Omit = { +const defaultOptions: Omit = { //TODO: add default options here as we port over options from the webpack plugin // validate: false debug: false, diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index c8e31b4fb3ae..3643b0301a0b 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -107,7 +107,8 @@ export async function uploadSourceMaps( //TODO: Remove this once we have internal options. this property must always be present const fileExtensions = ext || []; - const files = getFiles(include, fileExtensions); + //TODO: handle include property properly and remove this def. wrong type cast + const files = getFiles(include as string, fileExtensions); ctx.logger.info(`Found ${files.length} files to upload.`); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 392cc950bb12..2481f7ce98ea 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,20 +1,61 @@ -//TODO: JsDoc for all properties - import { Hub } from "@sentry/hub"; import { Span } from "@sentry/tracing"; import { createLogger } from "./sentry/logger"; -//TODO: compare types w/ webpack plugin (and sentry-cli?) -export type Options = { +/** + * The main options object holding all plugin options available to users + */ +export type Options = Omit & { /* --- authentication/identification: */ - org?: string; - project?: string; - authToken?: string; + + /** + * The slug of the Sentry organization associated with the app. + * + * This is a required field. + */ + org: string; + + /** + * The slug of the Sentry project associated with the app. + * + * This is a required field. + */ + project: string; + + /** + * The authentication token to use for all communication with Sentry. + * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. + * Required scopes: project:releases (and org:read if setCommits option is used). + * + * This is a required field. + */ + authToken: string; + + /** + * The base URL of your Sentry instance. Use this if you are using a self-hosted + * or Sentry instance other than sentry.io. + * + * Defaults to https://sentry.io/, which is the correct value for SAAS customers. + */ url?: string; /* --- release properties: */ + + /** + * Unique identifier for the release. + * + * Defaults to the output of the sentry-cli releases propose-version command, + * which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, + * Xcode, and Gradle, and otherwise uses HEAD's commit SHA. (For HEAD option, + * requires access to git CLI and for the root directory to be a valid repository). + */ release?: string; - // dist: string, + + /** + * Unique identifier for the distribution, used to further segment your release. + * Usually your build number. + */ + dist?: string; /** * Filter for bundle entry points that should contain the provided release. By default, the release will be injected @@ -27,34 +68,87 @@ export type Options = { */ entries?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); + /** + * Determines if the Sentry release record should be automatically finalized + * (meaning a date_released timestamp is added) after artifact upload. + * + * Defaults to `true`. + */ finalize?: boolean; /* --- source maps properties: */ - include: string; // | Array; - // ignoreFile: string - // ignore: string | string[] - ext?: string[]; - // urlPrefix: string, - // urlSuffix: string, - // validate: boolean - // stripPrefix?: boolean, - // stripCommonPrefix?: boolean, - // sourceMapReference?: boolean, - // rewrite?: boolean, + + /** + * One or more paths that Sentry CLI should scan recursively for sources. + * It will upload all .map files and match associated .js files. + * Each path can be given as a string or an object with path-specific options + * + * This is a required field. + */ + include: string | IncludeEntry | Array; + + /** + * When `true`, attempts source map validation before upload if rewriting is not enabled. + * It will spot a variety of issues with source maps and cancel the upload if any are found. + * + * Defaults to `false` as this can cause false positives. + */ + validate?: boolean; /* --- other unimportant (for now) stuff- properties: */ - // vcsRemote: string, + + /** + * Version control system remote name. + * + * Defaults to 'origin'. + */ + vcsRemote?: string; + + /** + * A header added to every outgoing network request. + * The format should be `header-key: header-value`. + * + * TODO: This is currently different from the webpack plugin. There, this property is + * called `customHeader` and it only accepts one header as a string. + * Change in follow-up PR. + */ customHeaders?: Record; - // dryRun?: boolean, + /** + * Attempts a dry run (useful for dev environments). + * + * Defaults to `false`, but may be automatically set to `true` in development environments + * by some framework integrations (Next.JS, possibly others). + */ + dryRun?: boolean; + + /** + * Print useful debug information. + * + * Defaults to `false`. + */ debug?: boolean; + + /** + * Suppresses all logs. + * + * Defaults to `false`. + */ silent?: boolean; + + /** + * Remove all the artifacts in the release before the upload. + * + * Defaults to `false`. + */ cleanArtifacts?: boolean; /** * When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. * - * By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. + * By default, the plugin will simply throw an error, thereby stopping the bundling process. + * If an `errorHandler` callback is provided, compilation will continue, unless an error is + * thrown in the provided callback. * * To allow compilation to continue but still emit a warning, set this option to the following: * @@ -65,21 +159,16 @@ export type Options = { * ``` */ errorHandler?: (err: Error) => void; - // setCommits?: { - // repo?: string, - // commit?: string, - // previousCommit?: string, - // auto?: boolean, - // ignoreMissing?: boolean - // }, - // deploy?: { - // env: string, - // started?: number, - // finished?: number, - // time?: number, - // name?: string, - // url?: string, - // } + + /** + * Adds commits to Sentry. + */ + setCommits?: SetCommitsOptions; + + /** + * Creates a new release deployment in Sentry. + */ + deploy?: DeployOptions; /** * If set to true, internal plugin errors and performance data will be sent to Sentry. @@ -94,12 +183,157 @@ export type Options = { telemetry?: boolean; }; -/* type IncludeEntry = { + /** + * One or more paths to scan for files to upload. + */ paths: string[]; - //TODO: what about the other entries?? + + /** + * One or more paths to ignore during upload. + * Overrides entries in ignoreFile file. + * + * Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. + */ + ignore?: string | string[]; + + /** + * Path to a file containing list of files/directories to ignore. + * + * Can point to `.gitignore` or anything with the same format. + */ + ignoreFile?: string; + + /** + * Array of file extensions of files to be collected for the file upload. + * + * By default the following file extensions are processed: js, map, jsbundle and bundle. + */ + ext?: string[]; + + /** + * URL prefix to add to the beginning of all filenames. + * Defaults to '~/' but you might want to set this to the full URL. + * + * This is also useful if your files are stored in a sub folder. eg: url-prefix '~/static/js'. + */ + urlPrefix?: string; + + /** + * URL suffix to add to the end of all filenames. + * Useful for appending query parameters. + */ + urlSuffix?: string; + + /** + * When paired with the `rewrite`, this will remove a prefix from filename references inside of + * sourcemaps. For instance you can use this to remove a path that is build machine specific. + * Note that this will NOT change the names of uploaded files. + */ + stripPrefix?: string[]; + + /** + * When paired with rewrite, this will add `~` to the stripPrefix array. + * + * Defaults to false. + */ + stripCommonPrefix?: boolean; + + /** + * Determines whether sentry-cli should attempt to link minified files with their corresponding maps. + * By default, it will match files and maps based on name, and add a Sourcemap header to each minified file + * for which it finds a map. Can be disabled if all minified files contain sourceMappingURL. + * + * Defaults to true. + */ + sourceMapReference?: boolean; + + /** + * Enables rewriting of matching source maps so that indexed maps are flattened and missing sources + * are inlined if possible. + * + * Defaults to true + */ + rewrite?: boolean; +}; + +type SetCommitsOptions = { + /** + * Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` + * and `previousCommit` as described in the option's documentation. + * + * If you set this to `true`, manually specified `commit` and `previousCommit` + * options will be overridden. It is best to not specify them at all if you + * set this option to `true`. + */ + auto?: boolean; + + /** + * The full repo name as defined in Sentry. + * + * Required if `auto` option is not `true`. + */ + repo?: string; + + /** + * The current (last) commit in the release. + * + * Required if `auto` option is not `true`. + */ + commit?: string; + + /** + * The commit before the beginning of this release (in other words, + * the last commit of the previous release). + * + * Defaults to the last commit of the previous release in Sentry. + * + * If there was no previous release, the last 10 commits will be used. + */ + previousCommit?: string; + + /** + * If the flag is to `true` and the previous release commit was not found + * in the repository, we create a release with the default commits count + * instead of failing the command. + * + * Defaults to `false`. + */ + ignoreMissing?: boolean; +}; + +type DeployOptions = { + /** + * Environment for this release. Values that make sense here would + * be `production` or `staging`. + */ + env: string; + + /** + * Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. + */ + started?: number; + + /** + * Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. + */ + finished?: number; + + /** + * Deployment duration (in seconds). Can be used instead of started and finished. + */ + time?: number; + + /** + * Human readable name for the deployment. + */ + name?: string; + + /** + * URL that points to the deployment. + */ + url?: string; }; -*/ /** * Holds data for internal purposes diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts index 5092fe22d781..d12f1b0a3d45 100644 --- a/packages/integration-tests/fixtures/array-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/array-entries-option/setup.ts @@ -1,3 +1,4 @@ +import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -9,5 +10,9 @@ const outputDir = path.resolve(__dirname, "./out"); createCjsBundles( { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, outputDir, - { release: "I AM A RELEASE!", include: outputDir, entries: [/entrypoint1\.js/, entryPoint3Path] } + { + release: "I AM A RELEASE!", + include: outputDir, + entries: [/entrypoint1\.js/, entryPoint3Path], + } as Options ); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index 2cd1f928e046..2d8a42fbb01f 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -1,3 +1,4 @@ +import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -7,4 +8,4 @@ const outputDir = path.resolve(__dirname, "./out"); createCjsBundles({ index: entryPointPath }, outputDir, { release: "I AM A RELEASE!", include: outputDir, -}); +} as Options); diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts index 58eee0af840d..565b941bbfcf 100644 --- a/packages/integration-tests/fixtures/function-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/function-entries-option/setup.ts @@ -1,3 +1,4 @@ +import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -14,5 +15,5 @@ createCjsBundles( include: outputDir, entries: (entrypointPath) => entrypointPath === entryPoint1Path || entrypointPath === entryPoint3Path, - } + } as Options ); diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts index 2dd0ccded728..f5e288173f9f 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/setup.ts @@ -1,3 +1,4 @@ +import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -9,4 +10,4 @@ createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, release: "I AM A RELEASE!", include: outputDir, entries: /entrypoint1\.js/, -}); +} as Options); diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts index a31f86c736a1..0481189ff48c 100644 --- a/packages/integration-tests/fixtures/string-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/string-entries-option/setup.ts @@ -1,3 +1,4 @@ +import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -9,4 +10,4 @@ createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, release: "I AM A RELEASE!", include: outputDir, entries: entryPoint1Path, -}); +} as Options); From a3c3ed8da1a6ac689b8ad0fd9f071c2b9f8bdefc Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 24 Oct 2022 15:25:13 +0200 Subject: [PATCH 063/640] chore: Add MIGRATION.md guide (#68) Add a `MIGRATION.md` file to our repo to add breaking changes to. Add the two breaking changes we discussed in #66 as a start. We can iterate on this document and adjust/add changes as we progress towards replacing the webpack plugin. Co-authored-by: Luca Forstner --- MIGRATION.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 MIGRATION.md diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 000000000000..f2b6a696277e --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,35 @@ +# Migration Guide + +This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins. + +## [Unreleased] Upgrading from 1.x to 2.x + +Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1. Version 2 no longer requires `sentry-cli` underneath, meaning the plugin no longer downloads a binary but implements all its functionality natively. + +### Removal of Implicit Environment Variable Usage + +Version 2 of the Webpack plugin removes the implicit passing of plugin parameters via environment variables. Previously, it was possible to specify values as environment variables, such as SENTRY_AUTH_TOKEN, but to never mention them in the plugin init options. In this version, you'll have to specify these values in the options. Note that this makes certain option fields explicitly required now which were previously only implicitly required (see [Initialization and Required Values](#initialization-and-required-values)). + +### Initialization and Required Values + +Previously, to use the plugin, you had to create a new class of the `SentryCLIPlugin` class. In version 2, you simply need to call a function and pass the initialization options to it. Note that in this new version, more options are now explicitly required. Here's an example: + +```js +// old config + environment variables were set for authToken, org and project +new SentryCliPlugin({ + include: "./dist", +}); + +// new config (you can still use env variables but you need to set them explicitly): +sentryWebpackPlugin({ + include: "./dist", + authToken: process.env.SENTRY_AUTH_TOKEN, + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, +}); +``` + +### Removal of `configFile` option + +Previously, you could set the `configFile` option when initializing the plugin to point `sentry-cli` to its `.sentryclirc` config. Because `sentry-cli` is no longer part of the plugin, this is option was removed. +If you previously used this option, make sure to specify all required options when intializing the plugin (see [Initialization and Required Values](#initialization-and-required-values)). From 14bf6306d6e5eb298f3cf49cfe03bc0fb862cb2a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 25 Oct 2022 11:02:43 +0200 Subject: [PATCH 064/640] ref: Normalize user options (#69) --- .../{getReleaseName.ts => detect-release.ts} | 10 +- packages/bundler-plugin-core/src/index.ts | 62 +++----- .../src/options-mapping.ts | 132 ++++++++++++++++++ .../src/sentry/releasePipeline.ts | 72 ++++------ packages/bundler-plugin-core/src/types.ts | 2 +- .../test/getReleaseName.test.ts | 35 ++--- .../test/option-mappings.test.ts | 84 +++++++++++ .../bundler-plugin-core/types.tsconfig.json | 2 +- 8 files changed, 280 insertions(+), 119 deletions(-) rename packages/bundler-plugin-core/src/{getReleaseName.ts => detect-release.ts} (88%) create mode 100644 packages/bundler-plugin-core/src/options-mapping.ts create mode 100644 packages/bundler-plugin-core/test/option-mappings.test.ts diff --git a/packages/bundler-plugin-core/src/getReleaseName.ts b/packages/bundler-plugin-core/src/detect-release.ts similarity index 88% rename from packages/bundler-plugin-core/src/getReleaseName.ts rename to packages/bundler-plugin-core/src/detect-release.ts index 70bbfa07ff89..92671227b823 100644 --- a/packages/bundler-plugin-core/src/getReleaseName.ts +++ b/packages/bundler-plugin-core/src/detect-release.ts @@ -9,11 +9,7 @@ function getGitBranchHead(): string | undefined { } } -export function getReleaseName(releaseName?: string): string { - if (releaseName) { - return releaseName; - } - +export function detectRelease(): string { // Env var SENTRY_RELEASE takes presendace over other env vars listed below // this is why we are looking for it before proceeding with others if (process.env["SENTRY_RELEASE"]) { @@ -39,6 +35,8 @@ export function getReleaseName(releaseName?: string): string { if (gitBranchHead) { return gitBranchHead; } else { - throw new Error("Could not return a release name"); + throw new Error( + 'Could not automatically determine release name. Please provide a release identifier via the "release" option.' + ); } } diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 27525fa19c16..70633d28b02b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,6 +1,5 @@ import { createUnplugin } from "unplugin"; import MagicString from "magic-string"; -import { getReleaseName } from "./getReleaseName"; import { Options, BuildContext } from "./types"; import { createNewRelease, @@ -14,17 +13,7 @@ import "@sentry/tracing"; import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; import { createLogger } from "./sentry/logger"; - -const defaultOptions: Omit = { - //TODO: add default options here as we port over options from the webpack plugin - // validate: false - debug: false, - cleanArtifacts: false, - finalize: true, - url: "https://sentry.io", - ext: ["js", "map", "jsbundle", "bundle"], - telemetry: true, -}; +import { normalizeUserOptions } from "./options-mapping"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. // This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. @@ -83,36 +72,33 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `writeBundle` hook. * TODO: elaborate a bit on how sourcemaps upload works */ -const unplugin = createUnplugin((originalOptions, unpluginMetaContext) => { - const options = { ...defaultOptions, ...originalOptions }; - - //TODO: We can get rid of this variable once we have internal plugin options - const telemetryEnabled = options.telemetry === true; +const unplugin = createUnplugin((options, unpluginMetaContext) => { + const internalOptions = normalizeUserOptions(options); const { hub: sentryHub } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - telemetryEnabled, - options.org + internalOptions.telemetry, + internalOptions.org ); const logger = createLogger({ hub: sentryHub, prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, - silent: options.silent, + silent: internalOptions.silent, }); - if (telemetryEnabled) { + if (internalOptions.telemetry) { logger.info("Sending error and performance telemetry data to Sentry."); logger.info("To disable telemetry, set `options.telemetry` to `false`."); } sentryHub.setTags({ - organization: options.org, - project: options.project, + organization: internalOptions.org, + project: internalOptions.project, bundler: unpluginMetaContext.framework, }); - sentryHub.setUser({ id: options.org }); + sentryHub.setUser({ id: internalOptions.org }); // This is `nonEntrypointSet` instead of `entrypointSet` because this set is filled in the `resolveId` hook and there // we don't have guaranteed access to *absolute* paths of files if they're entrypoints. For non-entrypoints we're @@ -191,7 +177,7 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) }); if (id === RELEASE_INJECTOR_ID) { - return generateGlobalInjectorCode({ release: getReleaseName(options.release) }); + return generateGlobalInjectorCode({ release: internalOptions.release }); } else { return undefined; } @@ -211,17 +197,13 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) level: "info", }); - if (options.entries) { + if (internalOptions.entries) { // If there's an `entries` option transform (ie. inject the release varible) when the file path matches the option. - if (typeof options.entries === "function") { - return options.entries(id); + if (typeof internalOptions.entries === "function") { + return internalOptions.entries(id); } - const arrayifiedEntriesOption = Array.isArray(options.entries) - ? options.entries - : [options.entries]; - - return arrayifiedEntriesOption.some((entry) => { + return internalOptions.entries.some((entry) => { if (entry instanceof RegExp) { return entry.test(id); } else { @@ -282,8 +264,6 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) "Release pipeline" ); - const release = getReleaseName(options.release); - sentryHub.addBreadcrumb({ category: "writeBundle:start", level: "info", @@ -297,11 +277,11 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger }; - createNewRelease(release, options, ctx) - .then(() => cleanArtifacts(release, options, ctx)) - .then(() => uploadSourceMaps(release, options, ctx)) + createNewRelease(internalOptions, ctx) + .then(() => cleanArtifacts(internalOptions, ctx)) + .then(() => uploadSourceMaps(internalOptions, ctx)) .then(() => setCommits(ctx)) // this is a noop for now - .then(() => finalizeRelease(release, options, ctx)) + .then(() => finalizeRelease(internalOptions, ctx)) .then(() => addDeploy(ctx)) // this is a noop for now .then(() => { transaction?.setStatus("ok"); @@ -312,8 +292,8 @@ const unplugin = createUnplugin((originalOptions, unpluginMetaContext) logger.error(e.message); - if (options.errorHandler) { - options.errorHandler(e); + if (internalOptions.errorHandler) { + internalOptions.errorHandler(e); } else { throw e; } diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts new file mode 100644 index 000000000000..7fc098974b6f --- /dev/null +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -0,0 +1,132 @@ +import { detectRelease } from "./detect-release"; +import { IncludeEntry as UserIncludeEntry, Options as UserOptions } from "./types"; + +type RequiredInternalOptions = Required< + Pick< + UserOptions, + | "org" + | "project" + | "authToken" + | "url" + | "release" + | "finalize" + | "validate" + | "vcsRemote" + | "customHeaders" + | "dryRun" + | "debug" + | "silent" + | "cleanArtifacts" + | "telemetry" + > +>; + +type OptionalInternalOptions = Partial< + Pick +>; + +type NormalizedInternalOptions = { + entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; + include: InternalIncludeEntry[]; +}; + +export type InternalOptions = RequiredInternalOptions & + OptionalInternalOptions & + NormalizedInternalOptions; + +type RequiredInternalIncludeEntry = Required< + Pick +>; + +type OptionalInternalIncludeEntry = Partial< + Pick +>; + +type InternalIncludeEntry = RequiredInternalIncludeEntry & + OptionalInternalIncludeEntry & { + ignore: string[]; + }; + +export function normalizeUserOptions(userOptions: UserOptions): InternalOptions { + let entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; + if (userOptions.entries === undefined) { + entries = undefined; + } else if (typeof userOptions.entries === "function" || Array.isArray(userOptions.entries)) { + entries = userOptions.entries; + } else { + entries = [userOptions.entries]; + } + + let userInclude: UserIncludeEntry[]; + if (typeof userOptions.include === "string") { + userInclude = [convertIncludePathToIncludeEntry(userOptions.include)]; + } else if (Array.isArray(userOptions.include)) { + userInclude = userOptions.include.map((potentialIncludeEntry) => { + if (typeof potentialIncludeEntry === "string") { + return convertIncludePathToIncludeEntry(potentialIncludeEntry); + } else { + return potentialIncludeEntry; + } + }); + } else { + userInclude = [userOptions.include]; + } + + const include = userInclude.map((userIncludeEntry) => + normalizeIncludeEntry(userOptions, userIncludeEntry) + ); + + return { + org: userOptions.org, + project: userOptions.project, + authToken: userOptions.authToken, + url: userOptions.url ?? "https://sentry.io/", + release: userOptions.release ?? detectRelease(), + finalize: userOptions.finalize ?? true, + validate: userOptions.validate ?? false, + vcsRemote: userOptions.vcsRemote ?? "origin", + customHeaders: userOptions.customHeaders ?? {}, + dryRun: userOptions.dryRun ?? false, + debug: userOptions.debug ?? false, + silent: userOptions.silent ?? false, + cleanArtifacts: userOptions.cleanArtifacts ?? false, + telemetry: userOptions.telemetry ?? true, + dist: userOptions.dist, + errorHandler: userOptions.errorHandler, + setCommits: userOptions.setCommits, + deploy: userOptions.deploy, + entries, + include, + }; +} + +function convertIncludePathToIncludeEntry(includePath: string): UserIncludeEntry { + return { + paths: [includePath], + }; +} + +/** + * Besides array-ifying the `ignore` option, this function hoists top level options into the items of the `include` + * option. This is to simplify the handling of of the `include` items later on. + */ +function normalizeIncludeEntry( + userOptions: UserOptions, + includeEntry: UserIncludeEntry +): InternalIncludeEntry { + const ignoreOption = includeEntry.ignore ?? userOptions.ignore ?? []; + const ignore = Array.isArray(ignoreOption) ? ignoreOption : [ignoreOption]; + + return { + paths: includeEntry.paths, + ignore, + ignoreFile: includeEntry.ignoreFile ?? userOptions.ignoreFile, + ext: includeEntry.ext ?? userOptions.ext ?? ["js", "map", "jsbundle", "bundle"], + urlPrefix: includeEntry.urlPrefix ?? userOptions.urlPrefix, + urlSuffix: includeEntry.urlSuffix ?? userOptions.urlSuffix, + stripPrefix: includeEntry.stripPrefix ?? userOptions.stripPrefix, + stripCommonPrefix: includeEntry.stripCommonPrefix ?? userOptions.stripCommonPrefix ?? false, + sourceMapReference: includeEntry.sourceMapReference ?? userOptions.sourceMapReference ?? true, + rewrite: includeEntry.rewrite ?? userOptions.rewrite ?? true, + }; +} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 3643b0301a0b..cffe42502211 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -6,14 +6,14 @@ // - huge download // - unnecessary functionality -import { Options, BuildContext } from "../types"; +import { InternalOptions } from "../options-mapping"; +import { BuildContext } from "../types"; import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; -import { getFiles } from "./sourcemaps"; +import { getFiles, FileRecord } from "./sourcemaps"; import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease( - release: string, - options: Options, + options: InternalOptions, ctx: BuildContext ): Promise { const span = addSpanToTransaction(ctx, "function.plugin.create_release"); @@ -34,7 +34,7 @@ export async function createNewRelease( } await createRelease({ - release, + release: options.release, authToken: options.authToken, org: options.org, project: options.project, @@ -50,8 +50,7 @@ export async function createNewRelease( } export async function uploadSourceMaps( - release: string, - options: Options, + options: InternalOptions, ctx: BuildContext ): Promise { const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); @@ -70,56 +69,42 @@ export async function uploadSourceMaps( // - don't upload more than 20k files // - upload files concurrently // - 2 options: chunked upload (multiple files per chunk) or single file upload - const { - include, - ext, - // ignore, - // ignoreFile, - // rewrite, - // sourceMapReference, - // stripPrefix, - // stripCommonPrefix, - // validate, - // urlPrefix, - // urlSuffix, - org, - project, - authToken, - url, - } = options; // TODO: pull these checks out of here and simplify them - if (authToken === undefined) { + if (options.authToken === undefined) { ctx.logger.warn('Missing "authToken" option. Will not create release.'); return Promise.resolve("nothing to do here"); - } else if (org === undefined) { + } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not create release.'); return Promise.resolve("nothing to do here"); - } else if (url === undefined) { + } else if (options.url === undefined) { ctx.logger.warn('Missing "url" option. Will not create release.'); return Promise.resolve("nothing to do here"); - } else if (project === undefined) { + } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not create release.'); return Promise.resolve("nothing to do here"); } ctx.logger.info("Uploading Sourcemaps."); - //TODO: Remove this once we have internal options. this property must always be present - const fileExtensions = ext || []; - //TODO: handle include property properly and remove this def. wrong type cast - const files = getFiles(include as string, fileExtensions); + const files: FileRecord[] = []; + options.include.forEach((includeEntry) => { + includeEntry.paths.forEach((path) => { + //TODO: handle include property properly + files.push(...getFiles(path, includeEntry.ext)); + }); + }); ctx.logger.info(`Found ${files.length} files to upload.`); return Promise.all( files.map((file) => uploadReleaseFile({ - org, - project, - release, - authToken, - sentryUrl: url, + org: options.org, + project: options.project, + release: options.release, + authToken: options.authToken, + sentryUrl: options.url, filename: file.name, fileContent: file.content, sentryHub: ctx.hub, @@ -134,8 +119,7 @@ export async function uploadSourceMaps( } export async function finalizeRelease( - release: string, - options: Options, + options: InternalOptions, ctx: BuildContext ): Promise { const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); @@ -150,7 +134,7 @@ export async function finalizeRelease( await updateRelease({ authToken, org, - release, + release: options.release, sentryUrl: url, project, sentryHub: ctx.hub, @@ -164,11 +148,7 @@ export async function finalizeRelease( return Promise.resolve("nothing to do here"); } -export async function cleanArtifacts( - release: string, - options: Options, - ctx: BuildContext -): Promise { +export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); if (options.cleanArtifacts) { @@ -190,7 +170,7 @@ export async function cleanArtifacts( await deleteAllReleaseArtifacts({ authToken: options.authToken, org: options.org, - release, + release: options.release, sentryUrl: options.url, project: options.project, sentryHub: ctx.hub, diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 2481f7ce98ea..6954431607a4 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -183,7 +183,7 @@ export type Options = Omit & { telemetry?: boolean; }; -type IncludeEntry = { +export type IncludeEntry = { /** * One or more paths to scan for files to upload. */ diff --git a/packages/bundler-plugin-core/test/getReleaseName.test.ts b/packages/bundler-plugin-core/test/getReleaseName.test.ts index 6c04d5764d12..7dfa3f438b16 100644 --- a/packages/bundler-plugin-core/test/getReleaseName.test.ts +++ b/packages/bundler-plugin-core/test/getReleaseName.test.ts @@ -1,4 +1,4 @@ -import { getReleaseName } from "../src/getReleaseName"; +import { detectRelease } from "../src/detect-release"; import * as fs from "fs"; import * as child_process from "child_process"; jest.mock("fs"); @@ -28,54 +28,50 @@ describe("environmental getReleaseName", () => { const sha = "c3f235fc86f1c4007e3a218ec82d666586e73cbf"; (mockedChildProcess.execSync as jest.Mock).mockReturnValue(sha); - expect(getReleaseName()).toBe(sha); + expect(detectRelease()).toBe(sha); }); it("throws an error if no release information could be found", () => { (mockedFs.existsSync as jest.Mock).mockReturnValueOnce(false); - expect(getReleaseName).toThrow("Could not return a release name"); - }); - - it("adheres to user defined release name", () => { - const releaseName = "USER_DEFINED_this-is-my-custom-release"; - - expect(getReleaseName(releaseName)).toBe(releaseName); + expect(detectRelease).toThrow( + 'Could not automatically determine release name. Please provide a release identifier via the "release" option.' + ); }); it("adheres to process.env.SENTRY_RELEASE", () => { const releaseName = "SENTRY_RELEASE_string"; process.env["SENTRY_RELEASE"] = releaseName; - expect(getReleaseName()).toBe(releaseName); + expect(detectRelease()).toBe(releaseName); }); it("adheres to Heroku: process.env.SOURCE_VERSION", () => { const releaseName = "SOURCE_VERSION_string"; process.env["SOURCE_VERSION"] = releaseName; - expect(getReleaseName()).toBe(releaseName); + expect(detectRelease()).toBe(releaseName); }); it("adheres to Heroku: process.env.HEROKU_SLUG_COMMIT", () => { const releaseName = "HEROKU_SLUG_COMMIT_string"; process.env["HEROKU_SLUG_COMMIT"] = releaseName; - expect(getReleaseName()).toBe(releaseName); + expect(detectRelease()).toBe(releaseName); }); it("adheres to AWS: process.env.CODEBUILD_RESOLVED_SOURCE_VERSION", () => { const releaseName = "CODEBUILD_RESOLVED_SOURCE_VERSION_string"; process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] = releaseName; - expect(getReleaseName()).toBe(releaseName); + expect(detectRelease()).toBe(releaseName); }); it("adheres to Vercel: process.env.VERCEL_GIT_COMMIT_SHA", () => { const releaseName = "VERCEL_GIT_COMMIT_SHA_string"; process.env["VERCEL_GIT_COMMIT_SHA"] = releaseName; - expect(getReleaseName()).toBe(releaseName); + expect(detectRelease()).toBe(releaseName); }); it("allows SENTRY_RELEASE to take precedence over other env vars", () => { @@ -84,15 +80,6 @@ describe("environmental getReleaseName", () => { process.env["VERCEL_GIT_COMMIT_SHA"] = vercelReleaseName; process.env["SENTRY_RELEASE"] = sentryReleaseName; - expect(getReleaseName()).toBe(sentryReleaseName); - }); - - it("allows custom release name to take precedence over other env vars", () => { - const vercelReleaseName = "VERCEL_GIT_COMMIT_SHA_string"; - const sentryReleaseName = "SENTRY_RELEASE_string"; - process.env["VERCEL_GIT_COMMIT_SHA"] = vercelReleaseName; - process.env["SENTRY_RELEASE"] = sentryReleaseName; - - expect(getReleaseName("cutom_release_name")).toBe("cutom_release_name"); + expect(detectRelease()).toBe(sentryReleaseName); }); }); diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts new file mode 100644 index 000000000000..7c6f40cd1ebc --- /dev/null +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -0,0 +1,84 @@ +import { Options } from "../src"; +import { normalizeUserOptions } from "../src/options-mapping"; + +describe("normalizeUserOptions()", () => { + test("should return correct value for default input", () => { + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: "my-release", // we have to define this even though it is an optional value because of auto discovery + include: "./out", + }; + + expect(normalizeUserOptions(userOptions)).toEqual({ + authToken: "my-auth-token", + cleanArtifacts: false, + customHeaders: {}, + debug: false, + dryRun: false, + finalize: true, + include: [ + { + ext: ["js", "map", "jsbundle", "bundle"], + ignore: [], + paths: ["./out"], + rewrite: true, + sourceMapReference: true, + stripCommonPrefix: false, + }, + ], + org: "my-org", + project: "my-project", + release: "my-release", + silent: false, + telemetry: true, + url: "https://sentry.io/", + validate: false, + vcsRemote: "origin", + }); + }); + + test("should hoist top-level include options into include entries", () => { + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: "my-release", // we have to define this even though it is an optional value because of auto discovery + + // include options + include: [{ paths: ["./output", "./files"], ignore: ["./files"] }], + rewrite: true, + sourceMapReference: false, + stripCommonPrefix: true, + ext: ["js", "map", "foo"], + }; + + expect(normalizeUserOptions(userOptions)).toEqual({ + authToken: "my-auth-token", + cleanArtifacts: false, + customHeaders: {}, + debug: false, + dryRun: false, + finalize: true, + include: [ + { + ext: ["js", "map", "foo"], + ignore: ["./files"], + paths: ["./output", "./files"], + rewrite: true, + sourceMapReference: false, + stripCommonPrefix: true, + }, + ], + org: "my-org", + project: "my-project", + release: "my-release", + silent: false, + telemetry: true, + url: "https://sentry.io/", + validate: false, + vcsRemote: "origin", + }); + }); +}); diff --git a/packages/bundler-plugin-core/types.tsconfig.json b/packages/bundler-plugin-core/types.tsconfig.json index fb161bc4ab78..2d84052b318f 100644 --- a/packages/bundler-plugin-core/types.tsconfig.json +++ b/packages/bundler-plugin-core/types.tsconfig.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "./src/tsconfig.json", - "include": ["./src/**/*"], + "files": ["./src/index.ts"], "compilerOptions": { "rootDir": "./src", "declaration": true, From 17dbc506ef0551f8ac5589c93b247be62d369f98 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 27 Oct 2022 12:38:51 +0200 Subject: [PATCH 065/640] feat: Implement `paths` and `ext` options for `include` (#73) --- packages/bundler-plugin-core/package.json | 2 + .../src/options-mapping.ts | 2 +- .../bundler-plugin-core/src/sentry/api.ts | 2 +- .../src/sentry/releasePipeline.ts | 25 +++++- .../src/sentry/sourcemaps.ts | 80 +++++++++++++------ yarn.lock | 35 +++++--- 6 files changed, 106 insertions(+), 40 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 378e27e949ca..670ac71cc2e2 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -38,6 +38,7 @@ "@sentry/tracing": "^7.11.1", "axios": "^0.27.2", "form-data": "^4.0.0", + "glob": "8.0.3", "magic-string": "0.26.2", "unplugin": "0.10.1" }, @@ -54,6 +55,7 @@ "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", + "@types/glob": "8.0.0", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "eslint": "^8.18.0", diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 7fc098974b6f..039f23182571 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -42,7 +42,7 @@ type OptionalInternalIncludeEntry = Partial< Pick >; -type InternalIncludeEntry = RequiredInternalIncludeEntry & +export type InternalIncludeEntry = RequiredInternalIncludeEntry & OptionalInternalIncludeEntry & { ignore: string[]; }; diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index a9d57c40d5a4..11c551248cef 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -4,7 +4,7 @@ import FormData from "form-data"; import { Options } from "../types"; import { captureMinimalError } from "./telemetry"; -const API_PATH = "/api/0"; +const API_PATH = "api/0"; const USER_AGENT = `sentry-bundler-plugin/${__PACKAGE_VERSION__}`; const sentryApiAxiosInstance = ({ diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index cffe42502211..f1ef51d18f26 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -91,12 +91,35 @@ export async function uploadSourceMaps( options.include.forEach((includeEntry) => { includeEntry.paths.forEach((path) => { //TODO: handle include property properly - files.push(...getFiles(path, includeEntry.ext)); + files.push(...getFiles(path, includeEntry)); }); }); ctx.logger.info(`Found ${files.length} files to upload.`); + // Check if there would be duplicate artifacts and throw if there are any. + const duplicateArtifacts = new Set(); + const fileSet = new Set(); + files.forEach((file) => { + if (fileSet.has(file.name)) { + duplicateArtifacts.add(file.name); + } else { + fileSet.add(file.name); + } + }); + if (duplicateArtifacts.size > 0) { + const artifactsList: string[] = []; + duplicateArtifacts.forEach((artifact) => { + artifactsList.push(`- "${artifact}"`); + }); + ctx.logger.error( + `The following artifacts were identified more than once. Use the "urlPrefix" or "urlSuffix" options to tell them apart or adjust your "include" and "ignore" settings.\n${artifactsList.join( + "\n" + )}` + ); + throw new Error(); + } + return Promise.all( files.map((file) => uploadReleaseFile({ diff --git a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts index fc726019329f..2dd3de192dbb 100644 --- a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts +++ b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts @@ -1,38 +1,66 @@ import path from "path"; -import fs from "fs"; +import fs, { Stats } from "fs"; +import glob from "glob"; +import { InternalIncludeEntry } from "../options-mapping"; export type FileRecord = { name: string; content: string; }; -export function getFiles(path: string, allowedExtensions: string[]): FileRecord[] { - const includedFiles = getAllIncludedFileNames(path, allowedExtensions, []); +export function getFiles(fpath: string, includeEntry: InternalIncludeEntry): FileRecord[] { + let fileStat: Stats; + const p = path.isAbsolute(fpath) ? fpath : path.resolve(process.cwd(), fpath); + try { + fileStat = fs.statSync(p); + } catch (e) { + return []; + } - return includedFiles.map((filename) => { - const content = fs.readFileSync(filename, { encoding: "utf-8" }); - return { name: "~" + filename.replace(new RegExp(`^${path}`), ""), content }; + let files: { + absolutePath: string; + // Contains relative paths without leading `.` (e.g. "foo/bar.js" or "asdf\\a\\b.js.map") + relativePath: string; + }[]; + + if (fileStat.isFile()) { + files = [{ absolutePath: p, relativePath: path.basename(p) }]; + } else if (fileStat.isDirectory()) { + files = glob + .sync(path.join(p, "**"), { + nodir: true, + absolute: true, + }) + .map((globPath) => ({ absolutePath: globPath, relativePath: globPath.slice(p.length + 1) })); + } else { + return []; + } + + const dotPrefixedAllowedExtensions = includeEntry.ext.map( + (extension) => `.${extension.replace(/^\./, "")}` + ); + + const filteredFiles = files.filter(({ absolutePath }) => { + return dotPrefixedAllowedExtensions.includes(path.extname(absolutePath)); + }); + + // TODO ignore files + // TODO ignorefile + // TODO do sourcemap rewriting? + // TODO do sourcefile rewriting? (adding source map reference to bottom - search for "guess_sourcemap_reference") + + return filteredFiles.map(({ absolutePath, relativePath }) => { + const content = fs.readFileSync(absolutePath, { encoding: "utf-8" }); + return { + name: + (includeEntry.urlPrefix ?? "~/") + + convertWindowsPathToPosix(relativePath) + + (includeEntry.urlSuffix ?? ""), + content, + }; }); } -function getAllIncludedFileNames( - dirPath: string, - allowedExtensions: string[], - accFiles: string[] -): string[] { - const files = fs.readdirSync(dirPath); - - files - .map((file) => path.join(dirPath, "/", file)) - .forEach((file) => { - if (fs.statSync(file).isDirectory()) { - accFiles = accFiles.concat(getAllIncludedFileNames(file, allowedExtensions, accFiles)); - } else { - if (allowedExtensions.some((e) => file.endsWith(e))) { - accFiles.push(file); - } - } - }); - - return accFiles; +function convertWindowsPathToPosix(windowsPath: string): string { + return windowsPath.split(path.sep).join(path.posix.sep); } diff --git a/yarn.lock b/yarn.lock index e304efef8cb2..b65f1413f3ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2897,6 +2897,14 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/glob@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" + integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2953,6 +2961,11 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -6440,28 +6453,28 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@8.0.3, glob@^8.0.1: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.1.1" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" -glob@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^5.0.1" + minimatch "^3.1.1" once "^1.3.0" + path-is-absolute "^1.0.0" globals@^11.1.0: version "11.12.0" From a2506b0df0935307fecc324b043c9d8ebc936cf0 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 27 Oct 2022 13:05:48 +0200 Subject: [PATCH 066/640] ref: Clean up `include` logic (#74) --- .../src/options-mapping.ts | 6 ++++- .../src/sentry/releasePipeline.ts | 1 - .../src/sentry/sourcemaps.ts | 23 ++++++++++--------- .../test/option-mappings.test.ts | 7 +++--- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 039f23182571..f1bd6921d5dd 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -117,11 +117,15 @@ function normalizeIncludeEntry( const ignoreOption = includeEntry.ignore ?? userOptions.ignore ?? []; const ignore = Array.isArray(ignoreOption) ? ignoreOption : [ignoreOption]; + // We're prefixing all entries in the `ext` option with a `.` (if it isn't already) to align with Node.js' `path.extname()` + const ext = includeEntry.ext ?? userOptions.ext ?? ["js", "map", "jsbundle", "bundle"]; + const dotPrefixedExt = ext.map((extension) => `.${extension.replace(/^\./, "")}`); + return { paths: includeEntry.paths, ignore, ignoreFile: includeEntry.ignoreFile ?? userOptions.ignoreFile, - ext: includeEntry.ext ?? userOptions.ext ?? ["js", "map", "jsbundle", "bundle"], + ext: dotPrefixedExt, urlPrefix: includeEntry.urlPrefix ?? userOptions.urlPrefix, urlSuffix: includeEntry.urlSuffix ?? userOptions.urlSuffix, stripPrefix: includeEntry.stripPrefix ?? userOptions.stripPrefix, diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index f1ef51d18f26..7b4ad6d9a96d 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -90,7 +90,6 @@ export async function uploadSourceMaps( const files: FileRecord[] = []; options.include.forEach((includeEntry) => { includeEntry.paths.forEach((path) => { - //TODO: handle include property properly files.push(...getFiles(path, includeEntry)); }); }); diff --git a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts index 2dd3de192dbb..5c0e2b7d91a2 100644 --- a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts +++ b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts @@ -8,11 +8,13 @@ export type FileRecord = { content: string; }; -export function getFiles(fpath: string, includeEntry: InternalIncludeEntry): FileRecord[] { +export function getFiles(includePath: string, includeEntry: InternalIncludeEntry): FileRecord[] { let fileStat: Stats; - const p = path.isAbsolute(fpath) ? fpath : path.resolve(process.cwd(), fpath); + const absolutePath = path.isAbsolute(includePath) + ? includePath + : path.resolve(process.cwd(), includePath); try { - fileStat = fs.statSync(p); + fileStat = fs.statSync(absolutePath); } catch (e) { return []; } @@ -24,24 +26,23 @@ export function getFiles(fpath: string, includeEntry: InternalIncludeEntry): Fil }[]; if (fileStat.isFile()) { - files = [{ absolutePath: p, relativePath: path.basename(p) }]; + files = [{ absolutePath, relativePath: path.basename(absolutePath) }]; } else if (fileStat.isDirectory()) { files = glob - .sync(path.join(p, "**"), { + .sync(path.join(absolutePath, "**"), { nodir: true, absolute: true, }) - .map((globPath) => ({ absolutePath: globPath, relativePath: globPath.slice(p.length + 1) })); + .map((globPath) => ({ + absolutePath: globPath, + relativePath: globPath.slice(absolutePath.length + 1), + })); } else { return []; } - const dotPrefixedAllowedExtensions = includeEntry.ext.map( - (extension) => `.${extension.replace(/^\./, "")}` - ); - const filteredFiles = files.filter(({ absolutePath }) => { - return dotPrefixedAllowedExtensions.includes(path.extname(absolutePath)); + return includeEntry.ext.includes(path.extname(absolutePath)); }); // TODO ignore files diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 7c6f40cd1ebc..bc8c54f6b4db 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -20,7 +20,7 @@ describe("normalizeUserOptions()", () => { finalize: true, include: [ { - ext: ["js", "map", "jsbundle", "bundle"], + ext: [".js", ".map", ".jsbundle", ".bundle"], ignore: [], paths: ["./out"], rewrite: true, @@ -51,7 +51,8 @@ describe("normalizeUserOptions()", () => { rewrite: true, sourceMapReference: false, stripCommonPrefix: true, - ext: ["js", "map", "foo"], + // It is intentional that only foo has a `.`. We're expecting all extensions to be prefixed with a dot. + ext: ["js", "map", ".foo"], }; expect(normalizeUserOptions(userOptions)).toEqual({ @@ -63,7 +64,7 @@ describe("normalizeUserOptions()", () => { finalize: true, include: [ { - ext: ["js", "map", "foo"], + ext: [".js", ".map", ".foo"], ignore: ["./files"], paths: ["./output", "./files"], rewrite: true, From 1e01cfe5b03f39c7f5592de0708b4d13b81c9564 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 27 Oct 2022 15:17:15 +0200 Subject: [PATCH 067/640] meta: Update MIGRATION.md with globbing deprecation (#76) --- MIGRATION.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index f2b6a696277e..81d0ec6896fb 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -4,15 +4,21 @@ This document serves as a migration guide, documenting all breaking changes betw ## [Unreleased] Upgrading from 1.x to 2.x -Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1. Version 2 no longer requires `sentry-cli` underneath, meaning the plugin no longer downloads a binary but implements all its functionality natively. +Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1. +Version 2 no longer requires `sentry-cli` underneath, meaning the plugin no longer downloads a binary but implements all its functionality natively. ### Removal of Implicit Environment Variable Usage -Version 2 of the Webpack plugin removes the implicit passing of plugin parameters via environment variables. Previously, it was possible to specify values as environment variables, such as SENTRY_AUTH_TOKEN, but to never mention them in the plugin init options. In this version, you'll have to specify these values in the options. Note that this makes certain option fields explicitly required now which were previously only implicitly required (see [Initialization and Required Values](#initialization-and-required-values)). +Version 2 of the Webpack plugin removes the implicit passing of plugin parameters via environment variables. +Previously, it was possible to specify values as environment variables, such as SENTRY_AUTH_TOKEN, but to never mention them in the plugin init options. +In this version, you'll have to specify these values in the options. +Note that this makes certain option fields explicitly required now which were previously only implicitly required (see [Initialization and Required Values](#initialization-and-required-values)). ### Initialization and Required Values -Previously, to use the plugin, you had to create a new class of the `SentryCLIPlugin` class. In version 2, you simply need to call a function and pass the initialization options to it. Note that in this new version, more options are now explicitly required. Here's an example: +Previously, to use the plugin, you had to create a new class of the `SentryCLIPlugin` class. +In version 2, you simply need to call a function and pass the initialization options to it. +Note that in this new version, more options are now explicitly required. Here's an example: ```js // old config + environment variables were set for authToken, org and project @@ -31,5 +37,14 @@ sentryWebpackPlugin({ ### Removal of `configFile` option -Previously, you could set the `configFile` option when initializing the plugin to point `sentry-cli` to its `.sentryclirc` config. Because `sentry-cli` is no longer part of the plugin, this is option was removed. +Previously, you could set the `configFile` option when initializing the plugin to point `sentry-cli` to its `.sentryclirc` config. +Because `sentry-cli` is no longer part of the plugin, this is option was removed. If you previously used this option, make sure to specify all required options when intializing the plugin (see [Initialization and Required Values](#initialization-and-required-values)). + +### Removal of globbing + +Previously it was possible to glob for files to include in the sourcemap upload (e.g. `include: "./my-build-dir/**"`). +In version 2 we removed this functionality because it lead to intransparent naming of release artifacts. + +Going forward, if you need similar functionality, we recommend providing folder paths in the `include` and `include.paths` options and narrowing down the matched files with the `ignore`, `ignoreFile` or `ext` options. +The `ignore` and `ignoreFile` options will still allow globbing patterns. From d8c4468b9563ae34687ce5e4590e1f84d19b0fef Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 27 Oct 2022 17:41:15 +0200 Subject: [PATCH 068/640] test(e2e): Add E2E tests (#75) This PR adds basic E2E or Snapshot tests to our repo in a dedicated package. The high-level idea is to add a set of input JS files, a plugin config and a set of reference files per test scenario. For a more detailed explanation, take a look at the README file. In addition, it adds one test scenario which tests a very basic sourcemaps upload configuration. Here's what these tests do: Per test scenario, per bundler: 1. Delete the release from Sentry.io (sentry-sdks org) if it is already present 2. Bundle the input files and run the Sentry Bundler Plugin which uploads the files to Sentry 3. Download the release from Sentry 4. Compare downloaded files against reference files. They must match exactly for the test to pass. As of right now, it is arguable if these tests should have their own package or be in the integration-tests package. I opted for the former because there are subtle differences and if we chose to improve them (e.g. do the Verdaccio approach from the JS SDK or add recipes) the structure and components will differ more. --- .prettierignore | 1 + packages/e2e-tests/.env.example | 1 + packages/e2e-tests/.eslintrc.js | 29 ++++ packages/e2e-tests/.gitignore | 3 + packages/e2e-tests/README.md | 20 +++ packages/e2e-tests/jest.config.js | 6 + packages/e2e-tests/package.json | 42 ++++++ .../basic-upload/basic-upload.test.ts | 14 ++ .../scenarios/basic-upload/config.ts | 13 ++ .../scenarios/basic-upload/input/fib.js | 9 ++ .../scenarios/basic-upload/input/index.js | 6 + .../basic-upload/ref/esbuild/~/index.js | 2 + .../basic-upload/ref/esbuild/~/index.js.map | 1 + .../basic-upload/ref/rollup/~/index.js | 29 ++++ .../basic-upload/ref/rollup/~/index.js.map | 1 + .../basic-upload/ref/vite/~/index.js | 2 + .../basic-upload/ref/vite/~/index.js.map | 1 + .../basic-upload/ref/webpack4/~/index.js | 2 + .../basic-upload/ref/webpack4/~/index.js.map | 1 + .../basic-upload/ref/webpack5/~/index.js | 2 + .../basic-upload/ref/webpack5/~/index.js.map | 1 + .../e2e-tests/scenarios/basic-upload/setup.ts | 16 +++ .../e2e-tests/scripts/run-scenario-setups.ts | 10 ++ packages/e2e-tests/tsconfig.json | 9 ++ packages/e2e-tests/utils/bundlers.ts | 1 + .../e2e-tests/utils/create-cjs-bundles.ts | 133 ++++++++++++++++++ packages/e2e-tests/utils/releases.ts | 83 +++++++++++ packages/e2e-tests/utils/sentry-api.ts | 39 +++++ yarn.lock | 27 ++-- 29 files changed, 494 insertions(+), 10 deletions(-) create mode 100644 .prettierignore create mode 100644 packages/e2e-tests/.env.example create mode 100644 packages/e2e-tests/.eslintrc.js create mode 100644 packages/e2e-tests/.gitignore create mode 100644 packages/e2e-tests/README.md create mode 100644 packages/e2e-tests/jest.config.js create mode 100644 packages/e2e-tests/package.json create mode 100644 packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts create mode 100644 packages/e2e-tests/scenarios/basic-upload/config.ts create mode 100644 packages/e2e-tests/scenarios/basic-upload/input/fib.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/input/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js create mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map create mode 100644 packages/e2e-tests/scenarios/basic-upload/setup.ts create mode 100644 packages/e2e-tests/scripts/run-scenario-setups.ts create mode 100644 packages/e2e-tests/tsconfig.json create mode 100644 packages/e2e-tests/utils/bundlers.ts create mode 100644 packages/e2e-tests/utils/create-cjs-bundles.ts create mode 100644 packages/e2e-tests/utils/releases.ts create mode 100644 packages/e2e-tests/utils/sentry-api.ts diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000000..218659e6dd46 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +packages/e2e-tests/scenarios/*/ref/**/* \ No newline at end of file diff --git a/packages/e2e-tests/.env.example b/packages/e2e-tests/.env.example new file mode 100644 index 000000000000..98608208d085 --- /dev/null +++ b/packages/e2e-tests/.env.example @@ -0,0 +1 @@ +SENTRY_AUTH_TOKEN= \ No newline at end of file diff --git a/packages/e2e-tests/.eslintrc.js b/packages/e2e-tests/.eslintrc.js new file mode 100644 index 000000000000..2140ab1856eb --- /dev/null +++ b/packages/e2e-tests/.eslintrc.js @@ -0,0 +1,29 @@ +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", + ], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, + rules: { + "no-console": "off", + }, +}; diff --git a/packages/e2e-tests/.gitignore b/packages/e2e-tests/.gitignore new file mode 100644 index 000000000000..bacbd86e6069 --- /dev/null +++ b/packages/e2e-tests/.gitignore @@ -0,0 +1,3 @@ +**/out +!scenarios/*/ref/** +.env \ No newline at end of file diff --git a/packages/e2e-tests/README.md b/packages/e2e-tests/README.md new file mode 100644 index 000000000000..5e5e921450c5 --- /dev/null +++ b/packages/e2e-tests/README.md @@ -0,0 +1,20 @@ +# 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. +Generally, the `*.test.ts` files can then use anything that is generated via `setup.ts`. + +## Snapshot Test Structure + +For snapshot tests where files uploaded to Sentry are cpompared with local reference files, it's recommended to stick to the following structure inside a scenario folder: + +- `input` contains the JS input files. These will be bundled by all bundlers defined in `utils/bundlers.ts`. +- `ref` contains the reference files. All files that are uploaded to Sentry for one release must be present in this folder, in the same structure as the uploaded filename contains (e.g. `~/index.js`). Because generated JS and source maps look entirely different per bundler, reference files must be specified separately for each bundler. +- `config.ts` contains the bundler plugin config that is used to + 1. Delete a release from Sentry with the given `release` property + 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. + +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/jest.config.js b/packages/e2e-tests/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/e2e-tests/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json new file mode 100644 index 000000000000..4d4636d3be67 --- /dev/null +++ b/packages/e2e-tests/package.json @@ -0,0 +1,42 @@ +{ + "name": "@sentry-internal/bundler-plugin-e2e-tests", + "version": "0.0.1-alpha.0", + "license": "MIT", + "private": true, + "scripts": { + "test:e2e": "run-s test:setup test:jest", + "test:setup": "ts-node scripts/run-scenario-setups.ts", + "test:jest": "jest", + "check:types": "tsc --project ./tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./scenarios/*/out", + "clean:deps": "rimraf node_modules", + "lint": "eslint ." + }, + "dependencies": { + "@sentry/vite-plugin": "0.0.1-alpha.0", + "@sentry/rollup-plugin": "0.0.1-alpha.0", + "@sentry/esbuild-plugin": "0.0.1-alpha.0", + "@sentry/webpack-plugin": "0.0.1-alpha.0", + "axios": "^1.1.3" + }, + "devDependencies": { + "@sentry-internal/eslint-config": "0.0.1-alpha.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@swc/jest": "^0.2.21", + "@types/glob": "8.0.0", + "@types/jest": "^28.1.3", + "@types/webpack4": "npm:@types/webpack@4.41.32", + "@types/axios": "^0.14.0", + "esbuild": "0.14.49", + "eslint": "^8.18.0", + "glob": "8.0.3", + "jest": "^28.1.3", + "rollup": "2.77.0", + "ts-node": "^10.9.1", + "vite": "3.0.0", + "webpack": "5.74.0", + "webpack4": "npm:webpack@4.46.0" + } +} diff --git a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts new file mode 100644 index 000000000000..ab7918c6ff88 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts @@ -0,0 +1,14 @@ +import { pluginConfig } from "./config"; +import { BUNDLERS } from "../../utils/bundlers"; +import { getReferenceFiles, getSentryReleaseFiles } from "../../utils/releases"; + +describe("Simple Sourcemaps Upload (one string include + default options)", () => { + it.each(BUNDLERS)("uploads the correct files using %s", async (bundler) => { + const release = `${pluginConfig.release || ""}-${bundler}`; + + const sentryFiles = await getSentryReleaseFiles(release); + const refFiles = getReferenceFiles(bundler, __dirname); + + expect(sentryFiles).toMatchObject(refFiles); + }); +}); diff --git a/packages/e2e-tests/scenarios/basic-upload/config.ts b/packages/e2e-tests/scenarios/basic-upload/config.ts new file mode 100644 index 000000000000..b828c9a1d709 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/config.ts @@ -0,0 +1,13 @@ +import { Options } from "@sentry/bundler-plugin-core"; +import * as path from "path"; + +/** + * The Sentry bundler plugin config object used for this test + */ +export const pluginConfig: Options = { + release: "basic-upload", + include: path.resolve(__dirname, "./out"), + authToken: process.env["SENTRY_AUTH_TOKEN"] || "", + org: "sentry-sdks", + project: "js-bundler-plugin-e2e-tests", +}; diff --git a/packages/e2e-tests/scenarios/basic-upload/input/fib.js b/packages/e2e-tests/scenarios/basic-upload/input/fib.js new file mode 100644 index 000000000000..a6da581e758e --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/input/fib.js @@ -0,0 +1,9 @@ +export const fibonacci = (n) => { + if (n === 3) { + throw new Error("I'm an uncaught error"); + } + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); +}; diff --git a/packages/e2e-tests/scenarios/basic-upload/input/index.js b/packages/e2e-tests/scenarios/basic-upload/input/index.js new file mode 100644 index 000000000000..8159534a46a4 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/input/index.js @@ -0,0 +1,6 @@ +import { fibonacci } from "./fib"; +console.log("Hi, I'm a very simple app"); + +fibonacci(10); + +console.log("I'm done"); diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js new file mode 100644 index 000000000000..7485db947d25 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js @@ -0,0 +1,2 @@ +"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"); +//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map new file mode 100644 index 000000000000..300618e83fbc --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["sentry-plugin:\u0000sentry-release-injector","../../input/fib.js","../../input/index.js"],"sourcesContent":["\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-esbuild\"};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"mappings":"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU","names":[]} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js new file mode 100644 index 000000000000..b77c543a0de8 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js @@ -0,0 +1,29 @@ +'use strict'; + +var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:"basic-upload-rollup"}; + +const fibonacci = (n) => { + if (n === 3) { + throw new Error("I'm an uncaught error"); + } + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); +}; + +console.log("Hi, I'm a very simple app"); + +fibonacci(10); + +console.log("I'm done"); +//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map new file mode 100644 index 000000000000..a9db562a8d34 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA;;"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js new file mode 100644 index 000000000000..4438a4b33d4a --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js @@ -0,0 +1,2 @@ +"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"); +//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map new file mode 100644 index 000000000000..f579e392b316 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":["fibonacci","n"],"mappings":"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js new file mode 100644 index 000000000000..9066db4c3cbb --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js @@ -0,0 +1,2 @@ +!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 \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map new file mode 100644 index 000000000000..04f5cb9a429d --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./_virtual_%00sentry-release-injector","webpack:///./scenarios/basic-upload/input/fib.js","webpack:///./scenarios/basic-upload/input/index.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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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","file":"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","\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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js new file mode 100644 index 000000000000..05d1a48b700e --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js @@ -0,0 +1,2 @@ +(()=>{var e={434:(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(434);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})})(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map new file mode 100644 index 000000000000..58a23cf4f0ec --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","mappings":"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W","sources":["webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js"],"sourcesContent":["\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-webpack5\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":["window","g","self","SENTRY_RELEASE","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","globalThis","this","Function","e","r","Symbol","toStringTag","Object","defineProperty","value","fibonacci","n","Error","console","log"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/setup.ts b/packages/e2e-tests/scenarios/basic-upload/setup.ts new file mode 100644 index 000000000000..34cbb317ed02 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/setup.ts @@ -0,0 +1,16 @@ +import * as path from "path"; + +import { pluginConfig } from "./config"; +import { deleteAllReleases } from "../../utils/releases"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +deleteAllReleases(pluginConfig.release || "") + .then(() => { + const entryPointPath = path.resolve(__dirname, "./input/index.js"); + const outputDir = path.resolve(__dirname, "./out"); + + createCjsBundles({ index: entryPointPath }, outputDir, pluginConfig); + }) + .catch(() => { + console.error("Could not delete release!"); + }); diff --git a/packages/e2e-tests/scripts/run-scenario-setups.ts b/packages/e2e-tests/scripts/run-scenario-setups.ts new file mode 100644 index 000000000000..8bd7ff049308 --- /dev/null +++ b/packages/e2e-tests/scripts/run-scenario-setups.ts @@ -0,0 +1,10 @@ +import fs from "fs"; +import path from "path"; + +const scenarioPaths = fs + .readdirSync(path.join(__dirname, "../scenarios")) + .map((fixtureDir) => path.join(__dirname, "../scenarios", fixtureDir)); + +scenarioPaths.forEach((fixturePath) => { + require(path.join(fixturePath, "setup.ts")); +}); diff --git a/packages/e2e-tests/tsconfig.json b/packages/e2e-tests/tsconfig.json new file mode 100644 index 000000000000..79bc94be3707 --- /dev/null +++ b/packages/e2e-tests/tsconfig.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "include": ["./**/*"], + "compilerOptions": { + "esModuleInterop": true, + "types": ["node", "jest"] + } +} diff --git a/packages/e2e-tests/utils/bundlers.ts b/packages/e2e-tests/utils/bundlers.ts new file mode 100644 index 000000000000..358ebbb13c33 --- /dev/null +++ b/packages/e2e-tests/utils/bundlers.ts @@ -0,0 +1 @@ +export const BUNDLERS = ["rollup", "vite", "esbuild", "webpack4", "webpack5"]; diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts new file mode 100644 index 000000000000..d1c20f3fe4c2 --- /dev/null +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -0,0 +1,133 @@ +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 "webpack"; +import * as esbuild from "esbuild"; + +import sentryVitePlugin, { Options } from "@sentry/vite-plugin"; +import sentryWebpackPlugin from "@sentry/webpack-plugin"; +import sentryEsbuildPlugin from "@sentry/esbuild-plugin"; +import sentryRollupPlugin from "@sentry/rollup-plugin"; + +export function createCjsBundles( + entrypoints: { [name: string]: string }, + outFolder: string, + sentryUnpluginOptions: Options +): void { + if (!sentryUnpluginOptions.release) { + console.error("Config has no release set, aborting"); + return; + } + + void vite.build({ + clearScreen: false, + build: { + sourcemap: true, + outDir: path.join(outFolder, "vite"), + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [ + sentryVitePlugin({ + ...sentryUnpluginOptions, + release: `${sentryUnpluginOptions.release}-vite`, + include: `${sentryUnpluginOptions.include as string}/vite`, + }), + ], + }); + + void rollup + .rollup({ + input: entrypoints, + plugins: [ + sentryRollupPlugin({ + ...sentryUnpluginOptions, + release: `${sentryUnpluginOptions.release}-rollup`, + include: `${sentryUnpluginOptions.include as string}/rollup`, + }), + ], + }) + .then((bundle) => + bundle.write({ + sourcemap: true, + dir: path.join(outFolder, "rollup"), + format: "cjs", + exports: "named", + }) + ); + + void esbuild.build({ + entryPoints: entrypoints, + outdir: path.join(outFolder, "esbuild"), + sourcemap: true, + plugins: [ + sentryEsbuildPlugin({ + ...sentryUnpluginOptions, + release: `${sentryUnpluginOptions.release}-esbuild`, + include: `${sentryUnpluginOptions.include as string}/esbuild`, + }), + ], + minify: true, + bundle: true, + 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({ + ...sentryUnpluginOptions, + release: `${sentryUnpluginOptions.release}-webpack4`, + include: `${sentryUnpluginOptions.include as string}/webpack4`, + }), + ], + }, + (err) => { + if (err) { + throw err; + } + } + ); + + webpack5( + { + devtool: "source-map", + cache: false, + entry: entrypoints, + output: { + path: path.join(outFolder, "webpack5"), + library: { + type: "commonjs", + }, + }, + mode: "production", + plugins: [ + sentryWebpackPlugin({ + ...sentryUnpluginOptions, + release: `${sentryUnpluginOptions.release}-webpack5`, + include: `${sentryUnpluginOptions.include as string}/webpack5`, + }), + ], + }, + (err) => { + if (err) { + throw err; + } + } + ); +} diff --git a/packages/e2e-tests/utils/releases.ts b/packages/e2e-tests/utils/releases.ts new file mode 100644 index 000000000000..d3c673939270 --- /dev/null +++ b/packages/e2e-tests/utils/releases.ts @@ -0,0 +1,83 @@ +import { AxiosError } from "axios"; +import { BUNDLERS } from "./bundlers"; +import { + deleteReleaseFromSentry, + getReleaseFileFromSentry, + getReleaseFilesFromSentry, +} from "./sentry-api"; + +import fs from "fs"; +import path from "path"; +import glob from "glob"; + +type ReleaseFilesData = { + id: string; + name: string; + dist?: string; + headers: Record; + size: number; + sha1: string; + dateCreated: string; +}; + +type ReleaseFile = { + name: string; + content: string; +}; + +export function deleteAllReleases(release: string) { + return Promise.all( + BUNDLERS.map(async (bundler) => { + const bundlerRelease = `${release}-${bundler}`; + try { + const response = await deleteReleaseFromSentry(bundlerRelease); + return response; + } catch (e) { + if ((e as AxiosError).response?.status === 404) { + return Promise.resolve(); + } + throw e; + } + }) + ); +} + +export async function getSentryReleaseFiles(release: string): Promise { + const releaseFileEntries = await getReleaseFiles(release); + + const releaseFiles: ReleaseFile[] = await Promise.all( + releaseFileEntries.map((entry) => getReleaseFile(release, entry)) + ); + return releaseFiles; +} + +export function getReferenceFiles(bundler: string, testDirecory: string): ReleaseFile[] { + const refFilePath = path.resolve(testDirecory, "ref", bundler); + const files = glob.sync(path.join(refFilePath, "**"), { + nodir: true, + absolute: true, + }); + return files.map((file) => { + return { + name: path.relative(refFilePath, file), + content: fs.readFileSync(file).toString(), + }; + }); +} + +async function getReleaseFiles(release: string): Promise { + const response = await getReleaseFilesFromSentry(release); + return response.data as ReleaseFilesData[]; +} + +async function getReleaseFile(release: string, fileEntry: ReleaseFilesData): Promise { + const response = await getReleaseFileFromSentry(release, fileEntry.id); + const data = response.data as ReleaseFile; + + return { + name: fileEntry.name, + // source maps are JSON and therefore, axios returns them as an object + // We want them as a string, though, so we convert it + content: typeof data === "object" ? JSON.stringify(data) : data, + }; +} diff --git a/packages/e2e-tests/utils/sentry-api.ts b/packages/e2e-tests/utils/sentry-api.ts new file mode 100644 index 000000000000..c275b0fa88fa --- /dev/null +++ b/packages/e2e-tests/utils/sentry-api.ts @@ -0,0 +1,39 @@ +import axios from "axios"; + +const AUTH_TOKEN = process.env["SENTRY_AUTH_TOKEN"] || ""; +const SENTRY_TEST_ORG_SLUG = "sentry-sdks"; +const SENTRY_TEST_PROJECT = "js-bundler-plugin-e2e-tests"; + +/** + * Sends a request to the Sentry API to GET all release files of a given release name + */ +export async function getReleaseFilesFromSentry(release: string) { + return axios.get( + `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/files/`, + { headers: getSentryApiHeaders() } + ); +} + +/** + * Sends a request to the Sentry API to GET a specific release file of a given release name and fileId + */ +export async function getReleaseFileFromSentry(release: string, fileId: string) { + return axios.get( + `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/files/${fileId}/?download=1`, + { headers: getSentryApiHeaders() } + ); +} + +/** + * Sends a request to the Sentry API to DELETE a specific release for a given release name + */ +export async function deleteReleaseFromSentry(release: string) { + return axios.delete( + `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/`, + { headers: getSentryApiHeaders() } + ); +} + +function getSentryApiHeaders() { + return { Authorization: `Bearer ${AUTH_TOKEN}` }; +} diff --git a/yarn.lock b/yarn.lock index b65f1413f3ff..18ee774672e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2799,6 +2799,13 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@types/axios@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" + integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== + dependencies: + axios "*" + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -2897,7 +2904,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@^8.0.0": +"@types/glob@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== @@ -3795,15 +3802,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -axios@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== - dependencies: - follow-redirects "^1.14.9" - form-data "^4.0.0" - -axios@^1.0.0: +axios@*, axios@^1.0.0, axios@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== @@ -3812,6 +3811,14 @@ axios@^1.0.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" From b89bcc634435c106a63ea3fd7a7acb0adabe2807 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 28 Oct 2022 11:51:22 +0200 Subject: [PATCH 069/640] test(CI): Add E2E and split test jobs (#77) Split up our tests in CI and adds an E2E test job. We now have three jobs for testing: * Unit tests * Integration tests * E2E tests New testing commands for yarn: * `yarn test` * top level: executes all tests **except** for E2E tests * package level: executes the tests of the package (also in E2E tests package) * `yarn test:all` * top level: executes all tests, **including** E2E tests * package level: N/A In the future we might want to look into build caching to leverage nx' cache capabilities but for now, I'll work on more pressing stuff. --- .github/workflows/checks.yml | 32 +++++++++++++++++++++++++++++--- nx.json | 3 ++- package.json | 6 +++++- packages/e2e-tests/package.json | 2 +- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index dee7a2c211a5..02c133baef80 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -46,9 +46,9 @@ jobs: - run: yarn --frozen-lockfile - run: yarn check:formatting - test: + test-unit: needs: build - name: Tests + name: Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -56,7 +56,33 @@ jobs: with: node-version: ${{ env.DEFAULT_NODE_VERSION }} - run: yarn --frozen-lockfile - - run: yarn test + - run: yarn test:unit + + test-integration: + needs: build + name: Integration Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn test:integration + + test-e2e: + needs: build + name: E2E Tests + runs-on: ubuntu-latest + env: + SENTRY_AUTH_TOKEN: ${{ secrets.E2E_TESTS_SENTRY_AUTH_TOKEN }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.DEFAULT_NODE_VERSION }} + - run: yarn --frozen-lockfile + - run: yarn test:e2e lint: needs: build diff --git a/nx.json b/nx.json index a7836ba51dd0..a8d43f5c31f6 100644 --- a/nx.json +++ b/nx.json @@ -8,7 +8,8 @@ "default": { "runner": "nx/tasks-runners/default", "options": { - "cacheableOperations": ["build", "lint", "test"] + "cacheableOperations": ["build", "lint", "test"], + "parallel": 10 } } }, diff --git a/package.json b/package.json index 3be276d6f921..b5e66f49a010 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,11 @@ "check:types": "nx run-many --target=check:types --all", "clean": "nx run-many --target=clean --all", "clean:all": "nx run-many --target=clean:all --all && yarn", - "test": "nx run-many --target=test --all", + "test": "nx run-many --target=test --all --exclude=@sentry-internal/bundler-plugin-e2e-tests", + "test:all": "nx run-many --target=test --all", + "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/bundler-plugin-e2e-tests", + "test:integration": "nx run @sentry-internal/integration-tests:test", + "test:e2e": "nx run @sentry-internal/bundler-plugin-e2e-tests:test", "lint": "nx run-many --target=lint --all", "check:formatting": "prettier --check .", "fix:formatting": "prettier --write .", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4d4636d3be67..7a21d4b63c37 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -4,7 +4,7 @@ "license": "MIT", "private": true, "scripts": { - "test:e2e": "run-s test:setup test:jest", + "test": "run-s test:setup test:jest", "test:setup": "ts-node scripts/run-scenario-setups.ts", "test:jest": "jest", "check:types": "tsc --project ./tsconfig.json --noEmit", From b5eb585e8b67e0e54778859a8d3971f4cc0d3b07 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 31 Oct 2022 10:50:32 +0100 Subject: [PATCH 070/640] chore(ci): Only upload artifacts on release branches (#78) --- .github/workflows/checks.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 02c133baef80..6e18bbd0ee6e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -101,8 +101,7 @@ jobs: name: Upload Artifacts runs-on: ubuntu-latest # Build artifacts are only needed for releasing workflow. - # TODO comment back in - # if: startsWith(github.ref, 'refs/heads/release/') + if: startsWith(github.ref, 'refs/heads/release/') steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 From 17b4f9a4aba46859dcb8823c3510d9e3b9f1c4f0 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 31 Oct 2022 11:01:19 +0100 Subject: [PATCH 071/640] feat(core): Add `ignore` option (#79) Add the `ignore` option implementation to the plugin core. We're using `glob` for recursively searching for files which, as luck would have it, also supports an `ignore` option (h/t @lforst for finding this out). We don't have to do a lot to get it working properly other than converting the ignore entries from our users to absolute paths. I tried passing on relative paths but it wouldn't work as expected when trying to replicate how users (and our [documentation](https://github.com/getsentry/sentry-webpack-plugin#optionsinclude)) [use the `ignore` option](https://cs.github.com/?scopeName=All+repos&scope=&q=%22new+sentrycliplugin%28%22+ignore). --- packages/bundler-plugin-core/src/options-mapping.ts | 2 +- packages/bundler-plugin-core/src/sentry/sourcemaps.ts | 5 +++++ packages/bundler-plugin-core/test/option-mappings.test.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index f1bd6921d5dd..d61bd0e02b0c 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -114,7 +114,7 @@ function normalizeIncludeEntry( userOptions: UserOptions, includeEntry: UserIncludeEntry ): InternalIncludeEntry { - const ignoreOption = includeEntry.ignore ?? userOptions.ignore ?? []; + const ignoreOption = includeEntry.ignore ?? userOptions.ignore ?? ["node_modules"]; const ignore = Array.isArray(ignoreOption) ? ignoreOption : [ignoreOption]; // We're prefixing all entries in the `ext` option with a `.` (if it isn't already) to align with Node.js' `path.extname()` diff --git a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts index 5c0e2b7d91a2..87de8ab4cda6 100644 --- a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts +++ b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts @@ -28,10 +28,15 @@ export function getFiles(includePath: string, includeEntry: InternalIncludeEntry if (fileStat.isFile()) { files = [{ absolutePath, relativePath: path.basename(absolutePath) }]; } else if (fileStat.isDirectory()) { + const absoluteIgnores = includeEntry.ignore.map((ignoreEntry) => + path.join(process.cwd(), ignoreEntry) + ); + files = glob .sync(path.join(absolutePath, "**"), { nodir: true, absolute: true, + ignore: absoluteIgnores, }) .map((globPath) => ({ absolutePath: globPath, diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index bc8c54f6b4db..100e9970d87a 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -21,7 +21,7 @@ describe("normalizeUserOptions()", () => { include: [ { ext: [".js", ".map", ".jsbundle", ".bundle"], - ignore: [], + ignore: ["node_modules"], paths: ["./out"], rewrite: true, sourceMapReference: true, From db04eb5a636c6b97095c09309c03c01f582439e0 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 2 Nov 2022 11:51:19 +0100 Subject: [PATCH 072/640] feat(core): Add `ignoreFile` option (#80) Implement the `ignoreFile` option and rewrite the `ignore` option behaviour. Previously, we used `glob`'s `ignore` option to pass an array of ignore rules to the library. This meant we'd get back a set of filtered files where ignore rules were already applied. However, `glob` does not support negated ignore rules, meaning ignore patterns like "ignore everything except file x" wouldn't work. With this change, we introduce a new library to the project: [ignore](https://www.npmjs.com/package/ignore). It lets us add rules to a rule checker (regardless of if these rules come from a file or an array). We now first collect all files with `glob` and subsequently filter out the ones that are ignored by the specified ignore rules. This rule checker supports all rules as specified in `.gitignore` specs. Therefore, it also supports negated ignore rules. --- packages/bundler-plugin-core/package.json | 1 + .../src/sentry/sourcemaps.ts | 96 ++++++++++++------- packages/playground/.sentryignore | 5 + .../playground/vite.config.smallNodeApp.js | 12 ++- 4 files changed, 77 insertions(+), 37 deletions(-) create mode 100644 packages/playground/.sentryignore diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 670ac71cc2e2..b78125439b12 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -39,6 +39,7 @@ "axios": "^0.27.2", "form-data": "^4.0.0", "glob": "8.0.3", + "ignore": "^5.2.0", "magic-string": "0.26.2", "unplugin": "0.10.1" }, diff --git a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts index 87de8ab4cda6..07f02b8c383c 100644 --- a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts +++ b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts @@ -3,13 +3,55 @@ import fs, { Stats } from "fs"; import glob from "glob"; import { InternalIncludeEntry } from "../options-mapping"; +import ignore, { Ignore } from "ignore"; + export type FileRecord = { name: string; content: string; }; +type FileNameRecord = { + absolutePath: string; + // Contains relative paths without leading `.` (e.g. "foo/bar.js" or "asdf\\a\\b.js.map") + relativePath: string; + // Holds the path of the file relative to the CWD (used for ignore matching) + relativeCwdPath: string; +}; + export function getFiles(includePath: string, includeEntry: InternalIncludeEntry): FileRecord[] { + // Start with getting all (unfiltered) files for the given includePath. + const files = collectAllFiles(includePath); + if (!files.length) { + return []; + } + + const ignore = getIgnoreRules(includeEntry); + const filteredFiles = files + .filter(({ relativeCwdPath }) => !ignore.ignores(relativeCwdPath)) + .filter(({ absolutePath }) => includeEntry.ext.includes(path.extname(absolutePath))); + + // TODO do sourcemap rewriting? + // TODO do sourcefile rewriting? (adding source map reference to bottom - search for "guess_sourcemap_reference") + return filteredFiles.map(({ absolutePath, relativePath }) => { + const content = fs.readFileSync(absolutePath, { encoding: "utf-8" }); + return { + name: + (includeEntry.urlPrefix ?? "~/") + + convertWindowsPathToPosix(relativePath) + + (includeEntry.urlSuffix ?? ""), + content, + }; + }); +} + +/** + * Collects all (unfiltered) files from @param includePath + * @param includePath + * @returns an array of files + */ +function collectAllFiles(includePath: string): FileNameRecord[] { let fileStat: Stats; + const absolutePath = path.isAbsolute(includePath) ? includePath : path.resolve(process.cwd(), includePath); @@ -19,52 +61,42 @@ export function getFiles(includePath: string, includeEntry: InternalIncludeEntry return []; } - let files: { - absolutePath: string; - // Contains relative paths without leading `.` (e.g. "foo/bar.js" or "asdf\\a\\b.js.map") - relativePath: string; - }[]; - if (fileStat.isFile()) { - files = [{ absolutePath, relativePath: path.basename(absolutePath) }]; + return [ + { + absolutePath, + relativePath: path.basename(absolutePath), + relativeCwdPath: path.relative(process.cwd(), absolutePath), + }, + ]; } else if (fileStat.isDirectory()) { - const absoluteIgnores = includeEntry.ignore.map((ignoreEntry) => - path.join(process.cwd(), ignoreEntry) - ); - - files = glob + return glob .sync(path.join(absolutePath, "**"), { nodir: true, absolute: true, - ignore: absoluteIgnores, }) .map((globPath) => ({ absolutePath: globPath, relativePath: globPath.slice(absolutePath.length + 1), + relativeCwdPath: path.relative(process.cwd(), globPath), })); } else { return []; } +} - const filteredFiles = files.filter(({ absolutePath }) => { - return includeEntry.ext.includes(path.extname(absolutePath)); - }); - - // TODO ignore files - // TODO ignorefile - // TODO do sourcemap rewriting? - // TODO do sourcefile rewriting? (adding source map reference to bottom - search for "guess_sourcemap_reference") - - return filteredFiles.map(({ absolutePath, relativePath }) => { - const content = fs.readFileSync(absolutePath, { encoding: "utf-8" }); - return { - name: - (includeEntry.urlPrefix ?? "~/") + - convertWindowsPathToPosix(relativePath) + - (includeEntry.urlSuffix ?? ""), - content, - }; - }); +/** + * Adds rules specified in `ignore` and `ignoreFile` to the ignore rule + * checker and returns the checker for further use. + */ +function getIgnoreRules(includeEntry: InternalIncludeEntry): Ignore { + const ignoreChecker = ignore(); + if (includeEntry.ignoreFile) { + const ignoreFileContent = fs.readFileSync(includeEntry.ignoreFile).toString(); + ignoreChecker.add(ignoreFileContent); + } + ignoreChecker.add(includeEntry.ignore); + return ignoreChecker; } function convertWindowsPathToPosix(windowsPath: string): string { diff --git a/packages/playground/.sentryignore b/packages/playground/.sentryignore new file mode 100644 index 000000000000..236ac487ddc9 --- /dev/null +++ b/packages/playground/.sentryignore @@ -0,0 +1,5 @@ +#out/vite-smallNodeApp/\*\* + +# some comment + +!out/vite-smallNodeApp/index.js diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 6873c32669fb..308852b551a3 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -17,14 +17,16 @@ export default defineConfig({ }, plugins: [ sentryVitePlugin({ - url: process.env.SENTRY_URL, - authToken: process.env.SENTRY_AUTH_TOKEN, - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN || "", + org: process.env.SENTRY_ORG || "", + project: process.env.SENTRY_PROJECT || "", debug: true, - release: "0.0.11", + release: "0.0.14", include: "out/vite-smallNodeApp", cleanArtifacts: true, + // ignore: ["out/*", "!out/vite-smallNodeApp/index.js.map"], + ignore: ["!out/vite-smallNodeApp/index.js.map"], + ignoreFile: ".sentryignore", }), ], }); From 9be1d5650e31f8ac8708c272947b28f2e02bb9ca Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 3 Nov 2022 14:43:09 +0100 Subject: [PATCH 073/640] ref(core): Change customHeaders option to customHeader (#84) Rename `customHeaders` to `customHeader` and change user-facing data type to string. This change aligns the option with the Sentry Webpack Plugin. --- .../src/options-mapping.ts | 14 ++++++-- .../bundler-plugin-core/src/sentry/api.ts | 32 +++++++++---------- .../src/sentry/releasePipeline.ts | 8 ++--- packages/bundler-plugin-core/src/types.ts | 6 +--- .../test/option-mappings.test.ts | 19 +++++++++-- 5 files changed, 50 insertions(+), 29 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index d61bd0e02b0c..ea8658e6105b 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -12,7 +12,6 @@ type RequiredInternalOptions = Required< | "finalize" | "validate" | "vcsRemote" - | "customHeaders" | "dryRun" | "debug" | "silent" @@ -28,6 +27,7 @@ type OptionalInternalOptions = Partial< type NormalizedInternalOptions = { entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; include: InternalIncludeEntry[]; + customHeader: Record; }; export type InternalOptions = RequiredInternalOptions & @@ -85,7 +85,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions finalize: userOptions.finalize ?? true, validate: userOptions.validate ?? false, vcsRemote: userOptions.vcsRemote ?? "origin", - customHeaders: userOptions.customHeaders ?? {}, + customHeader: normalizeCustomHeader(userOptions.customHeader), dryRun: userOptions.dryRun ?? false, debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, @@ -134,3 +134,13 @@ function normalizeIncludeEntry( rewrite: includeEntry.rewrite ?? userOptions.rewrite ?? true, }; } + +function normalizeCustomHeader( + userCustomHeader: UserOptions["customHeader"] +): InternalOptions["customHeader"] { + if (!userCustomHeader || !userCustomHeader.includes(":")) { + return {}; + } + const [key, value] = userCustomHeader.split(/:(.*)/, 2).map((s) => s.trim()) as [string, string]; + return { [key]: value }; +} diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index 11c551248cef..8a30fc8d726b 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -1,7 +1,7 @@ import { Hub } from "@sentry/node"; import axios from "axios"; import FormData from "form-data"; -import { Options } from "../types"; +import { InternalOptions } from "../options-mapping"; import { captureMinimalError } from "./telemetry"; const API_PATH = "api/0"; @@ -9,10 +9,10 @@ const USER_AGENT = `sentry-bundler-plugin/${__PACKAGE_VERSION__}`; const sentryApiAxiosInstance = ({ authToken, - customHeaders, -}: Required> & Pick) => + customHeader, +}: Required> & Pick) => axios.create({ - headers: { ...customHeaders, "User-Agent": USER_AGENT, Authorization: `Bearer ${authToken}` }, + headers: { ...customHeader, "User-Agent": USER_AGENT, Authorization: `Bearer ${authToken}` }, }); export async function createRelease({ @@ -22,7 +22,7 @@ export async function createRelease({ authToken, sentryUrl, sentryHub, - customHeaders, + customHeader, }: { release: string; project: string; @@ -30,7 +30,7 @@ export async function createRelease({ authToken: string; sentryUrl: string; sentryHub: Hub; - customHeaders?: Record; + customHeader: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`; @@ -42,7 +42,7 @@ export async function createRelease({ }; try { - await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, releasePayload, { + await sentryApiAxiosInstance({ authToken, customHeader }).post(requestUrl, releasePayload, { headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { @@ -58,7 +58,7 @@ export async function deleteAllReleaseArtifacts({ authToken, sentryUrl, sentryHub, - customHeaders, + customHeader, }: { org: string; release: string; @@ -66,12 +66,12 @@ export async function deleteAllReleaseArtifacts({ authToken: string; project: string; sentryHub: Hub; - customHeaders?: Record; + customHeader: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`; try { - await sentryApiAxiosInstance({ authToken, customHeaders }).delete(requestUrl, { + await sentryApiAxiosInstance({ authToken, customHeader }).delete(requestUrl, { headers: { Authorization: `Bearer ${authToken}`, }, @@ -89,7 +89,7 @@ export async function updateRelease({ sentryUrl, project, sentryHub, - customHeaders, + customHeader, }: { release: string; org: string; @@ -97,7 +97,7 @@ export async function updateRelease({ sentryUrl: string; project: string; sentryHub: Hub; - customHeaders?: Record; + customHeader: Record; }): Promise { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`; @@ -106,7 +106,7 @@ export async function updateRelease({ }; try { - await sentryApiAxiosInstance({ authToken, customHeaders }).put(requestUrl, releasePayload, { + await sentryApiAxiosInstance({ authToken, customHeader }).put(requestUrl, releasePayload, { headers: { Authorization: `Bearer ${authToken}` }, }); } catch (e) { @@ -124,7 +124,7 @@ export async function uploadReleaseFile({ filename, fileContent, sentryHub, - customHeaders, + customHeader, }: { org: string; release: string; @@ -134,7 +134,7 @@ export async function uploadReleaseFile({ filename: string; fileContent: string; sentryHub: Hub; - customHeaders?: Record; + customHeader: Record; }) { const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`; @@ -143,7 +143,7 @@ export async function uploadReleaseFile({ form.append("file", Buffer.from(fileContent, "utf-8"), { filename }); try { - await sentryApiAxiosInstance({ authToken, customHeaders }).post(requestUrl, form, { + await sentryApiAxiosInstance({ authToken, customHeader }).post(requestUrl, form, { headers: { Authorization: `Bearer ${authToken}`, "Content-Type": "multipart/form-data", diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 7b4ad6d9a96d..7b22f593d09c 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -40,7 +40,7 @@ export async function createNewRelease( project: options.project, sentryUrl: options.url, sentryHub: ctx.hub, - customHeaders: options.customHeaders, + customHeader: options.customHeader, }); ctx.logger.info("Successfully created release."); @@ -130,7 +130,7 @@ export async function uploadSourceMaps( filename: file.name, fileContent: file.content, sentryHub: ctx.hub, - customHeaders: options.customHeaders, + customHeader: options.customHeader, }) ) ).then(() => { @@ -160,7 +160,7 @@ export async function finalizeRelease( sentryUrl: url, project, sentryHub: ctx.hub, - customHeaders: options.customHeaders, + customHeader: options.customHeader, }); ctx.logger.info("Successfully finalized release."); @@ -196,7 +196,7 @@ export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext sentryUrl: options.url, project: options.project, sentryHub: ctx.hub, - customHeaders: options.customHeaders, + customHeader: options.customHeader, }); ctx.logger.info("Successfully cleaned previous artifacts."); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 6954431607a4..0d5612b982f5 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -107,12 +107,8 @@ export type Options = Omit & { /** * A header added to every outgoing network request. * The format should be `header-key: header-value`. - * - * TODO: This is currently different from the webpack plugin. There, this property is - * called `customHeader` and it only accepts one header as a string. - * Change in follow-up PR. */ - customHeaders?: Record; + customHeader?: string; /** * Attempts a dry run (useful for dev environments). diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 100e9970d87a..861b6990074a 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -14,7 +14,7 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", cleanArtifacts: false, - customHeaders: {}, + customHeader: {}, debug: false, dryRun: false, finalize: true, @@ -58,7 +58,7 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", cleanArtifacts: false, - customHeaders: {}, + customHeader: {}, debug: false, dryRun: false, finalize: true, @@ -82,4 +82,19 @@ describe("normalizeUserOptions()", () => { vcsRemote: "origin", }); }); + + test("should convert string customHeader to internal representation", () => { + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: "my-release", + include: "dist", + customHeader: "customKey: CustomValue", + }; + + expect(normalizeUserOptions(userOptions)).toEqual( + expect.objectContaining({ customHeader: { customKey: "CustomValue" } }) + ); + }); }); From 4b7d2e8c731c2081ec5a441281f7a016b1b8571f Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 4 Nov 2022 13:00:49 +0100 Subject: [PATCH 074/640] ref(core): Add Sentry CLI (#86) Bring back Sentry CLI as a dependency and adjust a few necessary things to be compatible with the CLI along the way: * Add CLI dependency * Add `getCLI()` function which creates a CLI or a stub if in `dryRun` mode * Adjust logger (+ introduce a debug level) * `dryRun` mode of CLI needs it * added variable args parameter to fully utilize `console.log` capabilities * Bring back the `configFile` option as it is relevant again because of Sentry CLI --- packages/bundler-plugin-core/package.json | 4 +- .../src/options-mapping.ts | 3 +- .../bundler-plugin-core/src/sentry/cli.ts | 61 ++++++++++ .../bundler-plugin-core/src/sentry/logger.ts | 30 +++-- packages/bundler-plugin-core/src/types.ts | 9 ++ packages/bundler-plugin-core/test/cli.test.ts | 16 +++ .../bundler-plugin-core/test/logger.test.ts | 46 ++++--- yarn.lock | 114 ++++++++++++++++-- 8 files changed, 241 insertions(+), 42 deletions(-) create mode 100644 packages/bundler-plugin-core/src/sentry/cli.ts create mode 100644 packages/bundler-plugin-core/test/cli.test.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b78125439b12..e47082f1b41a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -31,9 +31,11 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test" + "lint": "eslint ./src ./test", + "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { + "@sentry/cli": "^1.74.6", "@sentry/node": "^7.11.1", "@sentry/tracing": "^7.11.1", "axios": "^0.27.2", diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ea8658e6105b..56f8ed58841c 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -21,7 +21,7 @@ type RequiredInternalOptions = Required< >; type OptionalInternalOptions = Partial< - Pick + Pick >; type NormalizedInternalOptions = { @@ -97,6 +97,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions deploy: userOptions.deploy, entries, include, + configFile: userOptions.configFile, }; } diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts new file mode 100644 index 000000000000..41eb35d40703 --- /dev/null +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -0,0 +1,61 @@ +import SentryCli, { SentryCliReleases } from "@sentry/cli"; +import { InternalOptions } from "../options-mapping"; +import { Logger } from "./logger"; + +type SentryDryRunCLI = { releases: Omit }; +type SentryCLILike = SentryCli | SentryDryRunCLI; + +/** + * Creates a new Sentry CLI instance. + * + * In case, users selected the `dryRun` options, this returns a stub + * that makes no-ops out of most CLI operations + */ +export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { + const cli = new SentryCli(internalOptions.configFile, { + silent: internalOptions.silent, + org: internalOptions.org, + project: internalOptions.project, + authToken: internalOptions.authToken, + url: internalOptions.url, + vcsRemote: internalOptions.vcsRemote, + }); + + if (internalOptions.dryRun) { + return getDryRunCLI(cli, logger); + } + + return cli; +} + +function getDryRunCLI(cli: SentryCli, logger: Logger): SentryDryRunCLI { + return { + releases: { + proposeVersion: () => + cli.releases.proposeVersion().then((version) => { + logger.info("Proposed version:\n", version); + return version; + }), + new: (release: string) => { + logger.info("Creating new release:\n", release); + return Promise.resolve(release); + }, + uploadSourceMaps: (release: string, config: unknown) => { + logger.info("Calling upload-sourcemaps with:\n", config); + return Promise.resolve(release); + }, + finalize: (release: string) => { + logger.info("Finalizing release:\n", release); + return Promise.resolve(release); + }, + setCommits: (release: string, config: unknown) => { + logger.info("Calling set-commits with:\n", config); + return Promise.resolve(release); + }, + newDeploy: (release: string, config: unknown) => { + logger.info("Calling deploy with:\n", config); + return Promise.resolve(release); + }, + }, + }; +} diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index dc5fce6e5533..cda91a85ee70 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -6,7 +6,14 @@ interface LoggerOptions { prefix: string; } -export function createLogger(options: LoggerOptions) { +export type Logger = { + info(message: string, ...params: unknown[]): void; + warn(message: string, ...params: unknown[]): void; + error(message: string, ...params: unknown[]): void; + debug(message: string, ...params: unknown[]): void; +}; + +export function createLogger(options: LoggerOptions): Logger { function addBreadcrumb(level: SeverityLevel, message: string) { options.hub.addBreadcrumb({ category: "logger", @@ -16,29 +23,38 @@ export function createLogger(options: LoggerOptions) { } return { - info(message: string) { + info(message: string, ...params: unknown[]) { if (!options?.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} ${message}`); + console.log(`${options.prefix} Info: ${message}`, ...params); } addBreadcrumb("info", message); }, - warn(message: string) { + warn(message: string, ...params: unknown[]) { if (!options?.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Warning! ${message}`); + console.log(`${options.prefix} Warning: ${message}`, ...params); } addBreadcrumb("warning", message); }, - error(message: string) { + error(message: string, ...params: unknown[]) { if (!options?.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Error: ${message}`); + console.log(`${options.prefix} Error: ${message}`, ...params); } addBreadcrumb("error", message); }, + + debug(message: string, ...params: unknown[]) { + if (!options?.silent) { + // eslint-disable-next-line no-console + console.log(`${options.prefix} Debug: ${message}`, ...params); + } + + addBreadcrumb("debug", message); + }, }; } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 0d5612b982f5..ad6fc3d23e53 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -177,6 +177,15 @@ export type Options = Omit & { * Defaults to true */ telemetry?: boolean; + + /** + * Path to Sentry CLI config properties, as described in + * https://docs.sentry.io/product/cli/configuration/#configuration-file. + * + * By default, the config file is looked for upwards from the current path, and + * defaults from ~/.sentryclirc are always loaded + */ + configFile?: string; }; export type IncludeEntry = { diff --git a/packages/bundler-plugin-core/test/cli.test.ts b/packages/bundler-plugin-core/test/cli.test.ts new file mode 100644 index 000000000000..3777922be552 --- /dev/null +++ b/packages/bundler-plugin-core/test/cli.test.ts @@ -0,0 +1,16 @@ +import SentryCli from "@sentry/cli"; +import { getSentryCli } from "../src/sentry/cli"; + +describe("getSentryCLI", () => { + it("returns a valid CLI instance if dryRun is not specified", () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + const cli = getSentryCli({} as any, {} as any); + expect(cli).toBeInstanceOf(SentryCli); + }); + + it("returns a valid CLI instance if dryRun is set to true", () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + const cli = getSentryCli({ dryRun: true } as any, {} as any); + expect(cli).not.toBeInstanceOf(SentryCli); + }); +}); diff --git a/packages/bundler-plugin-core/test/logger.test.ts b/packages/bundler-plugin-core/test/logger.test.ts index 268a45077148..27b0508d0dd6 100644 --- a/packages/bundler-plugin-core/test/logger.test.ts +++ b/packages/bundler-plugin-core/test/logger.test.ts @@ -19,41 +19,47 @@ describe("Logger", () => { mockedAddBreadcrumb.mockReset(); }); - it(".info() should log correctly", () => { + it.each([ + ["info", "Info"], + ["warn", "Warning"], + ["error", "Error"], + ["debug", "Debug"], + ] as const)(".%s() should log correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; const logger = createLogger({ hub, prefix }); - logger.info("Hey!"); - expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Hey!"); - expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ - category: "logger", - level: "info", - message: "Hey!", - }); - }); + logger[loggerMethod]("Hey!"); - it(".warn() should log correctly", () => { - const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix }); - logger.warn("Hey!"); - - expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Warning! Hey!"); + expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ category: "logger", - level: "warning", + level: logLevel.toLowerCase(), message: "Hey!", }); }); - it(".error() should log correctly", () => { + it.each([ + ["info", "Info"], + ["warn", "Warning"], + ["error", "Error"], + ["debug", "Debug"], + ] as const)(".%s() should log multiple params correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; const logger = createLogger({ hub, prefix }); - logger.error("Hey!"); - expect(consoleLogSpy).toHaveBeenCalledWith("[some-prefix] Error: Hey!"); + logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); + + expect(consoleLogSpy).toHaveBeenCalledWith( + `[some-prefix] ${logLevel}: Hey!`, + "this", + "is", + "a test with", + 5, + "params" + ); expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ category: "logger", - level: "error", + level: logLevel.toLowerCase(), message: "Hey!", }); }); diff --git a/yarn.lock b/yarn.lock index 18ee774672e7..95c7fbda47ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2564,6 +2564,19 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sentry/cli@^1.74.6": + version "1.74.6" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.6.tgz#c4f276e52c6f5e8c8d692845a965988068ebc6f5" + integrity sha512-pJ7JJgozyjKZSTjOGi86chIngZMLUlYt2HOog+OJn+WGvqEkVymu8m462j1DiXAnex9NspB4zLLNuZ/R6rTQHg== + dependencies: + https-proxy-agent "^5.0.0" + mkdirp "^0.5.5" + node-fetch "^2.6.7" + npmlog "^4.1.2" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + "@sentry/core@7.11.1": version "7.11.1" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.11.1.tgz#d68e796f3b6428aefd6086a1db00118df7a9a9e4" @@ -3603,6 +3616,11 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -3643,16 +3661,16 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" @@ -3661,6 +3679,14 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -4515,6 +4541,11 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4638,7 +4669,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== @@ -6308,6 +6339,20 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6573,7 +6618,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.1: +has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== @@ -7065,6 +7110,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -8781,7 +8833,7 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@^0.5.1, mkdirp@^0.5.3: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -9137,6 +9189,16 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -9147,6 +9209,11 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + nwsapi@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" @@ -9229,7 +9296,7 @@ nx@15.0.0, "nx@>=14.8.6 < 16": yargs "^17.4.0" yargs-parser "21.0.1" -object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -9811,6 +9878,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-all-reject-late@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" @@ -10091,7 +10163,7 @@ read@1, read@^1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -10512,7 +10584,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== @@ -10590,7 +10662,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -10859,6 +10931,15 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10923,6 +11004,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -11846,7 +11934,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.5: +wide-align@^1.1.0, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From 097252c945ecebfdc29d7b507075470b387e9961 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 7 Nov 2022 11:25:26 +0100 Subject: [PATCH 075/640] ref(core): Replace release detection with Sentry CLI release detection (#87) Remove our previous release detection code (RIP) and replace it with CLI functionality. Doing this to ensure feature parity with the CLI, we can revisit this if we have time --- .../bundler-plugin-core/src/detect-release.ts | 42 --------- packages/bundler-plugin-core/src/index.ts | 15 +++- .../src/options-mapping.ts | 3 +- .../bundler-plugin-core/src/sentry/cli.ts | 3 +- packages/bundler-plugin-core/src/types.ts | 2 + packages/bundler-plugin-core/test/cli.test.ts | 6 +- .../test/getReleaseName.test.ts | 85 ------------------- 7 files changed, 20 insertions(+), 136 deletions(-) delete mode 100644 packages/bundler-plugin-core/src/detect-release.ts delete mode 100644 packages/bundler-plugin-core/test/getReleaseName.test.ts diff --git a/packages/bundler-plugin-core/src/detect-release.ts b/packages/bundler-plugin-core/src/detect-release.ts deleted file mode 100644 index 92671227b823..000000000000 --- a/packages/bundler-plugin-core/src/detect-release.ts +++ /dev/null @@ -1,42 +0,0 @@ -import * as child_process from "child_process"; - -function getGitBranchHead(): string | undefined { - try { - return child_process.execSync("git rev-parse HEAD").toString().trim(); - } catch (e) { - // no git installed - return undefined; - } -} - -export function detectRelease(): string { - // Env var SENTRY_RELEASE takes presendace over other env vars listed below - // this is why we are looking for it before proceeding with others - if (process.env["SENTRY_RELEASE"]) { - return process.env["SENTRY_RELEASE"]; - } - - const ENV_VARS = [ - "SOURCE_VERSION", // Heroku #1 https://devcenter.heroku.com/changelog-items/630 - "HEROKU_SLUG_COMMIT", // Heroku #2: https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases - "CODEBUILD_RESOLVED_SOURCE_VERSION", // AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html - "CIRCLE_SHA1", // CircleCI: https://circleci.com/docs/2.0/env-vars/ - "VERCEL_GIT_COMMIT_SHA", // Vercel docs: https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables - ]; - - const releaseFromEnvironmentVar = ENV_VARS.find((key) => Object.keys(process.env).includes(key)); - - if (releaseFromEnvironmentVar) { - return process.env[releaseFromEnvironmentVar] as string; - } - - const gitBranchHead = getGitBranchHead(); - - if (gitBranchHead) { - return gitBranchHead; - } else { - throw new Error( - 'Could not automatically determine release name. Please provide a release identifier via the "release" option.' - ); - } -} diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 70633d28b02b..58e51813df94 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -14,6 +14,7 @@ import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./s import { Span, Transaction } from "@sentry/types"; import { createLogger } from "./sentry/logger"; import { normalizeUserOptions } from "./options-mapping"; +import { getSentryCli } from "./sentry/cli"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. // This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. @@ -87,6 +88,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { silent: internalOptions.silent, }); + const cli = getSentryCli(internalOptions, logger); + if (internalOptions.telemetry) { logger.info("Sending error and performance telemetry data to Sentry."); logger.info("To disable telemetry, set `options.telemetry` to `false`."); @@ -116,13 +119,17 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { /** * Responsible for starting the plugin execution transaction and the release injection span */ - buildStart() { + async buildStart() { + if (!internalOptions.release) { + internalOptions.release = await cli.releases.proposeVersion(); + } + transaction = sentryHub.startTransaction({ op: "function.plugin", name: "Sentry Bundler Plugin execution", }); releaseInjectionSpan = addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger }, + { hub: sentryHub, parentSpan: transaction, logger, cli }, "function.plugin.inject_release", "Release injection" ); @@ -259,7 +266,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const releasePipelineSpan = transaction && addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger }, + { hub: sentryHub, parentSpan: transaction, logger, cli }, "function.plugin.release", "Release pipeline" ); @@ -275,7 +282,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // That's good for them but a hassle for us. Let's try to normalize this into one data type // (I vote IncludeEntry[]) and continue with that down the line - const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger }; + const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; createNewRelease(internalOptions, ctx) .then(() => cleanArtifacts(internalOptions, ctx)) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 56f8ed58841c..9397cfb887a6 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,4 +1,3 @@ -import { detectRelease } from "./detect-release"; import { IncludeEntry as UserIncludeEntry, Options as UserOptions } from "./types"; type RequiredInternalOptions = Required< @@ -81,7 +80,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions project: userOptions.project, authToken: userOptions.authToken, url: userOptions.url ?? "https://sentry.io/", - release: userOptions.release ?? detectRelease(), + release: userOptions.release ?? "", finalize: userOptions.finalize ?? true, validate: userOptions.validate ?? false, vcsRemote: userOptions.vcsRemote ?? "origin", diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 41eb35d40703..690d3fed0d5f 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -3,7 +3,7 @@ import { InternalOptions } from "../options-mapping"; import { Logger } from "./logger"; type SentryDryRunCLI = { releases: Omit }; -type SentryCLILike = SentryCli | SentryDryRunCLI; +export type SentryCLILike = SentryCli | SentryDryRunCLI; /** * Creates a new Sentry CLI instance. @@ -22,6 +22,7 @@ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): }); if (internalOptions.dryRun) { + logger.info("In DRY RUN Mode"); return getDryRunCLI(cli, logger); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index ad6fc3d23e53..c405817a927d 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,5 +1,6 @@ import { Hub } from "@sentry/hub"; import { Span } from "@sentry/tracing"; +import { SentryCLILike } from "./sentry/cli"; import { createLogger } from "./sentry/logger"; /** @@ -348,4 +349,5 @@ export type BuildContext = { hub: Hub; parentSpan?: Span; logger: ReturnType; + cli: SentryCLILike; }; diff --git a/packages/bundler-plugin-core/test/cli.test.ts b/packages/bundler-plugin-core/test/cli.test.ts index 3777922be552..189e571ae546 100644 --- a/packages/bundler-plugin-core/test/cli.test.ts +++ b/packages/bundler-plugin-core/test/cli.test.ts @@ -8,9 +8,11 @@ describe("getSentryCLI", () => { expect(cli).toBeInstanceOf(SentryCli); }); - it("returns a valid CLI instance if dryRun is set to true", () => { + it("returns a dry run CLI stub if `dryRun` is set to true", () => { + const logger = { info: jest.fn() }; // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any - const cli = getSentryCli({ dryRun: true } as any, {} as any); + const cli = getSentryCli({ dryRun: true } as any, logger as any); + expect(logger.info).toHaveBeenCalledWith(expect.stringMatching("DRY RUN")); expect(cli).not.toBeInstanceOf(SentryCli); }); }); diff --git a/packages/bundler-plugin-core/test/getReleaseName.test.ts b/packages/bundler-plugin-core/test/getReleaseName.test.ts deleted file mode 100644 index 7dfa3f438b16..000000000000 --- a/packages/bundler-plugin-core/test/getReleaseName.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { detectRelease } from "../src/detect-release"; -import * as fs from "fs"; -import * as child_process from "child_process"; -jest.mock("fs"); -jest.mock("child_process"); - -const mockedFs = fs; -const mockedChildProcess = child_process; - -describe("environmental getReleaseName", () => { - const OLD_ENV = process.env; - - beforeEach(() => { - jest.resetModules(); - process.env = { ...OLD_ENV }; - }); - - afterEach(() => { - (mockedChildProcess.execSync as jest.Mock).mockRestore(); - }); - - afterAll(() => { - process.env = OLD_ENV; - }); - - it("adheres to HEAD when git is present", () => { - (mockedFs.existsSync as jest.Mock).mockReturnValueOnce(true); - const sha = "c3f235fc86f1c4007e3a218ec82d666586e73cbf"; - (mockedChildProcess.execSync as jest.Mock).mockReturnValue(sha); - - expect(detectRelease()).toBe(sha); - }); - - it("throws an error if no release information could be found", () => { - (mockedFs.existsSync as jest.Mock).mockReturnValueOnce(false); - - expect(detectRelease).toThrow( - 'Could not automatically determine release name. Please provide a release identifier via the "release" option.' - ); - }); - - it("adheres to process.env.SENTRY_RELEASE", () => { - const releaseName = "SENTRY_RELEASE_string"; - process.env["SENTRY_RELEASE"] = releaseName; - - expect(detectRelease()).toBe(releaseName); - }); - - it("adheres to Heroku: process.env.SOURCE_VERSION", () => { - const releaseName = "SOURCE_VERSION_string"; - process.env["SOURCE_VERSION"] = releaseName; - - expect(detectRelease()).toBe(releaseName); - }); - - it("adheres to Heroku: process.env.HEROKU_SLUG_COMMIT", () => { - const releaseName = "HEROKU_SLUG_COMMIT_string"; - process.env["HEROKU_SLUG_COMMIT"] = releaseName; - - expect(detectRelease()).toBe(releaseName); - }); - - it("adheres to AWS: process.env.CODEBUILD_RESOLVED_SOURCE_VERSION", () => { - const releaseName = "CODEBUILD_RESOLVED_SOURCE_VERSION_string"; - process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] = releaseName; - - expect(detectRelease()).toBe(releaseName); - }); - - it("adheres to Vercel: process.env.VERCEL_GIT_COMMIT_SHA", () => { - const releaseName = "VERCEL_GIT_COMMIT_SHA_string"; - process.env["VERCEL_GIT_COMMIT_SHA"] = releaseName; - - expect(detectRelease()).toBe(releaseName); - }); - - it("allows SENTRY_RELEASE to take precedence over other env vars", () => { - const vercelReleaseName = "VERCEL_GIT_COMMIT_SHA_string"; - const sentryReleaseName = "SENTRY_RELEASE_string"; - process.env["VERCEL_GIT_COMMIT_SHA"] = vercelReleaseName; - process.env["SENTRY_RELEASE"] = sentryReleaseName; - - expect(detectRelease()).toBe(sentryReleaseName); - }); -}); From 3e3a9b41409cc615cb488982b4ea2a14b71b5a4d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 7 Nov 2022 11:32:13 +0100 Subject: [PATCH 076/640] ref(core): Use Sentry CLI for sourcemaps upload (#88) Replace our own WIP sourcemaps upload logic with Sentry CLI's implementation. --- .../bundler-plugin-core/src/sentry/api.ts | 41 ------- .../src/sentry/releasePipeline.ts | 83 ++------------ .../src/sentry/sourcemaps.ts | 104 ------------------ .../basic-upload/ref/esbuild/~/index.js.map | 2 +- .../basic-upload/ref/rollup/~/index.js.map | 2 +- .../basic-upload/ref/webpack4/~/index.js.map | 2 +- .../basic-upload/ref/webpack5/~/index.js.map | 2 +- 7 files changed, 13 insertions(+), 223 deletions(-) delete mode 100644 packages/bundler-plugin-core/src/sentry/sourcemaps.ts diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index 8a30fc8d726b..6acea24b4791 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -1,6 +1,5 @@ import { Hub } from "@sentry/node"; import axios from "axios"; -import FormData from "form-data"; import { InternalOptions } from "../options-mapping"; import { captureMinimalError } from "./telemetry"; @@ -114,43 +113,3 @@ export async function updateRelease({ throw e; } } - -export async function uploadReleaseFile({ - org, - project, - release, - authToken, - sentryUrl, - filename, - fileContent, - sentryHub, - customHeader, -}: { - org: string; - release: string; - sentryUrl: string; - authToken: string; - project: string; - filename: string; - fileContent: string; - sentryHub: Hub; - customHeader: Record; -}) { - const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/files/`; - - const form = new FormData(); - form.append("name", filename); - form.append("file", Buffer.from(fileContent, "utf-8"), { filename }); - - try { - await sentryApiAxiosInstance({ authToken, customHeader }).post(requestUrl, form, { - headers: { - Authorization: `Bearer ${authToken}`, - "Content-Type": "multipart/form-data", - }, - }); - } catch (e) { - captureMinimalError(e, sentryHub); - throw e; - } -} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 7b22f593d09c..d286645c7e34 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -8,8 +8,7 @@ import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; -import { createRelease, deleteAllReleaseArtifacts, uploadReleaseFile, updateRelease } from "./api"; -import { getFiles, FileRecord } from "./sourcemaps"; +import { createRelease, deleteAllReleaseArtifacts, updateRelease } from "./api"; import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease( @@ -49,95 +48,31 @@ export async function createNewRelease( return Promise.resolve("nothing to do here"); } -export async function uploadSourceMaps( - options: InternalOptions, - ctx: BuildContext -): Promise { +export async function uploadSourceMaps(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); - // This is what Sentry CLI does: - // TODO: 0. Preprocess source maps - // - (Out of scope for now) - // - For rewriting source maps see https://github.com/getsentry/rust-sourcemap/blob/master/src/types.rs#L763 - // TODO: 1. Creates a new release to make sure it exists - // - can we assume that the release will exist b/c we don't give unplugin users the - // option to skip this step? - // TODO: 2. download already uploaded files and get their checksums - // TODO: 3. identify new or changed files (by comparing checksums) - // TODO: 4. upload new and changed files - // - CLI asks API for chunk options https://github.com/getsentry/sentry-cli/blob/7b8466885d9cfd51aee6fdc041eca9f645026303/src/utils/file_upload.rs#L106-L112 - // - WTF? - // - don't upload more than 20k files - // - upload files concurrently - // - 2 options: chunked upload (multiple files per chunk) or single file upload // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { ctx.logger.warn('Missing "authToken" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return Promise.resolve(); } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return Promise.resolve(); } else if (options.url === undefined) { ctx.logger.warn('Missing "url" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return Promise.resolve(); } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return Promise.resolve(); } ctx.logger.info("Uploading Sourcemaps."); - const files: FileRecord[] = []; - options.include.forEach((includeEntry) => { - includeEntry.paths.forEach((path) => { - files.push(...getFiles(path, includeEntry)); - }); - }); - - ctx.logger.info(`Found ${files.length} files to upload.`); + await ctx.cli.releases.uploadSourceMaps(options.release, { include: options.include }); - // Check if there would be duplicate artifacts and throw if there are any. - const duplicateArtifacts = new Set(); - const fileSet = new Set(); - files.forEach((file) => { - if (fileSet.has(file.name)) { - duplicateArtifacts.add(file.name); - } else { - fileSet.add(file.name); - } - }); - if (duplicateArtifacts.size > 0) { - const artifactsList: string[] = []; - duplicateArtifacts.forEach((artifact) => { - artifactsList.push(`- "${artifact}"`); - }); - ctx.logger.error( - `The following artifacts were identified more than once. Use the "urlPrefix" or "urlSuffix" options to tell them apart or adjust your "include" and "ignore" settings.\n${artifactsList.join( - "\n" - )}` - ); - throw new Error(); - } + ctx.logger.info("Successfully uploaded Sourcemaps."); - return Promise.all( - files.map((file) => - uploadReleaseFile({ - org: options.org, - project: options.project, - release: options.release, - authToken: options.authToken, - sentryUrl: options.url, - filename: file.name, - fileContent: file.content, - sentryHub: ctx.hub, - customHeader: options.customHeader, - }) - ) - ).then(() => { - ctx.logger.info("Successfully uploaded sourcemaps."); - span?.finish(); - return "done"; - }); + span?.finish(); } export async function finalizeRelease( diff --git a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts b/packages/bundler-plugin-core/src/sentry/sourcemaps.ts deleted file mode 100644 index 07f02b8c383c..000000000000 --- a/packages/bundler-plugin-core/src/sentry/sourcemaps.ts +++ /dev/null @@ -1,104 +0,0 @@ -import path from "path"; -import fs, { Stats } from "fs"; -import glob from "glob"; -import { InternalIncludeEntry } from "../options-mapping"; - -import ignore, { Ignore } from "ignore"; - -export type FileRecord = { - name: string; - content: string; -}; - -type FileNameRecord = { - absolutePath: string; - // Contains relative paths without leading `.` (e.g. "foo/bar.js" or "asdf\\a\\b.js.map") - relativePath: string; - // Holds the path of the file relative to the CWD (used for ignore matching) - relativeCwdPath: string; -}; - -export function getFiles(includePath: string, includeEntry: InternalIncludeEntry): FileRecord[] { - // Start with getting all (unfiltered) files for the given includePath. - const files = collectAllFiles(includePath); - if (!files.length) { - return []; - } - - const ignore = getIgnoreRules(includeEntry); - const filteredFiles = files - .filter(({ relativeCwdPath }) => !ignore.ignores(relativeCwdPath)) - .filter(({ absolutePath }) => includeEntry.ext.includes(path.extname(absolutePath))); - - // TODO do sourcemap rewriting? - // TODO do sourcefile rewriting? (adding source map reference to bottom - search for "guess_sourcemap_reference") - return filteredFiles.map(({ absolutePath, relativePath }) => { - const content = fs.readFileSync(absolutePath, { encoding: "utf-8" }); - return { - name: - (includeEntry.urlPrefix ?? "~/") + - convertWindowsPathToPosix(relativePath) + - (includeEntry.urlSuffix ?? ""), - content, - }; - }); -} - -/** - * Collects all (unfiltered) files from @param includePath - * @param includePath - * @returns an array of files - */ -function collectAllFiles(includePath: string): FileNameRecord[] { - let fileStat: Stats; - - const absolutePath = path.isAbsolute(includePath) - ? includePath - : path.resolve(process.cwd(), includePath); - try { - fileStat = fs.statSync(absolutePath); - } catch (e) { - return []; - } - - if (fileStat.isFile()) { - return [ - { - absolutePath, - relativePath: path.basename(absolutePath), - relativeCwdPath: path.relative(process.cwd(), absolutePath), - }, - ]; - } else if (fileStat.isDirectory()) { - return glob - .sync(path.join(absolutePath, "**"), { - nodir: true, - absolute: true, - }) - .map((globPath) => ({ - absolutePath: globPath, - relativePath: globPath.slice(absolutePath.length + 1), - relativeCwdPath: path.relative(process.cwd(), globPath), - })); - } else { - return []; - } -} - -/** - * Adds rules specified in `ignore` and `ignoreFile` to the ignore rule - * checker and returns the checker for further use. - */ -function getIgnoreRules(includeEntry: InternalIncludeEntry): Ignore { - const ignoreChecker = ignore(); - if (includeEntry.ignoreFile) { - const ignoreFileContent = fs.readFileSync(includeEntry.ignoreFile).toString(); - ignoreChecker.add(ignoreFileContent); - } - ignoreChecker.add(includeEntry.ignore); - return ignoreChecker; -} - -function convertWindowsPathToPosix(windowsPath: string): string { - return windowsPath.split(path.sep).join(path.posix.sep); -} diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map index 300618e83fbc..3e8047c2ba23 100644 --- a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map +++ b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["sentry-plugin:\u0000sentry-release-injector","../../input/fib.js","../../input/index.js"],"sourcesContent":["\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-esbuild\"};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"mappings":"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU","names":[]} \ No newline at end of file +{"version":3,"sources":["sentry-plugin:\u0000sentry-release-injector","../../input/fib.js","../../input/index.js"],"sourcesContent":["\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-esbuild\"};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":[],"mappings":"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map index a9db562a8d34..60b20001040e 100644 --- a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map +++ b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA;;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map index 04f5cb9a429d..cf01f9e9a227 100644 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./_virtual_%00sentry-release-injector","webpack:///./scenarios/basic-upload/input/fib.js","webpack:///./scenarios/basic-upload/input/index.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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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","file":"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","\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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","sources":["webpack:///webpack/bootstrap","webpack:///./_virtual_%00sentry-release-injector","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","\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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map index 58a23cf4f0ec..001628f390dd 100644 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map +++ b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W","sources":["webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js"],"sourcesContent":["\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-webpack5\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":["window","g","self","SENTRY_RELEASE","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","globalThis","this","Function","e","r","Symbol","toStringTag","Object","defineProperty","value","fibonacci","n","Error","console","log"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","sources":["webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js"],"sourcesContent":["\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-webpack5\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":["window","g","self","SENTRY_RELEASE","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","globalThis","this","Function","e","r","Symbol","toStringTag","Object","defineProperty","value","fibonacci","n","Error","console","log"],"mappings":"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W"} \ No newline at end of file From dd8f9f27b5811c43e3116206de325cb1c3812aca Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 7 Nov 2022 11:47:04 +0100 Subject: [PATCH 077/640] ref(core): Use Sentry-CLI to finalize release (#90) Replace our own release finalization logic with Sentry CLI's implementation RIP Note: Since integration tests were failing because the CLI expects parameters that we didn't specify, I opted to set the `dryRun` option in our test setups. We're only testing release injection in these tests, so apart from the CLI's version detection (which still works as expected in dry run mode) we don't need any of its functionality. --- .../bundler-plugin-core/src/sentry/api.ts | 33 ------------------- .../src/sentry/releasePipeline.ts | 25 ++------------ .../fixtures/array-entries-option/setup.ts | 1 + .../fixtures/basic-release-injection/setup.ts | 1 + .../fixtures/function-entries-option/setup.ts | 1 + .../fixtures/regex-entries-option/setup.ts | 1 + .../fixtures/string-entries-option/setup.ts | 1 + 7 files changed, 8 insertions(+), 55 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index 6acea24b4791..65776b254244 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -80,36 +80,3 @@ export async function deleteAllReleaseArtifacts({ throw e; } } - -export async function updateRelease({ - release, - org, - authToken, - sentryUrl, - project, - sentryHub, - customHeader, -}: { - release: string; - org: string; - authToken: string; - sentryUrl: string; - project: string; - sentryHub: Hub; - customHeader: Record; -}): Promise { - const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/releases/${release}/`; - - const releasePayload = { - dateReleased: new Date().toISOString(), - }; - - try { - await sentryApiAxiosInstance({ authToken, customHeader }).put(requestUrl, releasePayload, { - headers: { Authorization: `Bearer ${authToken}` }, - }); - } catch (e) { - captureMinimalError(e, sentryHub); - throw e; - } -} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index d286645c7e34..87a2a71be279 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -8,7 +8,7 @@ import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; -import { createRelease, deleteAllReleaseArtifacts, updateRelease } from "./api"; +import { createRelease, deleteAllReleaseArtifacts } from "./api"; import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease( @@ -75,34 +75,15 @@ export async function uploadSourceMaps(options: InternalOptions, ctx: BuildConte span?.finish(); } -export async function finalizeRelease( - options: InternalOptions, - ctx: BuildContext -): Promise { +export async function finalizeRelease(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); if (options.finalize) { - const { authToken, org, url, project } = options; - if (!authToken || !org || !url || !project) { - ctx.logger.warn("Missing required option. Will not clean existing artifacts."); - return Promise.resolve("nothing to do here"); - } - - await updateRelease({ - authToken, - org, - release: options.release, - sentryUrl: url, - project, - sentryHub: ctx.hub, - customHeader: options.customHeader, - }); - + await ctx.cli.releases.finalize(options.release); ctx.logger.info("Successfully finalized release."); } span?.finish(); - return Promise.resolve("nothing to do here"); } export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts index d12f1b0a3d45..1da304a4e2d8 100644 --- a/packages/integration-tests/fixtures/array-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/array-entries-option/setup.ts @@ -14,5 +14,6 @@ createCjsBundles( release: "I AM A RELEASE!", include: outputDir, entries: [/entrypoint1\.js/, entryPoint3Path], + dryRun: true, } as Options ); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index 2d8a42fbb01f..b9112296838a 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -8,4 +8,5 @@ const outputDir = path.resolve(__dirname, "./out"); createCjsBundles({ index: entryPointPath }, outputDir, { release: "I AM A RELEASE!", include: outputDir, + dryRun: true, } as Options); diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts index 565b941bbfcf..d30480410ec0 100644 --- a/packages/integration-tests/fixtures/function-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/function-entries-option/setup.ts @@ -15,5 +15,6 @@ createCjsBundles( include: outputDir, entries: (entrypointPath) => entrypointPath === entryPoint1Path || entrypointPath === entryPoint3Path, + dryRun: true, } as Options ); diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts index f5e288173f9f..8f528f4c7aec 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/setup.ts @@ -9,5 +9,6 @@ const outputDir = path.resolve(__dirname, "./out"); createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { release: "I AM A RELEASE!", include: outputDir, + dryRun: true, entries: /entrypoint1\.js/, } as Options); diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts index 0481189ff48c..374012e9cae7 100644 --- a/packages/integration-tests/fixtures/string-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/string-entries-option/setup.ts @@ -10,4 +10,5 @@ createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, release: "I AM A RELEASE!", include: outputDir, entries: entryPoint1Path, + dryRun: true, } as Options); From 6a30140e150f14054084b87bdd524f39602218ba Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 8 Nov 2022 13:16:02 +0100 Subject: [PATCH 078/640] ref(core): Use Sentry CLI for artifact deletion (#92) Replace previous custom implementation with Sentry CLI logic analogously to the [webpack plugin](https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L487-L490) --- .../bundler-plugin-core/src/sentry/api.ts | 31 ------------------- .../bundler-plugin-core/src/sentry/cli.ts | 6 +++- .../src/sentry/releasePipeline.ts | 23 +++++--------- 3 files changed, 12 insertions(+), 48 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts index 65776b254244..994123945863 100644 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ b/packages/bundler-plugin-core/src/sentry/api.ts @@ -49,34 +49,3 @@ export async function createRelease({ throw e; } } - -export async function deleteAllReleaseArtifacts({ - org, - project, - release, - authToken, - sentryUrl, - sentryHub, - customHeader, -}: { - org: string; - release: string; - sentryUrl: string; - authToken: string; - project: string; - sentryHub: Hub; - customHeader: Record; -}): Promise { - const requestUrl = `${sentryUrl}${API_PATH}/projects/${org}/${project}/files/source-maps/?name=${release}`; - - try { - await sentryApiAxiosInstance({ authToken, customHeader }).delete(requestUrl, { - headers: { - Authorization: `Bearer ${authToken}`, - }, - }); - } catch (e) { - captureMinimalError(e, sentryHub); - throw e; - } -} diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 690d3fed0d5f..5ee351663435 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -2,7 +2,7 @@ import SentryCli, { SentryCliReleases } from "@sentry/cli"; import { InternalOptions } from "../options-mapping"; import { Logger } from "./logger"; -type SentryDryRunCLI = { releases: Omit }; +type SentryDryRunCLI = { releases: Omit }; export type SentryCLILike = SentryCli | SentryDryRunCLI; /** @@ -57,6 +57,10 @@ function getDryRunCLI(cli: SentryCli, logger: Logger): SentryDryRunCLI { logger.info("Calling deploy with:\n", config); return Promise.resolve(release); }, + execute: (args: string[], live: boolean) => { + logger.info("Executing", args, "live:", live); + return Promise.resolve(""); + }, }, }; } diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 87a2a71be279..a903c88a5931 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -8,7 +8,7 @@ import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; -import { createRelease, deleteAllReleaseArtifacts } from "./api"; +import { createRelease } from "./api"; import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease( @@ -86,40 +86,31 @@ export async function finalizeRelease(options: InternalOptions, ctx: BuildContex span?.finish(); } -export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { +export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); if (options.cleanArtifacts) { // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { ctx.logger.warn('Missing "authToken" option. Will not clean existing artifacts.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not clean existing artifacts.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.url === undefined) { ctx.logger.warn('Missing "url" option. Will not clean existing artifacts.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not clean existing artifacts.'); - return Promise.resolve("nothing to do here"); + return; } - await deleteAllReleaseArtifacts({ - authToken: options.authToken, - org: options.org, - release: options.release, - sentryUrl: options.url, - project: options.project, - sentryHub: ctx.hub, - customHeader: options.customHeader, - }); + await ctx.cli.releases.execute(["releases", "files", options.release, "delete", "--all"], true); ctx.logger.info("Successfully cleaned previous artifacts."); } span?.finish(); - return Promise.resolve("nothing to do here"); } // TODO: Stuff we worry about later: From 8e47960a9a8c397a7b9ec577b1db699cceb7118d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 8 Nov 2022 13:23:39 +0100 Subject: [PATCH 079/640] ref(core): Use Sentry CLI to create new release (#93) replaces our custom implementation of the release creation API call with a call to Sentry CLI to do the job --- .../bundler-plugin-core/src/sentry/api.ts | 51 ------------------- .../src/sentry/releasePipeline.ts | 25 +++------ 2 files changed, 6 insertions(+), 70 deletions(-) delete mode 100644 packages/bundler-plugin-core/src/sentry/api.ts diff --git a/packages/bundler-plugin-core/src/sentry/api.ts b/packages/bundler-plugin-core/src/sentry/api.ts deleted file mode 100644 index 994123945863..000000000000 --- a/packages/bundler-plugin-core/src/sentry/api.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Hub } from "@sentry/node"; -import axios from "axios"; -import { InternalOptions } from "../options-mapping"; -import { captureMinimalError } from "./telemetry"; - -const API_PATH = "api/0"; -const USER_AGENT = `sentry-bundler-plugin/${__PACKAGE_VERSION__}`; - -const sentryApiAxiosInstance = ({ - authToken, - customHeader, -}: Required> & Pick) => - axios.create({ - headers: { ...customHeader, "User-Agent": USER_AGENT, Authorization: `Bearer ${authToken}` }, - }); - -export async function createRelease({ - org, - project, - release, - authToken, - sentryUrl, - sentryHub, - customHeader, -}: { - release: string; - project: string; - org: string; - authToken: string; - sentryUrl: string; - sentryHub: Hub; - customHeader: Record; -}): Promise { - const requestUrl = `${sentryUrl}${API_PATH}/organizations/${org}/releases/`; - - const releasePayload = { - version: release, - projects: [project], // we currently only support creating releases for a single project - dateStarted: new Date(), - dateReleased: new Date(), //TODO: figure out if these dates are set correctly - }; - - try { - await sentryApiAxiosInstance({ authToken, customHeader }).post(requestUrl, releasePayload, { - headers: { Authorization: `Bearer ${authToken}` }, - }); - } catch (e) { - captureMinimalError(e, sentryHub); - throw e; - } -} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index a903c88a5931..1bdc47409644 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -8,44 +8,31 @@ import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; -import { createRelease } from "./api"; import { addSpanToTransaction } from "./telemetry"; -export async function createNewRelease( - options: InternalOptions, - ctx: BuildContext -): Promise { +export async function createNewRelease(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.create_release"); // TODO: pull these checks out of here and simplify them if (options.authToken === undefined) { ctx.logger.warn('Missing "authToken" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.url === undefined) { ctx.logger.warn('Missing "url" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return; } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not create release.'); - return Promise.resolve("nothing to do here"); + return; } - await createRelease({ - release: options.release, - authToken: options.authToken, - org: options.org, - project: options.project, - sentryUrl: options.url, - sentryHub: ctx.hub, - customHeader: options.customHeader, - }); + await ctx.cli.releases.new(options.release); ctx.logger.info("Successfully created release."); span?.finish(); - return Promise.resolve("nothing to do here"); } export async function uploadSourceMaps(options: InternalOptions, ctx: BuildContext): Promise { From 4e7802f92f4359c9d078defca7989e68560d00be Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 8 Nov 2022 17:07:31 +0100 Subject: [PATCH 080/640] feat(core): Add `setCommits` (#96) Add the `setCommits` option implementation, analogously to what we have in the [webpack plugin](https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L495-L516). Add a few tests to check that this step in our release pipeline is working as expected. I'll make similar tests to the other steps in future PRs. --- packages/bundler-plugin-core/src/index.ts | 2 +- .../src/sentry/releasePipeline.ts | 29 ++++++-- packages/bundler-plugin-core/src/types.ts | 12 +++- .../test/releasePipeline.test.ts | 71 +++++++++++++++++++ .../playground/vite.config.smallNodeApp.js | 4 ++ 5 files changed, 108 insertions(+), 10 deletions(-) create mode 100644 packages/bundler-plugin-core/test/releasePipeline.test.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 58e51813df94..c53df5f9291f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -287,7 +287,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { createNewRelease(internalOptions, ctx) .then(() => cleanArtifacts(internalOptions, ctx)) .then(() => uploadSourceMaps(internalOptions, ctx)) - .then(() => setCommits(ctx)) // this is a noop for now + .then(() => setCommits(internalOptions, ctx)) .then(() => finalizeRelease(internalOptions, ctx)) .then(() => addDeploy(ctx)) // this is a noop for now .then(() => { diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 1bdc47409644..023a0c62987b 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -100,16 +100,31 @@ export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext span?.finish(); } -// TODO: Stuff we worry about later: - -export async function setCommits( - /* version: string, */ - ctx: BuildContext -): Promise { +export async function setCommits(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); + if (options.setCommits) { + const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; + + if (auto || (repo && commit)) { + await ctx.cli.releases.setCommits(options.release, { + commit, + previousCommit, + repo, + auto, + ignoreMissing, + ignoreEmpty, + }); + ctx.logger.info("Successfully set commits."); + } else { + ctx.logger.error( + "Couldn't set commits - neither the `auto` nor the `repo` and `commit` options were specified!", + "Make sure to either set `auto` to `true` or to manually set `repo` and `commit`." + ); + } + } + span?.finish(); - return Promise.resolve("Noop"); } export async function addDeploy( diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index c405817a927d..73991279ea1a 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -277,14 +277,14 @@ type SetCommitsOptions = { /** * The full repo name as defined in Sentry. * - * Required if `auto` option is not `true`. + * Required if `auto` option is not set to `true`. */ repo?: string; /** * The current (last) commit in the release. * - * Required if `auto` option is not `true`. + * Required if `auto` option is not set to `true`. */ commit?: string; @@ -306,6 +306,14 @@ type SetCommitsOptions = { * Defaults to `false`. */ ignoreMissing?: boolean; + + /** + * If this flag is set, the setCommits step will not fail and just exit + * silently if no new commits for a given release have been found. + * + * Defaults to `false`. + */ + ignoreEmpty?: boolean; }; type DeployOptions = { diff --git a/packages/bundler-plugin-core/test/releasePipeline.test.ts b/packages/bundler-plugin-core/test/releasePipeline.test.ts new file mode 100644 index 000000000000..7f2d3cd12f87 --- /dev/null +++ b/packages/bundler-plugin-core/test/releasePipeline.test.ts @@ -0,0 +1,71 @@ +import { InternalOptions } from "../src/options-mapping"; +import { setCommits } from "../src/sentry/releasePipeline"; +import { BuildContext } from "../src/types"; + +const mockedAddSpanToTxn = jest.fn(); + +jest.mock("../src/sentry/telemetry", () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const original = jest.requireActual("../src/sentry/telemetry"); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return { + ...original, + addSpanToTransaction: () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return mockedAddSpanToTxn(); + }, + }; +}); + +describe("Release Pipeline", () => { + const mockedLogger = { + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + }; + + const mockedCLI = { + releases: { + setCommits: jest.fn(), + }, + }; + + const mockedChildSpan = { finish: jest.fn() }; + mockedAddSpanToTxn.mockImplementation(() => mockedChildSpan); + + const ctx = { cli: mockedCLI, logger: mockedLogger }; + + describe("setCommits", () => { + it("doesn't do anything if setCommits option is not specified", async () => { + await setCommits({} as InternalOptions, ctx as unknown as BuildContext); + + expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + + it("logs an error if neither `auto` nor `repo` && `commit` options are specified", async () => { + await setCommits({ setCommits: {} } as InternalOptions, ctx as unknown as BuildContext); + expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); + expect(mockedLogger.error).toHaveBeenLastCalledWith( + expect.stringMatching(/Couldn't set commits.*auto.*repo.*commit/), + expect.stringMatching(/.*auto.*repo.*commit/) + ); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + + it("makes a call to Sentry CLI if the correct options are specified", async () => { + await setCommits( + { setCommits: { auto: true }, release: "1.0.0" } as InternalOptions, + ctx as unknown as BuildContext + ); + + expect(mockedCLI.releases.setCommits).toHaveBeenCalledWith("1.0.0", { auto: true }); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); +}); diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 308852b551a3..e549a8fe8453 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -27,6 +27,10 @@ export default defineConfig({ // ignore: ["out/*", "!out/vite-smallNodeApp/index.js.map"], ignore: ["!out/vite-smallNodeApp/index.js.map"], ignoreFile: ".sentryignore", + setCommits: { + auto: true, + ignoreMissing: true, + }, }), ], }); From 8a7fa9394348efcc6307130fcdb752ebebc4ce28 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 9 Nov 2022 10:52:14 +0100 Subject: [PATCH 081/640] feat(core): Add `deploy` command (#97) Add the implementation of the `deploy` option and its step in the release pipeline. The implementation is mostly taken from the [webpack plugin](https://github.com/getsentry/sentry-webpack-plugin/blob/137503f3ac6fe423b16c5c50379859c86e689017/src/index.js#L524-L536) and relies on Sentry CLI. Add tests for deploy --- packages/bundler-plugin-core/src/index.ts | 6 +-- .../src/sentry/releasePipeline.ts | 29 +++++++++--- packages/bundler-plugin-core/src/types.ts | 4 +- .../test/releasePipeline.test.ts | 45 ++++++++++++++++++- .../playground/vite.config.smallNodeApp.js | 4 ++ 5 files changed, 74 insertions(+), 14 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index c53df5f9291f..9222c733a625 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -289,10 +289,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { .then(() => uploadSourceMaps(internalOptions, ctx)) .then(() => setCommits(internalOptions, ctx)) .then(() => finalizeRelease(internalOptions, ctx)) - .then(() => addDeploy(ctx)) // this is a noop for now - .then(() => { - transaction?.setStatus("ok"); - }) + .then(() => addDeploy(internalOptions, ctx)) + .then(() => transaction?.setStatus("ok")) .catch((e: Error) => { captureMinimalError(e, sentryHub); transaction?.setStatus("cancelled"); diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 023a0c62987b..fce94afcaebb 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -127,12 +127,29 @@ export async function setCommits(options: InternalOptions, ctx: BuildContext): P span?.finish(); } -export async function addDeploy( - /* version: string, */ - ctx: BuildContext -): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.add_deploy"); +export async function addDeploy(options: InternalOptions, ctx: BuildContext): Promise { + const span = addSpanToTransaction(ctx, "function.plugin.deploy"); + + if (options.deploy) { + const { env, started, finished, time, name, url } = options.deploy; + + if (env) { + await ctx.cli.releases.newDeploy(options.release, { + env, + started, + finished, + time, + name, + url, + }); + ctx.logger.info("Successfully added deploy."); + } else { + ctx.logger.error( + "Couldn't add deploy - the `env` option was not specified!", + "Make sure to set `deploy.env` (e.g. to 'production')." + ); + } + } span?.finish(); - return Promise.resolve("Noop"); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 73991279ea1a..a6765ddfc4db 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -326,12 +326,12 @@ type DeployOptions = { /** * Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. */ - started?: number; + started?: number | string; /** * Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. */ - finished?: number; + finished?: number | string; /** * Deployment duration (in seconds). Can be used instead of started and finished. diff --git a/packages/bundler-plugin-core/test/releasePipeline.test.ts b/packages/bundler-plugin-core/test/releasePipeline.test.ts index 7f2d3cd12f87..5b10f4cdf9d3 100644 --- a/packages/bundler-plugin-core/test/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/releasePipeline.test.ts @@ -1,5 +1,5 @@ import { InternalOptions } from "../src/options-mapping"; -import { setCommits } from "../src/sentry/releasePipeline"; +import { addDeploy, setCommits } from "../src/sentry/releasePipeline"; import { BuildContext } from "../src/types"; const mockedAddSpanToTxn = jest.fn(); @@ -29,6 +29,7 @@ describe("Release Pipeline", () => { const mockedCLI = { releases: { setCommits: jest.fn(), + newDeploy: jest.fn(), }, }; @@ -38,7 +39,7 @@ describe("Release Pipeline", () => { const ctx = { cli: mockedCLI, logger: mockedLogger }; describe("setCommits", () => { - it("doesn't do anything if setCommits option is not specified", async () => { + it("doesn't do anything if `setCommits` option is not specified", async () => { await setCommits({} as InternalOptions, ctx as unknown as BuildContext); expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); @@ -68,4 +69,44 @@ describe("Release Pipeline", () => { expect(mockedChildSpan.finish).toHaveBeenCalled(); }); }); + + describe("addDeploy", () => { + it("doesn't do anything if `deploy` option is not specified", async () => { + await addDeploy({} as InternalOptions, ctx as unknown as BuildContext); + + expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + + it("logs an error and does nothing if `env` isn't specified", async () => { + await addDeploy({ deploy: {} } as InternalOptions, ctx as unknown as BuildContext); + expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); + expect(mockedLogger.error).toHaveBeenLastCalledWith( + expect.stringMatching(/Couldn't add deploy.*env/), + expect.stringMatching(/env/) + ); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + + it("makes a call to Sentry CLI if the correct options are specified", async () => { + const deployOptions = { + env: "production", + started: 0, + finished: 10, + name: "myDeployment", + url: "https://my-deploy-server.com", + }; + + await addDeploy( + { deploy: deployOptions, release: "1.0.0" } as InternalOptions, + ctx as unknown as BuildContext + ); + + expect(mockedCLI.releases.newDeploy).toHaveBeenCalledWith("1.0.0", deployOptions); + expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); }); diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index e549a8fe8453..d2ee7d5339ff 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -31,6 +31,10 @@ export default defineConfig({ auto: true, ignoreMissing: true, }, + deploy: { + env: "myEnv", + time: 10, + }, }), ], }); From b6e9f3465a25eb4c0f6c6e174b1ddcb4b3cf3d10 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 9 Nov 2022 10:58:41 +0100 Subject: [PATCH 082/640] ref(core): Remove customHeader conversion in internal options (#98) Previously, we coverted the user-facing `customHeader` option, typed as string to an internal option typed `Record`. This was handy for adding the header to our outgoing API requests. Since we don't do these ourselves anymore but rely on Sentry CLI, it's just easier to pass this option through to the CLI which also expects the string representation. --- .../bundler-plugin-core/src/options-mapping.ts | 18 +++++------------- packages/bundler-plugin-core/src/sentry/cli.ts | 14 ++++++++------ .../test/option-mappings.test.ts | 17 ----------------- 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 9397cfb887a6..c4a68eb210d0 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -20,13 +20,15 @@ type RequiredInternalOptions = Required< >; type OptionalInternalOptions = Partial< - Pick + Pick< + UserOptions, + "dist" | "errorHandler" | "setCommits" | "deploy" | "configFile" | "customHeader" + > >; type NormalizedInternalOptions = { entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; include: InternalIncludeEntry[]; - customHeader: Record; }; export type InternalOptions = RequiredInternalOptions & @@ -84,7 +86,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions finalize: userOptions.finalize ?? true, validate: userOptions.validate ?? false, vcsRemote: userOptions.vcsRemote ?? "origin", - customHeader: normalizeCustomHeader(userOptions.customHeader), + customHeader: userOptions.customHeader, dryRun: userOptions.dryRun ?? false, debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, @@ -134,13 +136,3 @@ function normalizeIncludeEntry( rewrite: includeEntry.rewrite ?? userOptions.rewrite ?? true, }; } - -function normalizeCustomHeader( - userCustomHeader: UserOptions["customHeader"] -): InternalOptions["customHeader"] { - if (!userCustomHeader || !userCustomHeader.includes(":")) { - return {}; - } - const [key, value] = userCustomHeader.split(/:(.*)/, 2).map((s) => s.trim()) as [string, string]; - return { [key]: value }; -} diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 5ee351663435..4abfc8b26c45 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -12,13 +12,15 @@ export type SentryCLILike = SentryCli | SentryDryRunCLI; * that makes no-ops out of most CLI operations */ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { + const { silent, org, project, authToken, url, vcsRemote, customHeader } = internalOptions; const cli = new SentryCli(internalOptions.configFile, { - silent: internalOptions.silent, - org: internalOptions.org, - project: internalOptions.project, - authToken: internalOptions.authToken, - url: internalOptions.url, - vcsRemote: internalOptions.vcsRemote, + silent, + org, + project, + authToken, + url, + vcsRemote, + customHeader, }); if (internalOptions.dryRun) { diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 861b6990074a..be19b54fa503 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -14,7 +14,6 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", cleanArtifacts: false, - customHeader: {}, debug: false, dryRun: false, finalize: true, @@ -58,7 +57,6 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", cleanArtifacts: false, - customHeader: {}, debug: false, dryRun: false, finalize: true, @@ -82,19 +80,4 @@ describe("normalizeUserOptions()", () => { vcsRemote: "origin", }); }); - - test("should convert string customHeader to internal representation", () => { - const userOptions: Options = { - org: "my-org", - project: "my-project", - authToken: "my-auth-token", - release: "my-release", - include: "dist", - customHeader: "customKey: CustomValue", - }; - - expect(normalizeUserOptions(userOptions)).toEqual( - expect.objectContaining({ customHeader: { customKey: "CustomValue" } }) - ); - }); }); From 23457930333643d10947760318c33177c0419356 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 9 Nov 2022 14:51:37 +0100 Subject: [PATCH 083/640] ref(core): Add missing and change unused options (#101) Revisit our options after checking them for completeness against the webpack plugin and Sentry CLI: * Add the missing `debug` options to the plugin and make the `logger.debug` output depend on it * Pass the previously unused `dist` option to the CLI constructor * Move the previously top-level `validate` option to `IncludeEntry` --- packages/bundler-plugin-core/src/index.ts | 1 + .../bundler-plugin-core/src/options-mapping.ts | 8 +++++--- packages/bundler-plugin-core/src/sentry/cli.ts | 9 +++++---- .../bundler-plugin-core/src/sentry/logger.ts | 11 ++++++----- .../src/sentry/releasePipeline.ts | 2 ++ packages/bundler-plugin-core/src/types.ts | 16 ++++++++-------- packages/bundler-plugin-core/test/logger.test.ts | 8 ++++---- .../test/option-mappings.test.ts | 4 ++-- 8 files changed, 33 insertions(+), 26 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 9222c733a625..4142b0d7af63 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -86,6 +86,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { hub: sentryHub, prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, silent: internalOptions.silent, + debug: internalOptions.debug, }); const cli = getSentryCli(internalOptions, logger); diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index c4a68eb210d0..9c7daaec651b 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -9,7 +9,6 @@ type RequiredInternalOptions = Required< | "url" | "release" | "finalize" - | "validate" | "vcsRemote" | "dryRun" | "debug" @@ -36,7 +35,10 @@ export type InternalOptions = RequiredInternalOptions & NormalizedInternalOptions; type RequiredInternalIncludeEntry = Required< - Pick + Pick< + UserIncludeEntry, + "paths" | "ext" | "stripCommonPrefix" | "sourceMapReference" | "rewrite" | "validate" + > >; type OptionalInternalIncludeEntry = Partial< @@ -84,7 +86,6 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions url: userOptions.url ?? "https://sentry.io/", release: userOptions.release ?? "", finalize: userOptions.finalize ?? true, - validate: userOptions.validate ?? false, vcsRemote: userOptions.vcsRemote ?? "origin", customHeader: userOptions.customHeader, dryRun: userOptions.dryRun ?? false, @@ -134,5 +135,6 @@ function normalizeIncludeEntry( stripCommonPrefix: includeEntry.stripCommonPrefix ?? userOptions.stripCommonPrefix ?? false, sourceMapReference: includeEntry.sourceMapReference ?? userOptions.sourceMapReference ?? true, rewrite: includeEntry.rewrite ?? userOptions.rewrite ?? true, + validate: includeEntry.validate ?? userOptions.validate ?? false, }; } diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 4abfc8b26c45..53aa89fddb45 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -12,14 +12,15 @@ export type SentryCLILike = SentryCli | SentryDryRunCLI; * that makes no-ops out of most CLI operations */ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { - const { silent, org, project, authToken, url, vcsRemote, customHeader } = internalOptions; + const { silent, org, project, authToken, url, vcsRemote, customHeader, dist } = internalOptions; const cli = new SentryCli(internalOptions.configFile, { - silent, + url, + authToken, org, project, - authToken, - url, vcsRemote, + dist, + silent, customHeader, }); diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index cda91a85ee70..9328cf37284e 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -1,7 +1,8 @@ import { SeverityLevel, Hub } from "@sentry/node"; interface LoggerOptions { - silent?: boolean; + silent: boolean; + debug: boolean; hub: Hub; prefix: string; } @@ -24,7 +25,7 @@ export function createLogger(options: LoggerOptions): Logger { return { info(message: string, ...params: unknown[]) { - if (!options?.silent) { + if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Info: ${message}`, ...params); } @@ -32,7 +33,7 @@ export function createLogger(options: LoggerOptions): Logger { addBreadcrumb("info", message); }, warn(message: string, ...params: unknown[]) { - if (!options?.silent) { + if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Warning: ${message}`, ...params); } @@ -40,7 +41,7 @@ export function createLogger(options: LoggerOptions): Logger { addBreadcrumb("warning", message); }, error(message: string, ...params: unknown[]) { - if (!options?.silent) { + if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Error: ${message}`, ...params); } @@ -49,7 +50,7 @@ export function createLogger(options: LoggerOptions): Logger { }, debug(message: string, ...params: unknown[]) { - if (!options?.silent) { + if (!options.silent && options.debug) { // eslint-disable-next-line no-console console.log(`${options.prefix} Debug: ${message}`, ...params); } diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index fce94afcaebb..66a72bdce1d2 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -55,6 +55,8 @@ export async function uploadSourceMaps(options: InternalOptions, ctx: BuildConte ctx.logger.info("Uploading Sourcemaps."); + // Since our internal include entries contain all top-level sourcemaps options, + // we only need to pass the include option here. await ctx.cli.releases.uploadSourceMaps(options.release, { include: options.include }); ctx.logger.info("Successfully uploaded Sourcemaps."); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index a6765ddfc4db..941ca96e90fe 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -88,14 +88,6 @@ export type Options = Omit & { */ include: string | IncludeEntry | Array; - /** - * When `true`, attempts source map validation before upload if rewriting is not enabled. - * It will spot a variety of issues with source maps and cancel the upload if any are found. - * - * Defaults to `false` as this can cause false positives. - */ - validate?: boolean; - /* --- other unimportant (for now) stuff- properties: */ /** @@ -261,6 +253,14 @@ export type IncludeEntry = { * Defaults to true */ rewrite?: boolean; + + /** + * When `true`, attempts source map validation before upload if rewriting is not enabled. + * It will spot a variety of issues with source maps and cancel the upload if any are found. + * + * Defaults to `false` as this can cause false positives. + */ + validate?: boolean; }; type SetCommitsOptions = { diff --git a/packages/bundler-plugin-core/test/logger.test.ts b/packages/bundler-plugin-core/test/logger.test.ts index 27b0508d0dd6..e4140ef8d5bc 100644 --- a/packages/bundler-plugin-core/test/logger.test.ts +++ b/packages/bundler-plugin-core/test/logger.test.ts @@ -26,7 +26,7 @@ describe("Logger", () => { ["debug", "Debug"], ] as const)(".%s() should log correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix }); + const logger = createLogger({ hub, prefix, silent: false, debug: true }); logger[loggerMethod]("Hey!"); @@ -45,7 +45,7 @@ describe("Logger", () => { ["debug", "Debug"], ] as const)(".%s() should log multiple params correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix }); + const logger = createLogger({ hub, prefix, silent: false, debug: true }); logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); @@ -65,9 +65,9 @@ describe("Logger", () => { }); describe("doesn't log when `silent` option is `true`", () => { - it.each(["info", "warn", "error"] as const)(".%s()", (loggerMethod) => { + it.each(["info", "warn", "error", "debug"] as const)(".%s()", (loggerMethod) => { const prefix = "[some-prefix]"; - const logger = createLogger({ silent: true, hub, prefix }); + const logger = createLogger({ hub, prefix, silent: true, debug: true }); logger[loggerMethod]("Hey!"); diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index be19b54fa503..8267bc29aef5 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -25,6 +25,7 @@ describe("normalizeUserOptions()", () => { rewrite: true, sourceMapReference: true, stripCommonPrefix: false, + validate: false, }, ], org: "my-org", @@ -33,7 +34,6 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, url: "https://sentry.io/", - validate: false, vcsRemote: "origin", }); }); @@ -68,6 +68,7 @@ describe("normalizeUserOptions()", () => { rewrite: true, sourceMapReference: false, stripCommonPrefix: true, + validate: false, }, ], org: "my-org", @@ -76,7 +77,6 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, url: "https://sentry.io/", - validate: false, vcsRemote: "origin", }); }); From 3ecb9ff3caa83c171c000a0ab5b82029de29f9a6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 9 Nov 2022 14:58:07 +0100 Subject: [PATCH 084/640] feat(core): Add `SENTRY_RELEASES` variable during release injection (#102) Add injection of `SENTRY_RELEASES` variable if `injectReleasesMap` option was set to `true`. - Introduce `injectReleasesMap` option - Add map map injection to release injection code generation and make it depend on `injectReleasesMap` - Add integration test to verify behaviour --- MIGRATION.md | 6 +++ packages/bundler-plugin-core/src/index.ts | 31 +++++++++++++-- .../src/options-mapping.ts | 2 + packages/bundler-plugin-core/src/types.ts | 9 +++++ .../test/option-mappings.test.ts | 2 + .../releases-injection/input/entrypoint.js | 2 + .../releases-injection.test.ts | 38 +++++++++++++++++++ .../fixtures/releases-injection/setup.ts | 15 ++++++++ 8 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 packages/integration-tests/fixtures/releases-injection/input/entrypoint.js create mode 100644 packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts create mode 100644 packages/integration-tests/fixtures/releases-injection/setup.ts diff --git a/MIGRATION.md b/MIGRATION.md index 81d0ec6896fb..5963841afb41 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -48,3 +48,9 @@ In version 2 we removed this functionality because it lead to intransparent nami Going forward, if you need similar functionality, we recommend providing folder paths in the `include` and `include.paths` options and narrowing down the matched files with the `ignore`, `ignoreFile` or `ext` options. The `ignore` and `ignoreFile` options will still allow globbing patterns. + +### Injecting `SENTRY_RELEASES` Map + +Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into the global object which would map from `project@org` to the `release` value. In version 2, we made this behaviour opt-in by setting the `injectReleasesMap` option in the plugin options to `true`. + +The purpose of this option is to support module-federated projects or micro frontend setups where multiple projects would want to access the global release variable. However, Sentry SDKs by default never accessed this variable so it would require manual user-intervention to make use of it. Making this behaviour opt-in decreases the bundle size impact of our plugin for the majority of users. diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 4142b0d7af63..a371e3d72161 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -185,7 +185,12 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }); if (id === RELEASE_INJECTOR_ID) { - return generateGlobalInjectorCode({ release: internalOptions.release }); + return generateGlobalInjectorCode({ + release: internalOptions.release, + injectReleasesMap: internalOptions.injectReleasesMap, + org: internalOptions.org, + project: internalOptions.project, + }); } else { return undefined; } @@ -320,10 +325,20 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * Generates code for the "sentry-release-injector" which is responsible for setting the global `SENTRY_RELEASE` * variable. */ -function generateGlobalInjectorCode({ release }: { release: string }) { +function generateGlobalInjectorCode({ + release, + injectReleasesMap, + org, + project, +}: { + release: string; + injectReleasesMap: boolean; + org?: string; + project?: string; +}) { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - return ` + let code = ` var _global = typeof window !== 'undefined' ? window : @@ -334,6 +349,16 @@ function generateGlobalInjectorCode({ release }: { release: string }) { {}; _global.SENTRY_RELEASE={id:"${release}"};`; + + if (injectReleasesMap && project) { + const key = org ? `${project}@${org}` : project; + code += ` + _global.SENTRY_RELEASES=_global.SENTRY_RELEASES || {}; + _global.SENTRY_RELEASES["${key}"]={id:"${release}"}; + `; + } + + return code; } // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 9c7daaec651b..8485f22e106f 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -15,6 +15,7 @@ type RequiredInternalOptions = Required< | "silent" | "cleanArtifacts" | "telemetry" + | "injectReleasesMap" > >; @@ -100,6 +101,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions entries, include, configFile: userOptions.configFile, + injectReleasesMap: userOptions.injectReleasesMap ?? false, }; } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 941ca96e90fe..540599787c7c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -179,6 +179,15 @@ export type Options = Omit & { * defaults from ~/.sentryclirc are always loaded */ configFile?: string; + + /** + * If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that + * maps from `{org}@{project}` to the `release` value. This might be helpful for webpack + * module federation or micro frontend setups. + * + * Defaults to `false` + */ + injectReleasesMap?: boolean; }; export type IncludeEntry = { diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 8267bc29aef5..f440b9f5ed21 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -35,6 +35,7 @@ describe("normalizeUserOptions()", () => { telemetry: true, url: "https://sentry.io/", vcsRemote: "origin", + injectReleasesMap: false, }); }); @@ -78,6 +79,7 @@ describe("normalizeUserOptions()", () => { telemetry: true, url: "https://sentry.io/", vcsRemote: "origin", + injectReleasesMap: false, }); }); }); diff --git a/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js b/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js new file mode 100644 index 000000000000..1f0821b87781 --- /dev/null +++ b/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call +process.stdout.write(global.SENTRY_RELEASES["releasesProject@releasesOrg"].id.toString()); diff --git a/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts b/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts new file mode 100644 index 000000000000..7d889cece802 --- /dev/null +++ b/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts @@ -0,0 +1,38 @@ +import childProcess from "child_process"; +import path from "path"; + +/** + * Runs a node file in a seprate process. + * + * @param bundlePath Path of node file to run + * @returns Stdout of the process + */ +function checkBundle(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput).toBe("I AM A RELEASE!"); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/esbuild/index.js")); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/rollup/index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/vite/index.js")); +}); + +test("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")); +}); diff --git a/packages/integration-tests/fixtures/releases-injection/setup.ts b/packages/integration-tests/fixtures/releases-injection/setup.ts new file mode 100644 index 000000000000..8807e676049e --- /dev/null +++ b/packages/integration-tests/fixtures/releases-injection/setup.ts @@ -0,0 +1,15 @@ +import { Options } from "@sentry/bundler-plugin-core"; +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPointPath = path.resolve(__dirname, "./input/entrypoint.js"); +const outputDir = path.resolve(__dirname, "./out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + release: "I AM A RELEASE!", + project: "releasesProject", + org: "releasesOrg", + include: outputDir, + dryRun: true, + injectReleasesMap: true, +} as Options); From d0188bcd7dda4a540e9c392d2f8fcd65f05b6919 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 10 Nov 2022 15:36:04 +0100 Subject: [PATCH 085/640] chore(core): Adjust `MIGRATION.md` after CLI reintroduction (#105) Remove the sections about more required options, env variables and the config file --- MIGRATION.md | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 5963841afb41..04bba739c033 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -2,53 +2,27 @@ This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins. -## [Unreleased] Upgrading from 1.x to 2.x +## [Unreleased] Upgrading from 1.x to 2.x (Webpack Plugin Only) -Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1. -Version 2 no longer requires `sentry-cli` underneath, meaning the plugin no longer downloads a binary but implements all its functionality natively. - -### Removal of Implicit Environment Variable Usage - -Version 2 of the Webpack plugin removes the implicit passing of plugin parameters via environment variables. -Previously, it was possible to specify values as environment variables, such as SENTRY_AUTH_TOKEN, but to never mention them in the plugin init options. -In this version, you'll have to specify these values in the options. -Note that this makes certain option fields explicitly required now which were previously only implicitly required (see [Initialization and Required Values](#initialization-and-required-values)). +Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1, relying on bundler-agnostic code (based on [unjs/unplugin](https://github.com/unjs/unplugin)). While we tried to keep changes to v1 of the webpack plugin minimal, a adjustments are nevertheless necessary: ### Initialization and Required Values Previously, to use the plugin, you had to create a new class of the `SentryCLIPlugin` class. -In version 2, you simply need to call a function and pass the initialization options to it. -Note that in this new version, more options are now explicitly required. Here's an example: +In version 2, you simply need to call a function and pass the initialization options to it: ```js -// old config + environment variables were set for authToken, org and project +// old initialization: new SentryCliPlugin({ include: "./dist", }); -// new config (you can still use env variables but you need to set them explicitly): +// new initialization: sentryWebpackPlugin({ include: "./dist", - authToken: process.env.SENTRY_AUTH_TOKEN, - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, }); ``` -### Removal of `configFile` option - -Previously, you could set the `configFile` option when initializing the plugin to point `sentry-cli` to its `.sentryclirc` config. -Because `sentry-cli` is no longer part of the plugin, this is option was removed. -If you previously used this option, make sure to specify all required options when intializing the plugin (see [Initialization and Required Values](#initialization-and-required-values)). - -### Removal of globbing - -Previously it was possible to glob for files to include in the sourcemap upload (e.g. `include: "./my-build-dir/**"`). -In version 2 we removed this functionality because it lead to intransparent naming of release artifacts. - -Going forward, if you need similar functionality, we recommend providing folder paths in the `include` and `include.paths` options and narrowing down the matched files with the `ignore`, `ignoreFile` or `ext` options. -The `ignore` and `ignoreFile` options will still allow globbing patterns. - ### Injecting `SENTRY_RELEASES` Map Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into the global object which would map from `project@org` to the `release` value. In version 2, we made this behaviour opt-in by setting the `injectReleasesMap` option in the plugin options to `true`. From ce610f99a66f03f5a9a855f0dd439a5fc639e6c0 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 10 Nov 2022 17:57:16 +0100 Subject: [PATCH 086/640] ref(core): Make various user and internal options optional (#103) Adjust some user-facing and internal options from being strictly required to being optional. The reason for this change is that with the introduction of Sentry CLI, we can (and for feature parity should) let users either use env variables or specify some values via a `.sentryclirc` config file. Note that for release injection to work properly, users have to specify `project`, `org` and `release` either via the options or via env variables. The reason is that the config file which could also hold these options is only later used by Sentry CLI. This behaviour is identical to what we do in the webpack plugin. --- .../src/options-mapping.ts | 127 +++++++++++------- .../src/sentry/releasePipeline.ts | 9 -- packages/bundler-plugin-core/src/types.ts | 20 ++- packages/bundler-plugin-core/src/utils.ts | 9 ++ .../test/option-mappings.test.ts | 4 - 5 files changed, 104 insertions(+), 65 deletions(-) create mode 100644 packages/bundler-plugin-core/src/utils.ts diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 8485f22e106f..6c6ef503bb59 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,15 +1,11 @@ import { IncludeEntry as UserIncludeEntry, Options as UserOptions } from "./types"; +import { arrayify } from "./utils"; type RequiredInternalOptions = Required< Pick< UserOptions, - | "org" - | "project" - | "authToken" - | "url" | "release" | "finalize" - | "vcsRemote" | "dryRun" | "debug" | "silent" @@ -22,7 +18,17 @@ type RequiredInternalOptions = Required< type OptionalInternalOptions = Partial< Pick< UserOptions, - "dist" | "errorHandler" | "setCommits" | "deploy" | "configFile" | "customHeader" + | "org" + | "project" + | "authToken" + | "url" + | "vcsRemote" + | "dist" + | "errorHandler" + | "setCommits" + | "deploy" + | "configFile" + | "customHeader" > >; @@ -52,59 +58,88 @@ export type InternalIncludeEntry = RequiredInternalIncludeEntry & }; export function normalizeUserOptions(userOptions: UserOptions): InternalOptions { - let entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; - if (userOptions.entries === undefined) { - entries = undefined; - } else if (typeof userOptions.entries === "function" || Array.isArray(userOptions.entries)) { - entries = userOptions.entries; - } else { - entries = [userOptions.entries]; - } - - let userInclude: UserIncludeEntry[]; - if (typeof userOptions.include === "string") { - userInclude = [convertIncludePathToIncludeEntry(userOptions.include)]; - } else if (Array.isArray(userOptions.include)) { - userInclude = userOptions.include.map((potentialIncludeEntry) => { - if (typeof potentialIncludeEntry === "string") { - return convertIncludePathToIncludeEntry(potentialIncludeEntry); - } else { - return potentialIncludeEntry; - } - }); - } else { - userInclude = [userOptions.include]; - } + return { + // include is the only strictly required option + // (normalizeInclude needs all userOptions to access top-level include options) + include: normalizeInclude(userOptions), - const include = userInclude.map((userIncludeEntry) => - normalizeIncludeEntry(userOptions, userIncludeEntry) - ); + // These options must be set b/c we need them for release injection. + // They can also be set as environment variables. Technically, they + // could be set in the config file but this would be too late for + // release injection because we only pass the config file path + // to the CLI + org: userOptions.org ?? process.env["SENTRY_ORG"], + project: userOptions.project ?? process.env["SENTRY_PROJECT"], + // Falling back to the empty string here b/c at a later point, we use + // Sentry CLI to determine a release if none was specified via options + // or env vars. In case we don't find one, we'll bail at that point. + release: userOptions.release ?? process.env["SENTRY_RELEASE"] ?? "", - return { - org: userOptions.org, - project: userOptions.project, - authToken: userOptions.authToken, - url: userOptions.url ?? "https://sentry.io/", - release: userOptions.release ?? "", + // Options with default values finalize: userOptions.finalize ?? true, - vcsRemote: userOptions.vcsRemote ?? "origin", - customHeader: userOptions.customHeader, + cleanArtifacts: userOptions.cleanArtifacts ?? false, dryRun: userOptions.dryRun ?? false, debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, - cleanArtifacts: userOptions.cleanArtifacts ?? false, telemetry: userOptions.telemetry ?? true, - dist: userOptions.dist, - errorHandler: userOptions.errorHandler, + injectReleasesMap: userOptions.injectReleasesMap ?? false, + + // These options and can also be set via env variables or the config file. + // If they're set in the options, we simply pass them to the CLI constructor. + // Sentry CLI will internally query env variables and read its config file if + // the passed options are undefined. + authToken: userOptions.authToken, // env var: `SENTRY_AUTH_TOKEN` + customHeader: userOptions.customHeader, // env var: `CUSTOM_HEADER` + url: userOptions.url, // env var: `SENTRY_URL` + vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` + + // Optional options setCommits: userOptions.setCommits, deploy: userOptions.deploy, - entries, - include, + entries: normalizeEntries(userOptions.entries), + dist: userOptions.dist, + errorHandler: userOptions.errorHandler, configFile: userOptions.configFile, - injectReleasesMap: userOptions.injectReleasesMap ?? false, }; } +/** + * Converts the user-facing `entries` option to the internal `entries` option + */ +function normalizeEntries( + userEntries: UserOptions["entries"] +): (string | RegExp)[] | ((filePath: string) => boolean) | undefined { + if (userEntries === undefined) { + return undefined; + } else if (typeof userEntries === "function") { + return userEntries; + } else { + return arrayify(userEntries); + } +} + +/** + * Converts the user-facing `include` option to the internal `include` option, + * resulting in an array of `InternalIncludeEntry` objects. This later on lets us + * work with only one type of include data structure instead of multiple. + * + * During the process, we hoist top-level include options (e.g. urlPrefix) into each + * object if they were not alrady specified in an `IncludeEntry`, making every object + * fully self-contained. This is also the reason why we pass the entire options + * object and not just `include`. + * + * @param userOptions the entire user-facing `options` object + * + * @return an array of `InternalIncludeEntry` objects. + */ +function normalizeInclude(userOptions: UserOptions): InternalIncludeEntry[] { + return arrayify(userOptions.include) + .map((includeItem) => + typeof includeItem === "string" ? convertIncludePathToIncludeEntry(includeItem) : includeItem + ) + .map((userIncludeEntry) => normalizeIncludeEntry(userOptions, userIncludeEntry)); +} + function convertIncludePathToIncludeEntry(includePath: string): UserIncludeEntry { return { paths: [includePath], diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 66a72bdce1d2..1a4650d2ba81 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -20,9 +20,6 @@ export async function createNewRelease(options: InternalOptions, ctx: BuildConte } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not create release.'); return; - } else if (options.url === undefined) { - ctx.logger.warn('Missing "url" option. Will not create release.'); - return; } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not create release.'); return; @@ -45,9 +42,6 @@ export async function uploadSourceMaps(options: InternalOptions, ctx: BuildConte } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not create release.'); return Promise.resolve(); - } else if (options.url === undefined) { - ctx.logger.warn('Missing "url" option. Will not create release.'); - return Promise.resolve(); } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not create release.'); return Promise.resolve(); @@ -86,9 +80,6 @@ export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext } else if (options.org === undefined) { ctx.logger.warn('Missing "org" option. Will not clean existing artifacts.'); return; - } else if (options.url === undefined) { - ctx.logger.warn('Missing "url" option. Will not clean existing artifacts.'); - return; } else if (options.project === undefined) { ctx.logger.warn('Missing "project" option. Will not clean existing artifacts.'); return; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 540599787c7c..07ebe6c58b74 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -12,30 +12,32 @@ export type Options = Omit & { /** * The slug of the Sentry organization associated with the app. * - * This is a required field. + * This value can also be set via the `SENTRY_ORG` env variable. */ - org: string; + org?: string; /** * The slug of the Sentry project associated with the app. * - * This is a required field. + * This value can also be set via the `SENTRY_PROJECT` env variable. */ - project: string; + project?: string; /** * The authentication token to use for all communication with Sentry. * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. * Required scopes: project:releases (and org:read if setCommits option is used). * - * This is a required field. + * This value can also be set via the `SENTRY_AUTH_TOKEN` env variable */ - authToken: string; + authToken?: string; /** * The base URL of your Sentry instance. Use this if you are using a self-hosted * or Sentry instance other than sentry.io. * + * This value can also be set via the `SENTRY_URL` env variable. + * * Defaults to https://sentry.io/, which is the correct value for SAAS customers. */ url?: string; @@ -45,6 +47,8 @@ export type Options = Omit & { /** * Unique identifier for the release. * + * This value can also be set via the `SENTRY_RELEASE` env variable. + * * Defaults to the output of the sentry-cli releases propose-version command, * which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, * Xcode, and Gradle, and otherwise uses HEAD's commit SHA. (For HEAD option, @@ -93,6 +97,8 @@ export type Options = Omit & { /** * Version control system remote name. * + * This value can also be set via the `SENTRY_VSC_REMOTE` env variable. + * * Defaults to 'origin'. */ vcsRemote?: string; @@ -100,6 +106,8 @@ export type Options = Omit & { /** * A header added to every outgoing network request. * The format should be `header-key: header-value`. + * + * This value can also be set via the `CUSTOM_HEADER` env variable. */ customHeader?: string; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts new file mode 100644 index 000000000000..3027ff001d9a --- /dev/null +++ b/packages/bundler-plugin-core/src/utils.ts @@ -0,0 +1,9 @@ +/** + * Checks whether the given input is already an array, and if it isn't, wraps it in one. + * + * @param maybeArray Input to turn into an array, if necessary + * @returns The input, if already an array, or an array with the input as the only element, if not + */ +export function arrayify(maybeArray: T | T[]): T[] { + return Array.isArray(maybeArray) ? maybeArray : [maybeArray]; +} diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index f440b9f5ed21..22fac3b20e31 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -33,8 +33,6 @@ describe("normalizeUserOptions()", () => { release: "my-release", silent: false, telemetry: true, - url: "https://sentry.io/", - vcsRemote: "origin", injectReleasesMap: false, }); }); @@ -77,8 +75,6 @@ describe("normalizeUserOptions()", () => { release: "my-release", silent: false, telemetry: true, - url: "https://sentry.io/", - vcsRemote: "origin", injectReleasesMap: false, }); }); From 46ba891b7e5648e4b9f83e7f301d8fcbee5c1ca3 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 11 Nov 2022 10:40:41 +0100 Subject: [PATCH 087/640] ref(core): Refactor options validation (#104) Refactor the validation logic of the plugin options. Since Sentry CLI does most of the validation work out of the box, we only need to take care of a few special cases. Therefore: * Delete the ugly and duplicated org, project, auth, etc. checks in the release pipeline steps as most of them aren't necessary at all in that form * Add a centralized validation function that validates certain combinations of options that Sentry CLI doesn't do (these validations are also present in the webpack plugin, albeit in a little different form) * Add special validation of the `release` value as it simply has to be present to continue with release injection and the release creation pipeline * All validation errors will cause the plugin to throw unless the user specified an error handler. Happy to discuss this point but I think it makes sense to only continue with valid options. --- packages/bundler-plugin-core/src/index.ts | 64 +++++++++---- .../src/options-mapping.ts | 51 ++++++++++ .../src/sentry/releasePipeline.ts | 92 ++++--------------- .../src/sentry/telemetry.ts | 9 +- packages/bundler-plugin-core/src/types.ts | 59 +++++++----- .../test/option-mappings.test.ts | 84 ++++++++++++++++- .../test/releasePipeline.test.ts | 22 ----- .../playground/vite.config.smallNodeApp.js | 3 +- 8 files changed, 236 insertions(+), 148 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a371e3d72161..67d5b1d2ff32 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -12,9 +12,10 @@ import { import "@sentry/tracing"; import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; -import { createLogger } from "./sentry/logger"; -import { normalizeUserOptions } from "./options-mapping"; +import { createLogger, Logger } from "./sentry/logger"; +import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; +import { Hub } from "@sentry/node"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. // This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. @@ -78,8 +79,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const { hub: sentryHub } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - internalOptions.telemetry, - internalOptions.org + internalOptions.telemetry ); const logger = createLogger({ @@ -89,6 +89,15 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { debug: internalOptions.debug, }); + if (!validateOptions(internalOptions, logger)) { + handleError( + new Error("Options were not set correctly. See output above for more details."), + logger, + internalOptions.errorHandler, + sentryHub + ); + } + const cli = getSentryCli(internalOptions, logger); if (internalOptions.telemetry) { @@ -125,6 +134,18 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { internalOptions.release = await cli.releases.proposeVersion(); } + // At this point, we either have determined a release or we have to bail + if (!internalOptions.release) { + handleError( + new Error( + "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" + ), + logger, + internalOptions.errorHandler, + sentryHub + ); + } + transaction = sentryHub.startTransaction({ op: "function.plugin", name: "Sentry Bundler Plugin execution", @@ -282,12 +303,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { level: "info", }); - //TODO: - // 1. validate options to see if we get a valid include property, release name, etc. - // 2. normalize the include property: Users can pass string | string [] | IncludeEntry[]. - // That's good for them but a hassle for us. Let's try to normalize this into one data type - // (I vote IncludeEntry[]) and continue with that down the line - const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; createNewRelease(internalOptions, ctx) @@ -298,16 +313,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { .then(() => addDeploy(internalOptions, ctx)) .then(() => transaction?.setStatus("ok")) .catch((e: Error) => { - captureMinimalError(e, sentryHub); transaction?.setStatus("cancelled"); - - logger.error(e.message); - - if (internalOptions.errorHandler) { - internalOptions.errorHandler(e); - } else { - throw e; - } + handleError(e, logger, internalOptions.errorHandler, sentryHub); }) .finally(() => { sentryHub.addBreadcrumb({ @@ -321,6 +328,25 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }; }); +function handleError( + error: Error, + logger: Logger, + errorHandler: InternalOptions["errorHandler"], + sentryHub?: Hub +) { + logger.error(error.message); + + if (sentryHub) { + captureMinimalError(error, sentryHub); + } + + if (errorHandler) { + errorHandler(error); + } else { + throw error; + } +} + /** * Generates code for the "sentry-release-injector" which is responsible for setting the global `SENTRY_RELEASE` * variable. diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 6c6ef503bb59..ed113ba2ec11 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,3 +1,4 @@ +import { Logger } from "./sentry/logger"; import { IncludeEntry as UserIncludeEntry, Options as UserOptions } from "./types"; import { arrayify } from "./utils"; @@ -175,3 +176,53 @@ function normalizeIncludeEntry( validate: includeEntry.validate ?? userOptions.validate ?? false, }; } + +/** + * Validates a few combinations of options that are not checked by Sentry CLI. + * + * For all other options, we can rely on Sentry CLI to validate them. In fact, + * we can't validate them in the plugin because Sentry CLI might pick up options from + * its config file. + * + * @param options the internal options + * @param logger the logger + * + * @returns `true` if the options are valid, `false` otherwise + */ +export function validateOptions(options: InternalOptions, logger: Logger): boolean { + if (options.injectReleasesMap && !options.org) { + logger.error( + "The `injectReleasesMap` option was set but it is only supported when the `org` option is also specified.", + "Please set the `org` option (you can also set the SENTRY_ORG environment variable) or disable the `injectReleasesMap` option." + ); + return false; + } + + const setCommits = options.setCommits; + if (setCommits) { + if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) { + logger.error( + "The `setCommits` option was specified but is missing required properties.", + "Please set either `auto` or both, `repo` and `commit`." + ); + return false; + } + if (setCommits.auto && setCommits.repo && setCommits) { + logger.warn( + "The `setCommits` options includes `auto` but also `repo` and `commit`.", + "Ignoring `repo` and `commit`.", + "Please only set either `auto` or both, `repo` and `commit`." + ); + } + } + + if (options.deploy && !options.deploy.env) { + logger.error( + "The `deploy` option was specified but is missing the required `env` property.", + "Please set the `env` property." + ); + return false; + } + + return true; +} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 1a4650d2ba81..6949ed19137a 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -13,40 +13,14 @@ import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.create_release"); - // TODO: pull these checks out of here and simplify them - if (options.authToken === undefined) { - ctx.logger.warn('Missing "authToken" option. Will not create release.'); - return; - } else if (options.org === undefined) { - ctx.logger.warn('Missing "org" option. Will not create release.'); - return; - } else if (options.project === undefined) { - ctx.logger.warn('Missing "project" option. Will not create release.'); - return; - } - await ctx.cli.releases.new(options.release); ctx.logger.info("Successfully created release."); - span?.finish(); } export async function uploadSourceMaps(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); - - // TODO: pull these checks out of here and simplify them - if (options.authToken === undefined) { - ctx.logger.warn('Missing "authToken" option. Will not create release.'); - return Promise.resolve(); - } else if (options.org === undefined) { - ctx.logger.warn('Missing "org" option. Will not create release.'); - return Promise.resolve(); - } else if (options.project === undefined) { - ctx.logger.warn('Missing "project" option. Will not create release.'); - return Promise.resolve(); - } - ctx.logger.info("Uploading Sourcemaps."); // Since our internal include entries contain all top-level sourcemaps options, @@ -54,7 +28,6 @@ export async function uploadSourceMaps(options: InternalOptions, ctx: BuildConte await ctx.cli.releases.uploadSourceMaps(options.release, { include: options.include }); ctx.logger.info("Successfully uploaded Sourcemaps."); - span?.finish(); } @@ -73,20 +46,7 @@ export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); if (options.cleanArtifacts) { - // TODO: pull these checks out of here and simplify them - if (options.authToken === undefined) { - ctx.logger.warn('Missing "authToken" option. Will not clean existing artifacts.'); - return; - } else if (options.org === undefined) { - ctx.logger.warn('Missing "org" option. Will not clean existing artifacts.'); - return; - } else if (options.project === undefined) { - ctx.logger.warn('Missing "project" option. Will not clean existing artifacts.'); - return; - } - await ctx.cli.releases.execute(["releases", "files", options.release, "delete", "--all"], true); - ctx.logger.info("Successfully cleaned previous artifacts."); } @@ -99,22 +59,16 @@ export async function setCommits(options: InternalOptions, ctx: BuildContext): P if (options.setCommits) { const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; - if (auto || (repo && commit)) { - await ctx.cli.releases.setCommits(options.release, { - commit, - previousCommit, - repo, - auto, - ignoreMissing, - ignoreEmpty, - }); - ctx.logger.info("Successfully set commits."); - } else { - ctx.logger.error( - "Couldn't set commits - neither the `auto` nor the `repo` and `commit` options were specified!", - "Make sure to either set `auto` to `true` or to manually set `repo` and `commit`." - ); - } + await ctx.cli.releases.setCommits(options.release, { + commit, + previousCommit, + repo, + auto, + ignoreMissing, + ignoreEmpty, + }); + + ctx.logger.info("Successfully set commits."); } span?.finish(); @@ -126,22 +80,16 @@ export async function addDeploy(options: InternalOptions, ctx: BuildContext): Pr if (options.deploy) { const { env, started, finished, time, name, url } = options.deploy; - if (env) { - await ctx.cli.releases.newDeploy(options.release, { - env, - started, - finished, - time, - name, - url, - }); - ctx.logger.info("Successfully added deploy."); - } else { - ctx.logger.error( - "Couldn't add deploy - the `env` option was not specified!", - "Make sure to set `deploy.env` (e.g. to 'production')." - ); - } + await ctx.cli.releases.newDeploy(options.release, { + env, + started, + finished, + time, + name, + url, + }); + + ctx.logger.info("Successfully added deploy."); } span?.finish(); diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index d33003caa1fc..99ceee34b613 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -12,8 +12,7 @@ import { BuildContext } from "../types"; export function makeSentryClient( dsn: string, - telemetryEnabled: boolean, - org?: string + telemetryEnabled: boolean ): { client: NodeClient; hub: Hub } { const client = new NodeClient({ dsn, @@ -34,12 +33,6 @@ export function makeSentryClient( const hub = new Hub(client); - hub.configureScope((scope) => { - if (org) { - scope.setTag("org", org); - } - }); - //TODO: This call is problematic because as soon as we set our hub as the current hub // we might interfere with other plugins that use Sentry. However, for now, we'll // leave it in because without it, we can't get distributed traces (which are pretty nice) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 07ebe6c58b74..a58de91d0472 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -280,31 +280,7 @@ export type IncludeEntry = { validate?: boolean; }; -type SetCommitsOptions = { - /** - * Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` - * and `previousCommit` as described in the option's documentation. - * - * If you set this to `true`, manually specified `commit` and `previousCommit` - * options will be overridden. It is best to not specify them at all if you - * set this option to `true`. - */ - auto?: boolean; - - /** - * The full repo name as defined in Sentry. - * - * Required if `auto` option is not set to `true`. - */ - repo?: string; - - /** - * The current (last) commit in the release. - * - * Required if `auto` option is not set to `true`. - */ - commit?: string; - +type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { /** * The commit before the beginning of this release (in other words, * the last commit of the previous release). @@ -333,6 +309,39 @@ type SetCommitsOptions = { ignoreEmpty?: boolean; }; +type AutoSetCommitsOptions = { + /** + * Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` + * and `previousCommit` as described in the option's documentation. + * + * If you set this to `true`, manually specified `commit` and `previousCommit` + * options will be overridden. It is best to not specify them at all if you + * set this option to `true`. + */ + auto: true; + + repo?: undefined; + commit?: undefined; +}; + +type ManualSetCommitsOptions = { + auto?: false | undefined; + + /** + * The full repo name as defined in Sentry. + * + * Required if `auto` option is not set to `true`. + */ + repo: string; + + /** + * The current (last) commit in the release. + * + * Required if `auto` option is not set to `true`. + */ + commit: string; +}; + type DeployOptions = { /** * Environment for this release. Values that make sense here would diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 22fac3b20e31..6374a684913a 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -1,5 +1,5 @@ import { Options } from "../src"; -import { normalizeUserOptions } from "../src/options-mapping"; +import { InternalOptions, normalizeUserOptions, validateOptions } from "../src/options-mapping"; describe("normalizeUserOptions()", () => { test("should return correct value for default input", () => { @@ -79,3 +79,85 @@ describe("normalizeUserOptions()", () => { }); }); }); + +describe("validateOptions", () => { + const mockedLogger = { + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + }; + + afterEach(() => { + jest.resetAllMocks(); + }); + + it("should return `false` if `injectRelease` is `true` but org is not provided", () => { + const options = { injectReleasesMap: true } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(mockedLogger.error).toHaveBeenCalledWith( + expect.stringMatching(/injectReleasesMap.*org/), + expect.stringMatching(/set.*org.*injectReleasesMap/) + ); + }); + + it("should return `true` if `injectRelease` is `true` and org is provided", () => { + const options = { injectReleasesMap: true, org: "my-org" } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); + + it("should return `false` if `setCommits` is set but neither auto nor manual options are set", () => { + const options = { setCommits: {} } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(mockedLogger.error).toHaveBeenCalledWith( + expect.stringMatching(/setCommits.*missing.*properties/), + expect.stringMatching(/set.*either.*auto.*repo.*commit/) + ); + }); + + it("should return `true` but warn if `setCommits` is set and both auto nor manual options are set", () => { + const options = { setCommits: { auto: true, repo: "myRepo", commit: "myCommit" } }; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + expect(mockedLogger.warn).toHaveBeenCalledWith( + expect.stringMatching(/setCommits.*auto.*repo.*commit/), + expect.stringMatching(/Ignoring.*repo.*commit/), + expect.stringMatching(/set.*either.*auto.*repo.*commit/) + ); + }); + + it("should return `false` if `deploy`is set but `env` is not provided", () => { + const options = { deploy: {} } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(mockedLogger.error).toHaveBeenCalledWith( + expect.stringMatching(/deploy.*missing.*property/), + expect.stringMatching(/set.*env/) + ); + }); + + it("should return `true` if `deploy`is set and `env` is provided", () => { + const options = { deploy: { env: "my-env" } } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); + + it("should return `true` for options without special cases", () => { + const options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + include: [{}], + finalize: true, + } as Partial; + + expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/bundler-plugin-core/test/releasePipeline.test.ts b/packages/bundler-plugin-core/test/releasePipeline.test.ts index 5b10f4cdf9d3..5309adc26f23 100644 --- a/packages/bundler-plugin-core/test/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/releasePipeline.test.ts @@ -47,17 +47,6 @@ describe("Release Pipeline", () => { expect(mockedChildSpan.finish).toHaveBeenCalled(); }); - it("logs an error if neither `auto` nor `repo` && `commit` options are specified", async () => { - await setCommits({ setCommits: {} } as InternalOptions, ctx as unknown as BuildContext); - expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); - expect(mockedLogger.error).toHaveBeenLastCalledWith( - expect.stringMatching(/Couldn't set commits.*auto.*repo.*commit/), - expect.stringMatching(/.*auto.*repo.*commit/) - ); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - it("makes a call to Sentry CLI if the correct options are specified", async () => { await setCommits( { setCommits: { auto: true }, release: "1.0.0" } as InternalOptions, @@ -79,17 +68,6 @@ describe("Release Pipeline", () => { expect(mockedChildSpan.finish).toHaveBeenCalled(); }); - it("logs an error and does nothing if `env` isn't specified", async () => { - await addDeploy({ deploy: {} } as InternalOptions, ctx as unknown as BuildContext); - expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); - expect(mockedLogger.error).toHaveBeenLastCalledWith( - expect.stringMatching(/Couldn't add deploy.*env/), - expect.stringMatching(/env/) - ); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - it("makes a call to Sentry CLI if the correct options are specified", async () => { const deployOptions = { env: "production", diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index d2ee7d5339ff..b8d48b670579 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -28,7 +28,8 @@ export default defineConfig({ ignore: ["!out/vite-smallNodeApp/index.js.map"], ignoreFile: ".sentryignore", setCommits: { - auto: true, + repo: "", + commit: "", ignoreMissing: true, }, deploy: { From 8661b6a426311ae252afbcff7ec6f6e51151d5f2 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 11 Nov 2022 10:56:27 +0100 Subject: [PATCH 088/640] chore: Setup volta (#107) * chore: Setup volta * chore(ci): make CI use volta --- .github/workflows/checks.yml | 36 +++++------------------ package.json | 4 +++ packages/bundler-plugin-core/package.json | 6 ++++ packages/e2e-tests/package.json | 3 ++ packages/esbuild-plugin/package.json | 6 ++++ packages/eslint-configs/package.json | 3 ++ packages/integration-tests/package.json | 3 ++ packages/playground/package.json | 3 ++ packages/rollup-plugin/package.json | 6 ++++ packages/vite-plugin/package.json | 6 ++++ packages/webpack-plugin/package.json | 6 ++++ 11 files changed, 54 insertions(+), 28 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6e18bbd0ee6e..af11100ff2c4 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -7,19 +7,13 @@ on: - release/** pull_request: -env: - # We pin the exact version to enforce reproducable builds with node + npm. - DEFAULT_NODE_VERSION: "16.15.1" - jobs: build: name: Build packages runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn build @@ -29,9 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn check:types @@ -40,9 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn check:formatting @@ -52,9 +42,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn test:unit @@ -64,9 +52,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn test:integration @@ -78,9 +64,7 @@ jobs: SENTRY_AUTH_TOKEN: ${{ secrets.E2E_TESTS_SENTRY_AUTH_TOKEN }} steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn test:e2e @@ -90,9 +74,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 - run: yarn --frozen-lockfile - run: yarn lint @@ -104,9 +86,7 @@ jobs: if: startsWith(github.ref, 'refs/heads/release/') steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.DEFAULT_NODE_VERSION }} + - uses: volta-cli/action@v3 # - name: Check dependency cache # uses: actions/cache@v3 # with: diff --git a/package.json b/package.json index b5e66f49a010..87883c41ee2d 100644 --- a/package.json +++ b/package.json @@ -35,5 +35,9 @@ "prettier": "^2.7.1", "pretty-quick": "^3.1.3", "npm-run-all": "^4.1.5" + }, + "volta": { + "node": "14.21.1", + "yarn": "1.22.19" } } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index e47082f1b41a..4c9369a933b4 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -66,5 +66,11 @@ "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 10" } } diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 7a21d4b63c37..eb8853d911f7 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -38,5 +38,8 @@ "vite": "3.0.0", "webpack": "5.74.0", "webpack4": "npm:webpack@4.46.0" + }, + "volta": { + "extends": "../../package.json" } } diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 6cfe1b757e0a..097b2a568467 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -61,5 +61,11 @@ "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 10" } } diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index e10030503f54..7afcb47f5f57 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -20,5 +20,8 @@ "scripts": { "clean:all": "run-s clean:deps", "clean:deps": "rimraf node_modules" + }, + "volta": { + "extends": "../../package.json" } } diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5c969d905b52..3a280d52f36c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -29,5 +29,8 @@ "vite": "3.0.0", "webpack": "5.74.0", "webpack4": "npm:webpack@4.46.0" + }, + "volta": { + "extends": "../../package.json" } } diff --git a/packages/playground/package.json b/packages/playground/package.json index 5de2792f75b1..6abd0a5c3acf 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -30,5 +30,8 @@ "vite": "3.0.0", "webpack": "5.74.0", "webpack4": "npm:webpack@4.46.0" + }, + "volta": { + "extends": "../../package.json" } } diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 22f94eeddc37..0f99956f9655 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -62,5 +62,11 @@ "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 10" } } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a700f43a3f7f..3a6c840b9a9a 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -61,5 +61,11 @@ "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 10" } } diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index aed42747a48c..e0e28f185834 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -61,5 +61,11 @@ "rimraf": "^3.0.2", "rollup": "2.75.7", "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 10" } } From d5575261069baf4bba67513e5d3e64ff6514de4a Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 11 Nov 2022 11:31:18 +0100 Subject: [PATCH 089/640] chore(core): Cleanup code and JSDocs (#108) clean up some code, left-over TODOs and adds a few JSDoc improvements --- packages/bundler-plugin-core/src/index.ts | 42 +++++++++++-------- .../src/options-mapping.ts | 8 +--- .../src/sentry/telemetry.ts | 2 - packages/bundler-plugin-core/src/types.ts | 17 ++++---- 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 67d5b1d2ff32..f066fd4496b5 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -23,28 +23,28 @@ import { Hub } from "@sentry/node"; const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; /** - * The sentry-unplugin concerns itself with two things: + * The sentry bundler plugin concerns itself with two things: * - Release injection * - Sourcemaps upload * * Release injection: * - * Per default the sentry-unpugin will inject a global `SENTRY_RELEASE` variable into the entrypoint of all bundles. On - * a technical level this is done by appending an import (`import "sentry-release-injector;"`) to all entrypoint files - * of the user code (see `transformInclude` and `transform` hooks). This import is then resolved by the sentry-unplugin + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` variable into the entrypoint of all bundles. + * On a technical level this is done by appending an import (`import "sentry-release-injector;"`) to all entrypoint files + * of the user code (see `transformInclude` and `transform` hooks). This import is then resolved by the sentry plugin * to a virtual module that sets the global variable (see `resolveId` and `load` hooks). * * The resulting output approximately looks like this: * * ```text * entrypoint1.js (user file) - * ┌───────────────────┐ ┌─────────────────────────────────────────────────┐ - * │ │ │ import { myFunction } from "./my-library.js"; │ - * │ sentry-unplugin │ │ │ - * │ │ │ const myResult = myFunction(); │ - * └---------│---------┘ │ export { myResult }; │ + * ┌─────────────────────────┐ ┌─────────────────────────────────────────────────┐ + * │ │ │ import { myFunction } from "./my-library.js"; │ + * │ sentry-bundler-plugin │ │ │ + * │ │ │ const myResult = myFunction(); │ + * └---------│--------------- │ export { myResult }; │ * │ │ │ - * │ injects │ // injected by sentry-unplugin │ + * │ injects │ // injected by sentry plugin │ * ├───────────────────► import "sentry-release-injector"; ─────────────────────┐ * │ └─────────────────────────────────────────────────┘ │ * │ │ @@ -55,7 +55,7 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * │ │ return "Hello world!"; │ │ * │ │ } │ │ * │ │ │ │ - * │ injects │ // injected by sentry-unplugin │ │ + * │ injects │ // injected by sentry plugin │ │ * └───────────────────► import "sentry-release-injector"; ─────────────────────┤ * └─────────────────────────────────────────────────┘ │ * │ @@ -63,7 +63,7 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * sentry-release-injector │ * ┌──────────────────────────────────┐ │ * │ │ is resolved │ - * │ global.SENTRY_RELEASE = { ... } │ by unplugin │ + * │ global.SENTRY_RELEASE = { ... } │ by plugin │ * │ // + a little more logic │<─────────────────────┘ * │ │ (only once) * └──────────────────────────────────┘ @@ -71,8 +71,17 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * * Source maps upload: * - * The sentry-unplugin will also take care of uploading source maps to Sentry. This is all done in the `writeBundle` hook. - * TODO: elaborate a bit on how sourcemaps upload works + * The sentry bundler plugin will also take care of uploading source maps to Sentry. This is all done in the + * `writeBundle` hook. In this hook the sentry plugin will execute the release creation pipeline: + * + * 1. Create a new release + * 2. Delete already uploaded artifacts for this release (if `cleanArtifacts` is enabled) + * 3. Upload sourcemaps based on `include` and source-map-specific options + * 4. Associate a range of commits with the release (if `setCommits` is specified) + * 5. Finalize the release (unless `finalize` is disabled) + * 6. Add deploy information to the release (if `deploy` is specified) + * + * This release creation pipeline relies on Sentry CLI to execute the different steps. */ const unplugin = createUnplugin((options, unpluginMetaContext) => { const internalOptions = normalizeUserOptions(options); @@ -188,7 +197,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { loadInclude(id) { logger.info(`Called "loadInclude": ${JSON.stringify({ id })}`); - return id === RELEASE_INJECTOR_ID; }, @@ -218,11 +226,11 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }, /** - * This hook determines whether we want to transform a module. In the unplugin we want to transform every entrypoint + * This hook determines whether we want to transform a module. In the sentry bundler plugin we want to transform every entrypoint * unless configured otherwise with the `entries` option. * * @param id Always the absolute (fully resolved) path to the module. - * @returns `true` or `false` depending on whether we want to transform the module. For the sentry-unplugin we only + * @returns `true` or `false` depending on whether we want to transform the module. For the sentry bundler plugin we only * want to transform the release injector file. */ transformInclude(id) { diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ed113ba2ec11..d4d0b10f0da6 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -136,17 +136,11 @@ function normalizeEntries( function normalizeInclude(userOptions: UserOptions): InternalIncludeEntry[] { return arrayify(userOptions.include) .map((includeItem) => - typeof includeItem === "string" ? convertIncludePathToIncludeEntry(includeItem) : includeItem + typeof includeItem === "string" ? { paths: [includeItem] } : includeItem ) .map((userIncludeEntry) => normalizeIncludeEntry(userOptions, userIncludeEntry)); } -function convertIncludePathToIncludeEntry(includePath: string): UserIncludeEntry { - return { - paths: [includePath], - }; -} - /** * Besides array-ifying the `ignore` option, this function hoists top level options into the items of the `include` * option. This is to simplify the handling of of the `include` items later on. diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 99ceee34b613..b22001d3ce31 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -27,8 +27,6 @@ export function makeSentryClient( stackParser: defaultStackParser, transport: makeNodeTransport, - - debug: true, }); const hub = new Hub(client); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index a58de91d0472..294ca5be2a13 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -63,13 +63,14 @@ export type Options = Omit & { dist?: string; /** - * Filter for bundle entry points that should contain the provided release. By default, the release will be injected - * into all entry points. + * Filter for bundle entry points that should contain the provided release. * * This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. * It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should * return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this * option require a full match with the absolute path of the bundle. + * + * By default, the release will be injected into all entry points. */ entries?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); @@ -85,14 +86,15 @@ export type Options = Omit & { /** * One or more paths that Sentry CLI should scan recursively for sources. - * It will upload all .map files and match associated .js files. + * It will upload all .map files and match associated .js files. Other file + * types can be uploaded by using the `ext` option. * Each path can be given as a string or an object with path-specific options * * This is a required field. */ include: string | IncludeEntry | Array; - /* --- other unimportant (for now) stuff- properties: */ + /* --- other properties: */ /** * Version control system remote name. @@ -112,7 +114,8 @@ export type Options = Omit & { customHeader?: string; /** - * Attempts a dry run (useful for dev environments). + * Attempts a dry run (useful for dev environments), making release creation + * a no-op. * * Defaults to `false`, but may be automatically set to `true` in development environments * by some framework integrations (Next.JS, possibly others). @@ -158,12 +161,12 @@ export type Options = Omit & { errorHandler?: (err: Error) => void; /** - * Adds commits to Sentry. + * Associates the release with its commits in Sentry. */ setCommits?: SetCommitsOptions; /** - * Creates a new release deployment in Sentry. + * Adds deployment information to the release in Sentry. */ deploy?: DeployOptions; From 8adba647a8fd869a55738a7d978881b221b528fa Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 11 Nov 2022 13:59:23 +0100 Subject: [PATCH 090/640] feat: Use `SENTRY_HEADER` env var when available (#109) --- .../src/options-mapping.ts | 8 +++++- .../test/option-mappings.test.ts | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index d4d0b10f0da6..ca28153a8f9a 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -90,7 +90,13 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions // Sentry CLI will internally query env variables and read its config file if // the passed options are undefined. authToken: userOptions.authToken, // env var: `SENTRY_AUTH_TOKEN` - customHeader: userOptions.customHeader, // env var: `CUSTOM_HEADER` + + // CLI v1 (and the "old" webpack plugin) use `CUSTOM_HEADER`, + // but CLI v2 uses `SENTRY_HEADER` (which is also better aligned with other naming) + // In the spirit of maximum compatibility, we allow both here. + customHeader: + userOptions.customHeader ?? process.env["SENTRY_HEADER"] ?? process.env["CUSTOM_HEADER"], + url: userOptions.url, // env var: `SENTRY_URL` vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 6374a684913a..af76484d6d19 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -78,6 +78,32 @@ describe("normalizeUserOptions()", () => { injectReleasesMap: false, }); }); + + test("should handle `SENTRY_HEADER` & `CUSTOM_HEADER` env", () => { + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: "my-release", + include: "./out", + }; + + const _original_SENTRY_HEADER = process.env["SENTRY_HEADER"]; + const _original_CUSTOM_HEADER = process.env["CUSTOM_HEADER"]; + + expect(normalizeUserOptions(userOptions).customHeader).toBeUndefined(); + + process.env["CUSTOM_HEADER"] = "custom-header"; + + expect(normalizeUserOptions(userOptions).customHeader).toBe("custom-header"); + + process.env["SENTRY_HEADER"] = "sentry-header"; + + expect(normalizeUserOptions(userOptions).customHeader).toBe("sentry-header"); + + process.env["SENTRY_HEADER"] = _original_SENTRY_HEADER; + process.env["CUSTOM_HEADER"] = _original_CUSTOM_HEADER; + }); }); describe("validateOptions", () => { From a0640771c182641560e81414d3c7e742a51ad787 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 11 Nov 2022 14:27:48 +0100 Subject: [PATCH 091/640] ref(core): Don't create spans for skipped release steps (#112) Skip creating spans if optional release pipeline steps are skipped Adjust and add tests --- .../src/sentry/releasePipeline.ts | 101 +++++++++-------- .../test/releasePipeline.test.ts | 106 ++++++++++++++++-- 2 files changed, 153 insertions(+), 54 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 6949ed19137a..05a75ea871c7 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -6,6 +6,7 @@ // - huge download // - unnecessary functionality +import { logger } from "@sentry/utils"; import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; import { addSpanToTransaction } from "./telemetry"; @@ -19,6 +20,20 @@ export async function createNewRelease(options: InternalOptions, ctx: BuildConte span?.finish(); } +export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { + if (!options.cleanArtifacts) { + logger.debug("Skipping artifact cleanup."); + return; + } + + const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); + + await ctx.cli.releases.execute(["releases", "files", options.release, "delete", "--all"], true); + + ctx.logger.info("Successfully cleaned previous artifacts."); + span?.finish(); +} + export async function uploadSourceMaps(options: InternalOptions, ctx: BuildContext): Promise { const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); ctx.logger.info("Uploading Sourcemaps."); @@ -31,66 +46,60 @@ export async function uploadSourceMaps(options: InternalOptions, ctx: BuildConte span?.finish(); } -export async function finalizeRelease(options: InternalOptions, ctx: BuildContext): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); - - if (options.finalize) { - await ctx.cli.releases.finalize(options.release); - ctx.logger.info("Successfully finalized release."); +export async function setCommits(options: InternalOptions, ctx: BuildContext): Promise { + if (!options.setCommits) { + logger.debug("Skipping setting commits to release."); + return; } - span?.finish(); -} - -export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); - - if (options.cleanArtifacts) { - await ctx.cli.releases.execute(["releases", "files", options.release, "delete", "--all"], true); - ctx.logger.info("Successfully cleaned previous artifacts."); - } + const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); + const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; + await ctx.cli.releases.setCommits(options.release, { + commit, + previousCommit, + repo, + auto, + ignoreMissing, + ignoreEmpty, + }); + + ctx.logger.info("Successfully set commits."); span?.finish(); } -export async function setCommits(options: InternalOptions, ctx: BuildContext): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); - - if (options.setCommits) { - const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; +export async function finalizeRelease(options: InternalOptions, ctx: BuildContext): Promise { + if (!options.finalize) { + logger.debug("Skipping release finalization."); + return; + } - await ctx.cli.releases.setCommits(options.release, { - commit, - previousCommit, - repo, - auto, - ignoreMissing, - ignoreEmpty, - }); + const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); - ctx.logger.info("Successfully set commits."); - } + await ctx.cli.releases.finalize(options.release); + ctx.logger.info("Successfully finalized release."); span?.finish(); } export async function addDeploy(options: InternalOptions, ctx: BuildContext): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.deploy"); - - if (options.deploy) { - const { env, started, finished, time, name, url } = options.deploy; - - await ctx.cli.releases.newDeploy(options.release, { - env, - started, - finished, - time, - name, - url, - }); - - ctx.logger.info("Successfully added deploy."); + if (!options.deploy) { + logger.debug("Skipping adding deploy info to release."); + return; } + const span = addSpanToTransaction(ctx, "function.plugin.deploy"); + + const { env, started, finished, time, name, url } = options.deploy; + await ctx.cli.releases.newDeploy(options.release, { + env, + started, + finished, + time, + name, + url, + }); + + ctx.logger.info("Successfully added deploy."); span?.finish(); } diff --git a/packages/bundler-plugin-core/test/releasePipeline.test.ts b/packages/bundler-plugin-core/test/releasePipeline.test.ts index 5309adc26f23..97a2654383df 100644 --- a/packages/bundler-plugin-core/test/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/releasePipeline.test.ts @@ -1,5 +1,12 @@ import { InternalOptions } from "../src/options-mapping"; -import { addDeploy, setCommits } from "../src/sentry/releasePipeline"; +import { + addDeploy, + cleanArtifacts, + createNewRelease, + finalizeRelease, + setCommits, + uploadSourceMaps, +} from "../src/sentry/releasePipeline"; import { BuildContext } from "../src/types"; const mockedAddSpanToTxn = jest.fn(); @@ -11,9 +18,9 @@ jest.mock("../src/sentry/telemetry", () => { // eslint-disable-next-line @typescript-eslint/no-unsafe-return return { ...original, - addSpanToTransaction: () => { + addSpanToTransaction: (ctx: unknown, op: string) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return mockedAddSpanToTxn(); + return mockedAddSpanToTxn(ctx, op); }, }; }); @@ -28,7 +35,11 @@ describe("Release Pipeline", () => { const mockedCLI = { releases: { + new: jest.fn(), + execute: jest.fn(), + uploadSourceMaps: jest.fn(), setCommits: jest.fn(), + finalize: jest.fn(), newDeploy: jest.fn(), }, }; @@ -38,13 +49,71 @@ describe("Release Pipeline", () => { const ctx = { cli: mockedCLI, logger: mockedLogger }; + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe("createNewRelease", () => { + it("makes a call to Sentry CLI's releases creation command", async () => { + await createNewRelease( + { release: "1.0.0" } as InternalOptions, + ctx as unknown as BuildContext + ); + + expect(mockedCLI.releases.new).toHaveBeenCalledWith("1.0.0"); + expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.create_release"); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); + + describe("cleanArtifacts", () => { + it("doest do anything if cleanArtifacts is not true", async () => { + await cleanArtifacts({} as InternalOptions, ctx as unknown as BuildContext); + + expect(mockedCLI.releases.execute).not.toHaveBeenCalled(); + expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); + expect(mockedChildSpan.finish).not.toHaveBeenCalled(); + }); + + it("makes a call to Sentry CLI's artifact removal command if `cleanArtifacts` is set", async () => { + await cleanArtifacts( + { release: "1.0.0", cleanArtifacts: true } as InternalOptions, + ctx as unknown as BuildContext + ); + + expect(mockedCLI.releases.execute).toHaveBeenCalledWith( + ["releases", "files", "1.0.0", "delete", "--all"], + true + ); + expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.clean_artifacts"); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); + + describe("uploadSourceMaps", () => { + it("makes a call to Sentry CLI's sourcemaps upload command", async () => { + const options = { + release: "1.0.0", + include: [{ paths: ["dist"] }], + } as InternalOptions; + + await uploadSourceMaps(options, ctx as unknown as BuildContext); + + expect(mockedCLI.releases.uploadSourceMaps).toHaveBeenCalledWith("1.0.0", { + include: [{ paths: ["dist"] }], + }); + expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.upload_sourcemaps"); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); + describe("setCommits", () => { it("doesn't do anything if `setCommits` option is not specified", async () => { await setCommits({} as InternalOptions, ctx as unknown as BuildContext); expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); - expect(mockedChildSpan.finish).toHaveBeenCalled(); + expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); + expect(mockedChildSpan.finish).not.toHaveBeenCalled(); }); it("makes a call to Sentry CLI if the correct options are specified", async () => { @@ -54,7 +123,28 @@ describe("Release Pipeline", () => { ); expect(mockedCLI.releases.setCommits).toHaveBeenCalledWith("1.0.0", { auto: true }); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); + expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.set_commits"); + expect(mockedChildSpan.finish).toHaveBeenCalled(); + }); + }); + + describe("finalizeRelease", () => { + it("doesn't do anything if `finalize` is not set", async () => { + await finalizeRelease({} as InternalOptions, ctx as unknown as BuildContext); + + expect(mockedCLI.releases.finalize).not.toHaveBeenCalled(); + expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); + expect(mockedChildSpan.finish).not.toHaveBeenCalled(); + }); + + it("makes a call to Sentry CLI's release finalization command if `finalize` is true", async () => { + await finalizeRelease( + { release: "1.0.0", finalize: true } as InternalOptions, + ctx as unknown as BuildContext + ); + + expect(mockedCLI.releases.finalize).toHaveBeenCalledWith("1.0.0"); + expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.finalize_release"); expect(mockedChildSpan.finish).toHaveBeenCalled(); }); }); @@ -64,8 +154,8 @@ describe("Release Pipeline", () => { await addDeploy({} as InternalOptions, ctx as unknown as BuildContext); expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); - expect(mockedChildSpan.finish).toHaveBeenCalled(); + expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); + expect(mockedChildSpan.finish).not.toHaveBeenCalled(); }); it("makes a call to Sentry CLI if the correct options are specified", async () => { From 624c15633a6f83942e707969ae43976d1077cb53 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 11 Nov 2022 17:03:02 +0100 Subject: [PATCH 092/640] chore(core): Remove unused dependencies (#110) Removes a few dependencies we don't need anymore after switching back to Sentry CLI. Makes adjustments to `captureMinimalError` to no longer treat axios errors (axios was one of the removed dependencies) --- packages/bundler-plugin-core/package.json | 5 -- .../src/sentry/telemetry.ts | 28 +++++---- .../test/{ => sentry}/cli.test.ts | 2 +- .../test/{ => sentry}/logger.test.ts | 2 +- .../test/{ => sentry}/releasePipeline.test.ts | 10 ++-- .../test/sentry/telemetry.test.ts | 59 +++++++++++++++++++ yarn.lock | 10 +--- 7 files changed, 84 insertions(+), 32 deletions(-) rename packages/bundler-plugin-core/test/{ => sentry}/cli.test.ts (93%) rename packages/bundler-plugin-core/test/{ => sentry}/logger.test.ts (97%) rename packages/bundler-plugin-core/test/{ => sentry}/releasePipeline.test.ts (95%) create mode 100644 packages/bundler-plugin-core/test/sentry/telemetry.test.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4c9369a933b4..9c15c6e84935 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -38,10 +38,6 @@ "@sentry/cli": "^1.74.6", "@sentry/node": "^7.11.1", "@sentry/tracing": "^7.11.1", - "axios": "^0.27.2", - "form-data": "^4.0.0", - "glob": "8.0.3", - "ignore": "^5.2.0", "magic-string": "0.26.2", "unplugin": "0.10.1" }, @@ -58,7 +54,6 @@ "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", - "@types/glob": "8.0.0", "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "eslint": "^8.18.0", diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index b22001d3ce31..dcb4c605612f 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -7,7 +7,6 @@ import { NodeClient, } from "@sentry/node"; import { Span } from "@sentry/tracing"; -import { AxiosError } from "axios"; import { BuildContext } from "../types"; export function makeSentryClient( @@ -57,16 +56,23 @@ export function addSpanToTransaction( return span; } -export function captureMinimalError(error: unknown | Error | AxiosError, hub: Hub) { - const isAxiosError = error instanceof AxiosError; - const sentryError = - error instanceof Error - ? { - name: `${isAxiosError && error.status ? error.status : ""}: ${error.name}`, - message: error.message, - stack: error.stack, - } - : {}; +export function captureMinimalError(error: unknown | Error, hub: Hub) { + let sentryError; + + if (error && typeof error === "object") { + const e = error as { name?: string; message?: string; stack?: string }; + sentryError = { + name: e.name, + message: e.message, + stack: e.stack, + }; + } else { + sentryError = { + name: "Error", + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + message: `${error}`, + }; + } hub.captureException(sentryError); } diff --git a/packages/bundler-plugin-core/test/cli.test.ts b/packages/bundler-plugin-core/test/sentry/cli.test.ts similarity index 93% rename from packages/bundler-plugin-core/test/cli.test.ts rename to packages/bundler-plugin-core/test/sentry/cli.test.ts index 189e571ae546..3e1e3dd17812 100644 --- a/packages/bundler-plugin-core/test/cli.test.ts +++ b/packages/bundler-plugin-core/test/sentry/cli.test.ts @@ -1,5 +1,5 @@ import SentryCli from "@sentry/cli"; -import { getSentryCli } from "../src/sentry/cli"; +import { getSentryCli } from "../../src/sentry/cli"; describe("getSentryCLI", () => { it("returns a valid CLI instance if dryRun is not specified", () => { diff --git a/packages/bundler-plugin-core/test/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts similarity index 97% rename from packages/bundler-plugin-core/test/logger.test.ts rename to packages/bundler-plugin-core/test/sentry/logger.test.ts index e4140ef8d5bc..c556cbaed06b 100644 --- a/packages/bundler-plugin-core/test/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -1,5 +1,5 @@ import { Hub } from "@sentry/node"; -import { createLogger } from "../src/sentry/logger"; +import { createLogger } from "../../src/sentry/logger"; describe("Logger", () => { const consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => undefined); diff --git a/packages/bundler-plugin-core/test/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts similarity index 95% rename from packages/bundler-plugin-core/test/releasePipeline.test.ts rename to packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts index 97a2654383df..2b25b8222cf7 100644 --- a/packages/bundler-plugin-core/test/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts @@ -1,4 +1,4 @@ -import { InternalOptions } from "../src/options-mapping"; +import { InternalOptions } from "../../src/options-mapping"; import { addDeploy, cleanArtifacts, @@ -6,14 +6,14 @@ import { finalizeRelease, setCommits, uploadSourceMaps, -} from "../src/sentry/releasePipeline"; -import { BuildContext } from "../src/types"; +} from "../../src/sentry/releasePipeline"; +import { BuildContext } from "../../src/types"; const mockedAddSpanToTxn = jest.fn(); -jest.mock("../src/sentry/telemetry", () => { +jest.mock("../../src/sentry/telemetry", () => { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const original = jest.requireActual("../src/sentry/telemetry"); + const original = jest.requireActual("../../src/sentry/telemetry"); // eslint-disable-next-line @typescript-eslint/no-unsafe-return return { diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts new file mode 100644 index 000000000000..ceff71abfca1 --- /dev/null +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -0,0 +1,59 @@ +import { Hub } from "@sentry/node"; +import { captureMinimalError } from "../../src/sentry/telemetry"; + +describe("captureMinimalError", () => { + const mockedHub = { + captureException: jest.fn(), + }; + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it("Should capture a normal error", () => { + captureMinimalError(new Error("test"), mockedHub as unknown as Hub); + expect(mockedHub.captureException).toHaveBeenCalledWith({ + name: "Error", + message: "test", + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + stack: expect.any(String), + }); + }); + + it("Shouldn't capture an error with additional data", () => { + const error = new Error("test"); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + (error as any).additionalContext = { foo: "bar" }; + + captureMinimalError(error, mockedHub as unknown as Hub); + + expect(mockedHub.captureException).toHaveBeenCalledWith({ + name: "Error", + message: "test", + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + stack: expect.any(String), + }); + }); + + it("Should handle string messages gracefully", () => { + const error = "Property x is missing!"; + + captureMinimalError(error, mockedHub as unknown as Hub); + + expect(mockedHub.captureException).toHaveBeenCalledWith({ + name: "Error", + message: error, + }); + }); + + it("Should even handle undefined gracefully", () => { + const error = undefined; + + captureMinimalError(error, mockedHub as unknown as Hub); + + expect(mockedHub.captureException).toHaveBeenCalledWith({ + name: "Error", + message: "undefined", + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index 95c7fbda47ef..47822dd7ab77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3837,14 +3837,6 @@ axios@*, axios@^1.0.0, axios@^1.1.3: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== - dependencies: - follow-redirects "^1.14.9" - form-data "^4.0.0" - babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" @@ -6183,7 +6175,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.14.9: +follow-redirects@^1.0.0: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== From 26312512957973a6661fcbe5bd77189be08442fb Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 14 Nov 2022 13:12:24 +0100 Subject: [PATCH 093/640] feat(core): Add plugin options as tags (#113) Add a subset of our plugin options as tags to Sentry events. Obviously, we cannot send all options but we have to be careful to only send insensitive data, such as if an optional step (e.g. `deploy`) was selected or not. Going forward, we can use this data to evaluate which options are used and for debugging issues. Also add some tests --- packages/bundler-plugin-core/src/index.ts | 8 +- .../src/sentry/telemetry.ts | 41 +++++++++ .../test/sentry/telemetry.test.ts | 84 ++++++++++++++++++- 3 files changed, 131 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index f066fd4496b5..3841a9a6be74 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -10,7 +10,12 @@ import { uploadSourceMaps, } from "./sentry/releasePipeline"; import "@sentry/tracing"; -import { addSpanToTransaction, captureMinimalError, makeSentryClient } from "./sentry/telemetry"; +import { + addPluginOptionTags, + addSpanToTransaction, + captureMinimalError, + makeSentryClient, +} from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; import { createLogger, Logger } from "./sentry/logger"; import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; @@ -90,6 +95,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", internalOptions.telemetry ); + addPluginOptionTags(internalOptions, sentryHub); const logger = createLogger({ hub: sentryHub, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index dcb4c605612f..6649959ea9e3 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -7,6 +7,7 @@ import { NodeClient, } from "@sentry/node"; import { Span } from "@sentry/tracing"; +import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; export function makeSentryClient( @@ -76,3 +77,43 @@ export function captureMinimalError(error: unknown | Error, hub: Hub) { hub.captureException(sentryError); } + +export function addPluginOptionTags(options: InternalOptions, hub: Hub) { + const { + cleanArtifacts, + finalize, + setCommits, + injectReleasesMap, + dryRun, + errorHandler, + deploy, + include, + } = options; + + hub.setTag("include", include.length > 1 ? "multiple-entries" : "single-entry"); + + // Optional release pipeline steps + if (cleanArtifacts) { + hub.setTag("clean-artifacts", true); + } + if (setCommits) { + hub.setTag("set-commits", setCommits.auto === true ? "auto" : "manual"); + } + if (finalize) { + hub.setTag("finalize-release", true); + } + if (deploy) { + hub.setTag("add-deploy", true); + } + + // Miscelaneous options + if (dryRun) { + hub.setTag("dry-run", true); + } + if (injectReleasesMap) { + hub.setTag("inject-releases-map", true); + } + if (errorHandler) { + hub.setTag("error-handler", "custom"); + } +} diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index ceff71abfca1..d268df76204b 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,5 +1,6 @@ import { Hub } from "@sentry/node"; -import { captureMinimalError } from "../../src/sentry/telemetry"; +import { InternalOptions } from "../../src/options-mapping"; +import { addPluginOptionTags, captureMinimalError } from "../../src/sentry/telemetry"; describe("captureMinimalError", () => { const mockedHub = { @@ -57,3 +58,84 @@ describe("captureMinimalError", () => { }); }); }); + +describe("addPluginOptionTags", () => { + const mockedHub = { + setTag: jest.fn(), + }; + + const defaultOptions: Partial = { + include: [], + }; + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it("should set include tag according to number of entries (single entry)", () => { + addPluginOptionTags(defaultOptions as unknown as InternalOptions, mockedHub as unknown as Hub); + expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + }); + it("should set include tag according to number of entries (multiple entries)", () => { + addPluginOptionTags( + { include: [{}, {}, {}] } as unknown as InternalOptions, + mockedHub as unknown as Hub + ); + expect(mockedHub.setTag).toHaveBeenCalledWith("include", "multiple-entries"); + }); + + it("should set deploy tag to true if the deploy option is specified", () => { + addPluginOptionTags( + { ...defaultOptions, deploy: { env: "production" } } as unknown as InternalOptions, + mockedHub as unknown as Hub + ); + expect(mockedHub.setTag).toHaveBeenCalledWith("add-deploy", true); + }); + + it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { + addPluginOptionTags( + // eslint-disable-next-line @typescript-eslint/no-empty-function + { ...defaultOptions, errorHandler: () => {} } as unknown as InternalOptions, + mockedHub as unknown as Hub + ); + expect(mockedHub.setTag).toHaveBeenCalledWith("error-handler", "custom"); + }); + + it.each([ + ["auto", { auto: true }], + ["manual", { repo: "", commit: "" }], + ])( + `should set setCommits tag to %s if the setCommits option is %s`, + (expectedValue, commitOptions) => { + addPluginOptionTags( + { ...defaultOptions, setCommits: commitOptions } as unknown as InternalOptions, + mockedHub as unknown as Hub + ); + expect(mockedHub.setTag).toHaveBeenCalledWith("set-commits", expectedValue); + } + ); + + it("sets all simple tags correctly", () => { + addPluginOptionTags( + { + ...defaultOptions, + cleanArtifacts: true, + finalize: true, + injectReleasesMap: true, + dryRun: true, + } as unknown as InternalOptions, + mockedHub as unknown as Hub + ); + + expect(mockedHub.setTag).toHaveBeenCalledWith("clean-artifacts", true); + expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); + expect(mockedHub.setTag).toHaveBeenCalledWith("inject-releases-map", true); + expect(mockedHub.setTag).toHaveBeenCalledWith("dry-run", true); + }); + + it("shouldn't set any tags other than include if no opional options are specified", () => { + addPluginOptionTags(defaultOptions as unknown as InternalOptions, mockedHub as unknown as Hub); + expect(mockedHub.setTag).toHaveBeenCalledTimes(1); + expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + }); +}); From 2df1eced8342818c24bf525ed7de9b3bd3c678ad Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 14 Nov 2022 13:26:27 +0100 Subject: [PATCH 094/640] docs: Add examples to individual READMEs (#115) --- packages/esbuild-plugin/README.md | 37 ++++++++++++++++++++++++++++- packages/rollup-plugin/README.md | 39 +++++++++++++++++++++++++++++-- packages/vite-plugin/README.md | 39 +++++++++++++++++++++++++++++-- packages/webpack-plugin/README.md | 39 +++++++++++++++++++++++++++++-- 4 files changed, 147 insertions(+), 7 deletions(-) diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index 5bdc47d4f159..e97734bbf69f 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -15,7 +15,42 @@ A esbuild plugin that provides release management features for Sentry: - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically association of errors with releases (Release injection) -### Configuration +## Installation + +Using npm: + +```bash +$ npm install @sentry/esbuild-plugin --save-dev +``` + +Using yarn: + +```bash +$ yarn add @sentry/esbuild-plugin --dev +``` + +## Usage + +```js +// esbuild.config.js +const sentryEsbuildPlugin = require("@sentry/esbuild-plugin"); + +require("esbuild").build({ + plugins: [ + sentryEsbuildPlugin({ + include: ".", + ignore: ["node_modules", "esbuild.config.js"], + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}); +``` + +As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. + +## Configuration Every plugin takes an options argument with the following properties: diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 5e2fa7630612..b6fc2a275d5b 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -15,7 +15,42 @@ A Rollup plugin that provides release management features for Sentry: - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically association of errors with releases (Release injection) -### Configuration +## Installation + +Using npm: + +```bash +$ npm install @sentry/rollup-plugin --save-dev +``` + +Using yarn: + +```bash +$ yarn add @sentry/rollup-plugin --dev +``` + +## Usage + +```js +// rollup.config.js +import sentryRollupPlugin from "@sentry/rollup-plugin"; + +export default { + plugins: [ + sentryRollupPlugin({ + include: ".", + ignore: ["node_modules", "rollup.config.js"], + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. + +## Configuration Every plugin takes an options argument with the following properties: @@ -34,7 +69,7 @@ Every plugin takes an options argument with the following properties: | cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | | errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | -### More information +## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) - [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 7f26aec8fcef..e26ebb9a7302 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -15,7 +15,42 @@ A Vite plugin that provides release management features for Sentry: - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically association of errors with releases (Release injection) -### Configuration +## Installation + +Using npm: + +```bash +$ npm install @sentry/vite-plugin --save-dev +``` + +Using yarn: + +```bash +$ yarn add @sentry/vite-plugin --dev +``` + +## Usage + +```ts +// vite.config.ts +import sentryVitePlugin from "@sentry/vite-plugin"; + +export default { + plugins: [ + sentryVitePlugin({ + include: ".", + ignore: ["node_modules", "vite.config.ts"], + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. + +## Configuration Every plugin takes an options argument with the following properties: @@ -34,7 +69,7 @@ Every plugin takes an options argument with the following properties: | cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | | errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | -### More information +## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) - [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 086e050eeaa5..c15273d7010a 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -15,7 +15,42 @@ A Webpack plugin that provides release management features for Sentry: - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically association of errors with releases (Release injection) -### Configuration +## Installation + +Using npm: + +```bash +$ npm install @sentry/webpack-plugin --save-dev +``` + +Using yarn: + +```bash +$ yarn add @sentry/webpack-plugin --dev +``` + +## Usage + +```js +// webpack.config.js +const sentryWebpackPlugin = require("@sentry/webpack-plugin"); + +module.exports = { + plugins: [ + sentryWebpackPlugin({ + include: ".", + ignore: ["node_modules", "webpack.config.js"], + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. + +## Configuration Every plugin takes an options argument with the following properties: @@ -34,7 +69,7 @@ Every plugin takes an options argument with the following properties: | cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | | errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | -### More information +## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) - [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) From 2e0abd0ec6b2f3d4bbb5fce0f40b65e01432a805 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 14 Nov 2022 16:57:46 +0100 Subject: [PATCH 095/640] docs: Add option tables to READMEs (#117) --- packages/bundler-plugin-core/src/types.ts | 36 +++---- packages/esbuild-plugin/README.md | 119 ++++++++++++++++++---- packages/rollup-plugin/README.md | 119 ++++++++++++++++++---- packages/vite-plugin/README.md | 119 ++++++++++++++++++---- packages/webpack-plugin/README.md | 119 ++++++++++++++++++---- 5 files changed, 422 insertions(+), 90 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 294ca5be2a13..fa04110e56fe 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -12,14 +12,14 @@ export type Options = Omit & { /** * The slug of the Sentry organization associated with the app. * - * This value can also be set via the `SENTRY_ORG` env variable. + * This value can also be specified via the `SENTRY_ORG` environment variable. */ org?: string; /** * The slug of the Sentry project associated with the app. * - * This value can also be set via the `SENTRY_PROJECT` env variable. + * This value can also be specified via the `SENTRY_PROJECT` environment variable. */ project?: string; @@ -28,7 +28,7 @@ export type Options = Omit & { * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. * Required scopes: project:releases (and org:read if setCommits option is used). * - * This value can also be set via the `SENTRY_AUTH_TOKEN` env variable + * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. */ authToken?: string; @@ -36,9 +36,9 @@ export type Options = Omit & { * The base URL of your Sentry instance. Use this if you are using a self-hosted * or Sentry instance other than sentry.io. * - * This value can also be set via the `SENTRY_URL` env variable. + * This value can also be set via the `SENTRY_URL` environment variable. * - * Defaults to https://sentry.io/, which is the correct value for SAAS customers. + * Defaults to https://sentry.io/, which is the correct value for SaaS customers. */ url?: string; @@ -47,11 +47,11 @@ export type Options = Omit & { /** * Unique identifier for the release. * - * This value can also be set via the `SENTRY_RELEASE` env variable. + * This value can also be specified via the `SENTRY_RELEASE` environment variable. * * Defaults to the output of the sentry-cli releases propose-version command, * which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, - * Xcode, and Gradle, and otherwise uses HEAD's commit SHA. (For HEAD option, + * Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latter * requires access to git CLI and for the root directory to be a valid repository). */ release?: string; @@ -99,7 +99,7 @@ export type Options = Omit & { /** * Version control system remote name. * - * This value can also be set via the `SENTRY_VSC_REMOTE` env variable. + * This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. * * Defaults to 'origin'. */ @@ -109,7 +109,7 @@ export type Options = Omit & { * A header added to every outgoing network request. * The format should be `header-key: header-value`. * - * This value can also be set via the `CUSTOM_HEADER` env variable. + * This value can also be specified via the `CUSTOM_HEADER` environment variable. */ customHeader?: string; @@ -178,7 +178,7 @@ export type Options = Omit & { * and high-level performance data. We will never collect your code or any details of the * projects in which you're using this plugin. * - * Defaults to true + * Defaults to `true`. */ telemetry?: boolean; @@ -196,7 +196,7 @@ export type Options = Omit & { * maps from `{org}@{project}` to the `release` value. This might be helpful for webpack * module federation or micro frontend setups. * - * Defaults to `false` + * Defaults to `false`. */ injectReleasesMap?: boolean; }; @@ -244,16 +244,16 @@ export type IncludeEntry = { urlSuffix?: string; /** - * When paired with the `rewrite`, this will remove a prefix from filename references inside of + * When paired with the `rewrite` option, this will remove a prefix from filename references inside of * sourcemaps. For instance you can use this to remove a path that is build machine specific. * Note that this will NOT change the names of uploaded files. */ stripPrefix?: string[]; /** - * When paired with rewrite, this will add `~` to the stripPrefix array. + * When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. * - * Defaults to false. + * Defaults to `false`. */ stripCommonPrefix?: boolean; @@ -296,8 +296,8 @@ type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { /** * If the flag is to `true` and the previous release commit was not found - * in the repository, we create a release with the default commits count - * instead of failing the command. + * in the repository, the plugin creates a release with the default commits + * count instead of failing the command. * * Defaults to `false`. */ @@ -333,14 +333,14 @@ type ManualSetCommitsOptions = { /** * The full repo name as defined in Sentry. * - * Required if `auto` option is not set to `true`. + * Required if the `auto` option is not set to `true`. */ repo: string; /** * The current (last) commit in the release. * - * Required if `auto` option is not set to `true`. + * Required if the `auto` option is not set to `true`. */ commit: string; }; diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index e97734bbf69f..77eef2194b24 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -50,24 +50,107 @@ require("esbuild").build({ As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. -## Configuration - -Every plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. | -| project | `string` | optional | The slug of the Sentry project associated with the app. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | -| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | -| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | -| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | -| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | -| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | +### Configuration + +The Sentry Esbuild Plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | + +#### options.include: + +| Option | Type | Required | Description | +| ------------------ | ------------------- | -------- | ---------------------------------------------- | +| paths | `string[]` | required | One or more paths to scan for files to upload. | +| ignoreFile | `string` | optional | See above. | +| ignore | `string`/`string[]` | optional | See above. | +| ext | `array` | optional | See above. | +| urlPrefix | `string` | optional | See above. | +| urlSuffix | `string` | optional | See above. | +| stripPrefix | `array` | optional | See above. | +| stripCommonPrefix | `boolean` | optional | See above. | +| sourceMapReference | `boolean` | optional | See above. | +| rewrite | `boolean` | optional | See above. | + +Example: + +```ts +// esbuild.config.js +const sentryEsbuildPlugin = require("@sentry/esbuild-plugin"); + +require("esbuild").build({ + plugins: [ + sentryEsbuildPlugin({ + // ... + include: [ + { + paths: ["./packages"], + urlPrefix: "~/path/to/packages", + }, + { + paths: ["./client"], + urlPrefix: "~/path/to/client", + }, + ], + }), + ], +}); +``` + +#### options.setCommits: + +| Option | Type | Required | Description | +| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | +| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | +| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | +| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | +| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | + +#### options.deploy: + +| Option | Type | Required | Description | +| -------- | -------- | -------- | -------------------------------------------------------------------------------- | +| env | `string` | required | Environment value for the release, for example `production` or `staging`. | +| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | +| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | +| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | +| name | `string` | optional | Human-readable name for this deployment. | +| url | `string` | optional | URL that points to the deployment. | + +You can find more information about these options in our official docs: +https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. ### More information diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index b6fc2a275d5b..39addcea31ce 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -50,24 +50,107 @@ export default { As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. -## Configuration - -Every plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. | -| project | `string` | optional | The slug of the Sentry project associated with the app. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | -| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | -| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | -| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | -| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | -| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | +### Configuration + +The Sentry Rollup Plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | + +#### options.include: + +| Option | Type | Required | Description | +| ------------------ | ------------------- | -------- | ---------------------------------------------- | +| paths | `string[]` | required | One or more paths to scan for files to upload. | +| ignoreFile | `string` | optional | See above. | +| ignore | `string`/`string[]` | optional | See above. | +| ext | `array` | optional | See above. | +| urlPrefix | `string` | optional | See above. | +| urlSuffix | `string` | optional | See above. | +| stripPrefix | `array` | optional | See above. | +| stripCommonPrefix | `boolean` | optional | See above. | +| sourceMapReference | `boolean` | optional | See above. | +| rewrite | `boolean` | optional | See above. | + +Example: + +```js +// rollup.config.js +import sentryRollupPlugin from "@sentry/rollup-plugin"; + +export default { + plugins: [ + sentryRollupPlugin({ + // ... + include: [ + { + paths: ["./packages"], + urlPrefix: "~/path/to/packages", + }, + { + paths: ["./client"], + urlPrefix: "~/path/to/client", + }, + ], + }), + ], +}; +``` + +#### options.setCommits: + +| Option | Type | Required | Description | +| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | +| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | +| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | +| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | +| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | + +#### options.deploy: + +| Option | Type | Required | Description | +| -------- | -------- | -------- | -------------------------------------------------------------------------------- | +| env | `string` | required | Environment value for the release, for example `production` or `staging`. | +| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | +| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | +| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | +| name | `string` | optional | Human-readable name for this deployment. | +| url | `string` | optional | URL that points to the deployment. | + +You can find more information about these options in our official docs: +https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. ## More information diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index e26ebb9a7302..56b7fe212f17 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -50,24 +50,107 @@ export default { As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. -## Configuration - -Every plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. | -| project | `string` | optional | The slug of the Sentry project associated with the app. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | -| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | -| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | -| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | -| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | -| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | +### Configuration + +The Sentry Vite Plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | + +#### options.include: + +| Option | Type | Required | Description | +| ------------------ | ------------------- | -------- | ---------------------------------------------- | +| paths | `string[]` | required | One or more paths to scan for files to upload. | +| ignoreFile | `string` | optional | See above. | +| ignore | `string`/`string[]` | optional | See above. | +| ext | `array` | optional | See above. | +| urlPrefix | `string` | optional | See above. | +| urlSuffix | `string` | optional | See above. | +| stripPrefix | `array` | optional | See above. | +| stripCommonPrefix | `boolean` | optional | See above. | +| sourceMapReference | `boolean` | optional | See above. | +| rewrite | `boolean` | optional | See above. | + +Example: + +```ts +// vite.config.ts +import sentryVitePlugin from "@sentry/vite-plugin"; + +export default { + plugins: [ + sentryVitePlugin({ + // ... + include: [ + { + paths: ["./packages"], + urlPrefix: "~/path/to/packages", + }, + { + paths: ["./client"], + urlPrefix: "~/path/to/client", + }, + ], + }), + ], +}; +``` + +#### options.setCommits: + +| Option | Type | Required | Description | +| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | +| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | +| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | +| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | +| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | + +#### options.deploy: + +| Option | Type | Required | Description | +| -------- | -------- | -------- | -------------------------------------------------------------------------------- | +| env | `string` | required | Environment value for the release, for example `production` or `staging`. | +| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | +| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | +| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | +| name | `string` | optional | Human-readable name for this deployment. | +| url | `string` | optional | URL that points to the deployment. | + +You can find more information about these options in our official docs: +https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. ## More information diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index c15273d7010a..ecd36bf459db 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -50,24 +50,107 @@ module.exports = { As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. -## Configuration - -Every plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| -------------- | ----------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string` | required | A path that the plugin should scan recursively for source maps. It will upload all `.map` files and match associated `.js` files. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. | -| project | `string` | optional | The slug of the Sentry project associated with the app. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). | -| url | `string` | optional | The base URL of your Sentry instance. Defaults to https://sentry.io/, which is the correct value for SAAS customers. | -| release | `string` | optional | Unique identifier for the release. Defaults to automatically detected values for CI environments like Vercel, AWS, Heroku, CircleCI. If no such CI environment is detected, the plugin uses the git `HEAD`'s commit SHA. (**For `HEAD` option, requires access to the `git` CLI**). | -| entries | `(string \| RegExp)[] \| RegExp \| string \| function(absoluteFilePath: string): boolean` | optional | Filter for entry points that should be processed. By default, the release will be injected into all entry points. | -| ext | `array` | optional | The file extensions to be considered for the sourcemaps upload. By default the following file extensions are processed: `js`, `map`, `jsbundle`, and `bundle`. | -| finalize | `boolean` | optional | Indicates whether Sentry release record should be automatically finalized (`date_released` timestamp added) after artifact upload. Defaults to `true` | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all existing artifacts in the Sentry release before uploading sourcemaps. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | Function that is called when an error occurs during rlease creation or sourcemaps upload. When this function is provided, thrown errors will not cause the process to abort. If you still want to abort the process you can throw an error in the function. | +### Configuration + +The Sentry Webpack Plugin takes an options argument with the following properties: + +| Option | Type | Required | Description | +| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | + +#### options.include: + +| Option | Type | Required | Description | +| ------------------ | ------------------- | -------- | ---------------------------------------------- | +| paths | `string[]` | required | One or more paths to scan for files to upload. | +| ignoreFile | `string` | optional | See above. | +| ignore | `string`/`string[]` | optional | See above. | +| ext | `array` | optional | See above. | +| urlPrefix | `string` | optional | See above. | +| urlSuffix | `string` | optional | See above. | +| stripPrefix | `array` | optional | See above. | +| stripCommonPrefix | `boolean` | optional | See above. | +| sourceMapReference | `boolean` | optional | See above. | +| rewrite | `boolean` | optional | See above. | + +Example: + +```js +// webpack.config.js +const sentryWebpackPlugin = require("@sentry/webpack-plugin"); + +module.exports = { + plugins: [ + sentryWebpackPlugin({ + // ... + include: [ + { + paths: ["./packages"], + urlPrefix: "~/path/to/packages", + }, + { + paths: ["./client"], + urlPrefix: "~/path/to/client", + }, + ], + }), + ], +}; +``` + +#### options.setCommits: + +| Option | Type | Required | Description | +| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | +| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | +| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | +| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | +| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | + +#### options.deploy: + +| Option | Type | Required | Description | +| -------- | -------- | -------- | -------------------------------------------------------------------------------- | +| env | `string` | required | Environment value for the release, for example `production` or `staging`. | +| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | +| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | +| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | +| name | `string` | optional | Human-readable name for this deployment. | +| url | `string` | optional | URL that points to the deployment. | + +You can find more information about these options in our official docs: +https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. ## More information From 174c33aecc052f04e5a4fde6dc6f0f8b0e7555b6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Nov 2022 12:59:44 +0100 Subject: [PATCH 096/640] feat(core): Add node version tag (#118) Add another tag to Sentry events containing the used node version. This can help us with seeing in which node versions the plugins (and possibly their respective projects) are used. --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 2 ++ packages/bundler-plugin-core/test/sentry/telemetry.test.ts | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 6649959ea9e3..b4fe2636a1c7 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -116,4 +116,6 @@ export function addPluginOptionTags(options: InternalOptions, hub: Hub) { if (errorHandler) { hub.setTag("error-handler", "custom"); } + + hub.setTag("node", process.version); } diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index d268df76204b..07299b7318bd 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -135,7 +135,8 @@ describe("addPluginOptionTags", () => { it("shouldn't set any tags other than include if no opional options are specified", () => { addPluginOptionTags(defaultOptions as unknown as InternalOptions, mockedHub as unknown as Hub); - expect(mockedHub.setTag).toHaveBeenCalledTimes(1); + expect(mockedHub.setTag).toHaveBeenCalledTimes(2); expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + expect(mockedHub.setTag).toHaveBeenCalledWith("node", expect.any(String)); }); }); From 4ef3ccf7317fa9838be7ad99e8770ee4d39f271c Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Nov 2022 14:23:24 +0100 Subject: [PATCH 097/640] chore(core): Bump sentry to 7.19.0 (#119) bump sentry to 7.19.0 --- packages/bundler-plugin-core/package.json | 4 +- packages/bundler-plugin-core/src/types.ts | 2 +- packages/playground/package.json | 4 +- yarn.lock | 81 ++++++++++------------- 4 files changed, 40 insertions(+), 51 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9c15c6e84935..91470c0f9f12 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -36,8 +36,8 @@ }, "dependencies": { "@sentry/cli": "^1.74.6", - "@sentry/node": "^7.11.1", - "@sentry/tracing": "^7.11.1", + "@sentry/node": "^7.19.0", + "@sentry/tracing": "^7.19.0", "magic-string": "0.26.2", "unplugin": "0.10.1" }, diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index fa04110e56fe..28e67f0d5349 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,4 +1,4 @@ -import { Hub } from "@sentry/hub"; +import { Hub } from "@sentry/core"; import { Span } from "@sentry/tracing"; import { SentryCLILike } from "./sentry/cli"; import { createLogger } from "./sentry/logger"; diff --git a/packages/playground/package.json b/packages/playground/package.json index 6abd0a5c3acf..d6fe5eb02844 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -19,8 +19,8 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "0.0.1-alpha.0", - "@sentry/integrations": "^7.11.1", - "@sentry/node": "^7.11.1", + "@sentry/integrations": "^7.19.0", + "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/yarn.lock b/yarn.lock index 47822dd7ab77..0632815132db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2577,70 +2577,59 @@ proxy-from-env "^1.1.0" which "^2.0.2" -"@sentry/core@7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.11.1.tgz#d68e796f3b6428aefd6086a1db00118df7a9a9e4" - integrity sha512-kaDSZ6VNuO4ZZdqUOOX6XM6x+kjo2bMnDQ3IJG51FPvVjr8lXYhXj1Ccxcot3pBYAIWPPby2+vNDOXllmXqoBA== - dependencies: - "@sentry/hub" "7.11.1" - "@sentry/types" "7.11.1" - "@sentry/utils" "7.11.1" - tslib "^1.9.3" - -"@sentry/hub@7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.11.1.tgz#1749b2b102ea1892ff388d65d66d3b402b393958" - integrity sha512-M6ClgdXdptS0lUBKB5KpXXe2qMQhsoiEN2pEGRI6+auqhfHCUQB1ZXsfjiOYexKC9fwx7TyFyZ9Jcaf2DTxEhw== +"@sentry/core@7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.19.0.tgz#74e0eaf4b9f42bb0290f4b3f3b0ea3e272dd693e" + integrity sha512-YF9cTBcAnO4R44092BJi5Wa2/EO02xn2ziCtmNgAVTN2LD31a/YVGxGBt/FDr4Y6yeuVehaqijVVvtpSmXrGJw== dependencies: - "@sentry/types" "7.11.1" - "@sentry/utils" "7.11.1" + "@sentry/types" "7.19.0" + "@sentry/utils" "7.19.0" tslib "^1.9.3" -"@sentry/integrations@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.11.1.tgz#fa7b648fd479b9b8b8558f5b23c8c51a066737f5" - integrity sha512-G4aw9X2WdRGwLk/2pAj+5LuZnLM4u1GG3o8bOWNASR9E7IiQQ9ERYlnfW7jas+08B1Q61WLwJPXZhJxvQfxLQw== +"@sentry/integrations@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.19.0.tgz#570b7ced7ef9de43a6a56f99f324936148adf6b9" + integrity sha512-0x5AGU7EBIzOTSqD7TFvD4S5eX6hbqbvb4YCzJt3SIZC3bO4FiBu2t0y+PIZUSsupnqafBIIWsCcGWeKrNHAyA== dependencies: - "@sentry/types" "7.11.1" - "@sentry/utils" "7.11.1" + "@sentry/types" "7.19.0" + "@sentry/utils" "7.19.0" localforage "^1.8.1" tslib "^1.9.3" -"@sentry/node@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.11.1.tgz#97fd26de26e8203a3c34e26b38f3c2a5ba46828b" - integrity sha512-EAAHou/eHSzwRK0Z5qnQiwXNbkpnjWjloaG979gftA+MS/kM0AxQHdOrSJQbOEaqRf3F7/eC4Hj+1tfglAuaLQ== +"@sentry/node@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.19.0.tgz#4c9494d6aaa15d7f22fe4e6c31d0358a365adb2f" + integrity sha512-yG7Tx32WqOkEHVotFLrumCcT9qlaSDTkFNZ+yLSvZXx74ifsE781DzBA9W7K7bBdYO3op+p2YdsOKzf3nPpAyQ== dependencies: - "@sentry/core" "7.11.1" - "@sentry/hub" "7.11.1" - "@sentry/types" "7.11.1" - "@sentry/utils" "7.11.1" + "@sentry/core" "7.19.0" + "@sentry/types" "7.19.0" + "@sentry/utils" "7.19.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.11.1.tgz#50cbe82dd5b9a1307b31761cdd4b0d71132cf5c7" - integrity sha512-ilgnHfpdYUWKG/5yAXIfIbPVsCfrC4ONFBR/wN25/hdAyVfXMa3AJx7NCCXxZBOPDWH3hMW8rl4La5yuDbXofg== +"@sentry/tracing@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.19.0.tgz#d69ecea2c0b53d113c5100fc52d0a0acc5c8a129" + integrity sha512-SWY17M3TsgBePaGowUcSqBwaT0TJQzuNexVnLojuU0k6F57L9hubvP9zaoosoCfARXQ/3NypAFWnlJyf570rFQ== dependencies: - "@sentry/hub" "7.11.1" - "@sentry/types" "7.11.1" - "@sentry/utils" "7.11.1" + "@sentry/core" "7.19.0" + "@sentry/types" "7.19.0" + "@sentry/utils" "7.19.0" tslib "^1.9.3" -"@sentry/types@7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.11.1.tgz#06e2827f6ba37159c33644208a0453b86d25e232" - integrity sha512-gIEhOPxC2cjrxQ0+K2SFJ1P6e/an5osSxVc9OOtekN28eHtVsXFCLB8XVWeNQnS7N2VkrVrkqORMBz1kvIcvVQ== +"@sentry/types@7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.19.0.tgz#3ebb96670399b637a945fa499fa7436f7b930147" + integrity sha512-oGRAT6lfzoKrxO1mvxiSj0XHxWPd6Gd1wpPGuu6iJo03xgWDS+MIlD1h2unqL4N5fAzLjzmbC2D2lUw50Kn2pA== -"@sentry/utils@7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.11.1.tgz#1635c5b223369d9428bc83c9b8908c9c3287ee10" - integrity sha512-tRVXNT5O9ilkV31pyHeTqA1PcPQfMV/2OR6yUYM4ah+QVISovC0f0ybhByuH5nYg6x/Gsnx1o7pc8L1GE3+O7A== +"@sentry/utils@7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.19.0.tgz#0e039fe57056074c3a5e47bd50d9cb4ac9a6e909" + integrity sha512-2L6lq+c9Ol2uiRxQDdcgoapmHJp24MhMN0gIkn2alSfMJ+ls6bGXzQHx6JAIdoOiwFQXRZHKL9ecfAc8O+vItA== dependencies: - "@sentry/types" "7.11.1" + "@sentry/types" "7.19.0" tslib "^1.9.3" "@sinclair/typebox@^0.24.1": From 297f5088c118df7d217beb187810f89162cc96e9 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Nov 2022 14:38:59 +0100 Subject: [PATCH 098/640] ref(core): Do not send telemetry data for self-hosted users (#120) This PR turns telemetry off for self-hosted users, meaning that the plugin will only send Sentry events to Sentry.io if the URL used in the plugin (i.e. where sourcemaps are uploaded to) is sentry.io. Unfortunately, this isn't entirely straight forward. Sentry-CLI will read a config file (`.sentryclirc`) if it finds one. Either in the directory of a global CLI installation (default behaviour) or if a path to a config file was specified via the `configFile` option. At option conversion time, we therefore don't know exactly yet, if the plugin is used for SaaS or self-hosted. We can only check the `url` option and `SENTRY_URL` env variable to make a first decision. Only at a later time, we can make a call to Sentry-CLI (with the `info`) command which returns us the used Sentry server URL. At this point we can finally definitely make the call to leave telemetry running for SaaS or turn sending off for self-hosted. Note that I had to remove a call to Sentry for options validation which would until now have sent an error to Sentry in case of a validation error. However, given that this is mostly a user-facing config problem, I think we're not missing out on important data. --- packages/bundler-plugin-core/src/index.ts | 6 +- .../src/options-mapping.ts | 17 +++++- .../bundler-plugin-core/src/sentry/cli.ts | 9 ++- .../src/sentry/telemetry.ts | 30 +++++++++- .../test/option-mappings.test.ts | 31 ++++++++++ .../test/sentry/telemetry.test.ts | 58 ++++++++++++++++++- .../playground/vite.config.smallNodeApp.js | 4 +- 7 files changed, 145 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 3841a9a6be74..84da564c3564 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -15,6 +15,7 @@ import { addSpanToTransaction, captureMinimalError, makeSentryClient, + turnOffTelemetryForSelfHostedSentry, } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; import { createLogger, Logger } from "./sentry/logger"; @@ -108,8 +109,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { handleError( new Error("Options were not set correctly. See output above for more details."), logger, - internalOptions.errorHandler, - sentryHub + internalOptions.errorHandler ); } @@ -145,6 +145,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * Responsible for starting the plugin execution transaction and the release injection span */ async buildStart() { + await turnOffTelemetryForSelfHostedSentry(cli, sentryHub); + if (!internalOptions.release) { internalOptions.release = await cli.releases.proposeVersion(); } diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ca28153a8f9a..d1abab76520b 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -58,8 +58,10 @@ export type InternalIncludeEntry = RequiredInternalIncludeEntry & ignore: string[]; }; +export const SENTRY_SAAS_URL = "https://sentry.io"; + export function normalizeUserOptions(userOptions: UserOptions): InternalOptions { - return { + const options = { // include is the only strictly required option // (normalizeInclude needs all userOptions to access top-level include options) include: normalizeInclude(userOptions), @@ -75,6 +77,10 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions // Sentry CLI to determine a release if none was specified via options // or env vars. In case we don't find one, we'll bail at that point. release: userOptions.release ?? process.env["SENTRY_RELEASE"] ?? "", + // We technically don't need the URL for anything release-specific + // but we want to make sure that we're only sending Sentry data + // of SaaS customers. Hence we want to read it anyway. + url: userOptions.url ?? process.env["SENTRY_URL"] ?? SENTRY_SAAS_URL, // Options with default values finalize: userOptions.finalize ?? true, @@ -97,7 +103,6 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions customHeader: userOptions.customHeader ?? process.env["SENTRY_HEADER"] ?? process.env["CUSTOM_HEADER"], - url: userOptions.url, // env var: `SENTRY_URL` vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` // Optional options @@ -108,6 +113,14 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions errorHandler: userOptions.errorHandler, configFile: userOptions.configFile, }; + + // We only want to enable telemetry for SaaS users + // This is not the final check (we need to call Sentry CLI at a later point) + // but we can already at this point make a first decision. + // @see `turnOffTelemetryForSelfHostedSentry` (telemetry.ts) for the second check. + options.telemetry = options.telemetry && options.url === SENTRY_SAAS_URL; + + return options; } /** diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 53aa89fddb45..97367cc64911 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -2,7 +2,10 @@ import SentryCli, { SentryCliReleases } from "@sentry/cli"; import { InternalOptions } from "../options-mapping"; import { Logger } from "./logger"; -type SentryDryRunCLI = { releases: Omit }; +type SentryDryRunCLI = { + releases: Omit; + execute: (args: string[], live: boolean) => Promise; +}; export type SentryCLILike = SentryCli | SentryDryRunCLI; /** @@ -65,5 +68,9 @@ function getDryRunCLI(cli: SentryCli, logger: Logger): SentryDryRunCLI { return Promise.resolve(""); }, }, + execute: (args: string[], live: boolean) => { + logger.info("Executing", args, "live:", live); + return Promise.resolve("Executed"); + }, }; } diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index b4fe2636a1c7..0b6af4933346 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -5,10 +5,11 @@ import { makeMain, makeNodeTransport, NodeClient, + Span, } from "@sentry/node"; -import { Span } from "@sentry/tracing"; -import { InternalOptions } from "../options-mapping"; +import { InternalOptions, SENTRY_SAAS_URL } from "../options-mapping"; import { BuildContext } from "../types"; +import { SentryCLILike } from "./cli"; export function makeSentryClient( dsn: string, @@ -119,3 +120,28 @@ export function addPluginOptionTags(options: InternalOptions, hub: Hub) { hub.setTag("node", process.version); } + +/** + * Makes a call to SentryCLI to get the Sentry server URL the CLI uses. + * + * We need to check and decide to use telemetry based on the CLI's respone to this call + * because only at this time we checked a possibly existing .sentryclirc file. This file + * could point to another URL than the default URL. + */ +export async function turnOffTelemetryForSelfHostedSentry(cli: SentryCLILike, hub: Hub) { + const cliInfo = await cli.execute(["info"], false); + + const url = cliInfo + ?.split(/(\r\n|\n|\r)/)[0] + ?.replace(/^Sentry Server: /, "") + ?.trim(); + + if (url !== SENTRY_SAAS_URL) { + const client = hub.getClient(); + if (client) { + client.getOptions().enabled = false; + client.getOptions().tracesSampleRate = 0; + client.getOptions().sampleRate = 0; + } + } +} diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index af76484d6d19..cfcd05fb46a8 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -34,6 +34,7 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectReleasesMap: false, + url: "https://sentry.io", }); }); @@ -76,6 +77,7 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectReleasesMap: false, + url: "https://sentry.io", }); }); @@ -104,6 +106,35 @@ describe("normalizeUserOptions()", () => { process.env["SENTRY_HEADER"] = _original_SENTRY_HEADER; process.env["CUSTOM_HEADER"] = _original_CUSTOM_HEADER; }); + + test.each(["https://sentry.io", undefined])( + "should enable telemetry if `telemetry` is true and Sentry SaaS URL (%s) is used", + (url) => { + const options = { + include: "", + url, + }; + + expect(normalizeUserOptions(options).telemetry).toBe(true); + } + ); + + test.each([ + [true, "https://selfhostedSentry.io"], + [false, "https://sentry.io"], + [false, "https://selfhostedSentry.io"], + ])( + "should disable telemetry if `telemetry` is %s and Sentry SaaS URL (%s) is used", + (telemetry, url) => { + const options = { + include: "", + telemetry, + url, + }; + + expect(normalizeUserOptions(options).telemetry).toBe(false); + } + ); }); describe("validateOptions", () => { diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 07299b7318bd..29efe785dc36 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,6 +1,62 @@ import { Hub } from "@sentry/node"; import { InternalOptions } from "../../src/options-mapping"; -import { addPluginOptionTags, captureMinimalError } from "../../src/sentry/telemetry"; +import { SentryCLILike } from "../../src/sentry/cli"; +import { + addPluginOptionTags, + captureMinimalError, + turnOffTelemetryForSelfHostedSentry, +} from "../../src/sentry/telemetry"; + +describe("turnOffTelemetryForSelfHostedSentry", () => { + const mockedCLI = { + execute: jest + .fn() + .mockImplementation(() => "Sentry Server: https://sentry.io \nsomeotherstuff\netc"), + }; + + const options = { + enabled: true, + tracesSampleRate: 1.0, + sampleRate: 1.0, + }; + + const mockedClient = { + getOptions: jest.fn().mockImplementation(() => options), + }; + const mockedHub = { + getClient: jest.fn().mockImplementation(() => { + return mockedClient; + }), + }; + + afterEach(() => { + jest.resetAllMocks(); + mockedCLI.execute.mockImplementation( + () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" + ); + }); + + it("Should turn telemetry off if CLI returns a URL other than sentry.io", async () => { + mockedCLI.execute.mockImplementation( + () => "Sentry Server: https://selfhostedSentry.io \nsomeotherstuff\netc" + ); + await turnOffTelemetryForSelfHostedSentry( + mockedCLI as unknown as SentryCLILike, + mockedHub as unknown as Hub + ); + expect(mockedHub.getClient).toHaveBeenCalledTimes(1); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + expect(mockedHub.getClient().getOptions).toHaveBeenCalledTimes(3); + }); + + it("Should do nothing if CLI returns sentry.io as a URL", async () => { + await turnOffTelemetryForSelfHostedSentry( + mockedCLI as unknown as SentryCLILike, + mockedHub as unknown as Hub + ); + expect(mockedHub.getClient).not.toHaveBeenCalled(); + }); +}); describe("captureMinimalError", () => { const mockedHub = { diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index b8d48b670579..b9566f49f3cb 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -28,8 +28,8 @@ export default defineConfig({ ignore: ["!out/vite-smallNodeApp/index.js.map"], ignoreFile: ".sentryignore", setCommits: { - repo: "", - commit: "", + repo: "someRepo", + commit: "someCommit", ignoreMissing: true, }, deploy: { From 42f601f9b5e6700647d9fa9202e18d65883a69f7 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Nov 2022 14:57:08 +0100 Subject: [PATCH 099/640] meta: Update changelog for 0.1.0 --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 478db95e7709..b3332765d352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.1.0 + +This release marks the first official release of the Sentry bundler plugins. As of this release, the plugins support all features of the standalone Sentry Webpack plugin. +Please note that breaking changes might still be introduced. + +- Re-added Sentry CLI to the project (#85). + The bundler plugins use Sentry CLI to create releases and upload sourcemaps +- Added missing Release creation steps + - feat(core): Add `setCommits` (#96) + - feat(core): Add `deploy` command (#97) +- Added validation of plugin options (#104) +- Refined `telemetry` option to only send events to Sentry for projects uploading source maps to Sentry's SaaS instance (#99). For self-hosted Sentry servers, nothing will be sent to Sentry. +- Updated `README.md` files with examples and option descriptions for each bundler plugin (#117) + +Link to [Full Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/compare/0.0.1-alpha.0...main) + ## 0.0.1-alpha.0 This release marks the first release of the Sentry bundler blugins. This is still a heavy work in progress and a lot of things are still missing and subject to change From 9f01b3848f29d54e484be5c402f58547991e1c03 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Nov 2022 15:47:48 +0100 Subject: [PATCH 100/640] chore: Update changelog (#122) update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3332765d352..11863d31a238 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ ## 0.1.0 -This release marks the first official release of the Sentry bundler plugins. As of this release, the plugins support all features of the standalone Sentry Webpack plugin. +With this release, the Sentry bundler plugins support all features of the standalone Sentry Webpack plugin. Please note that breaking changes might still be introduced. - Re-added Sentry CLI to the project (#85). From 721e7fbcfcb9812ef9edc361e3481df37b6a1b1f Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 15 Nov 2022 14:58:37 +0000 Subject: [PATCH 101/640] release: 0.1.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 16 ++++++++-------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lerna.json b/lerna.json index b537b4f9cbc3..adfeeedd5a40 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.0.1-alpha.0", + "version": "0.1.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 91470c0f9f12..5aac11d6e698 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -50,8 +50,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index eb8853d911f7..162757ed4e57 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,20 +15,20 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/vite-plugin": "0.0.1-alpha.0", - "@sentry/rollup-plugin": "0.0.1-alpha.0", - "@sentry/esbuild-plugin": "0.0.1-alpha.0", - "@sentry/webpack-plugin": "0.0.1-alpha.0", + "@sentry/esbuild-plugin": "0.1.0", + "@sentry/rollup-plugin": "0.1.0", + "@sentry/vite-plugin": "0.1.0", + "@sentry/webpack-plugin": "0.1.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@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.41.32", - "@types/axios": "^0.14.0", "esbuild": "0.14.49", "eslint": "^8.18.0", "glob": "8.0.3", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 097b2a568467..9a353fcf1cc3 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.1-alpha.0" + "@sentry/bundler-plugin-core": "0.1.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 7afcb47f5f57..2750f7ddc996 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3a280d52f36c..1bede89237f9 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", - "@sentry/bundler-plugin-core": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry/bundler-plugin-core": "0.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index d6fe5eb02844..34ea74a7615f 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.1-alpha.0", + "@sentry/bundler-plugin-core": "0.1.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 0f99956f9655..5d314edde19b 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -41,7 +41,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.1-alpha.0" + "@sentry/bundler-plugin-core": "0.1.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -51,8 +51,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index e3d5e4a3830b..6181941ab41b 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 3a6c840b9a9a..bbb0dfc241a1 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.1-alpha.0" + "@sentry/bundler-plugin-core": "0.1.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e0e28f185834..842272589a95 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.0.1-alpha.0", + "version": "0.1.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.0.1-alpha.0" + "@sentry/bundler-plugin-core": "0.1.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.0.1-alpha.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.0.1-alpha.0", + "@sentry-internal/eslint-config": "0.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From a73d0ddca82db45b3279b13d220d14fdbbe6c409 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 17 Nov 2022 09:26:00 +0100 Subject: [PATCH 102/640] test(e2e): Use jest snapshotting for E2E tests (#124) --- .../__snapshots__/basic-upload.test.ts.snap | 101 ++++++++++++++++++ .../basic-upload/basic-upload.test.ts | 5 +- .../basic-upload/ref/esbuild/~/index.js | 2 - .../basic-upload/ref/esbuild/~/index.js.map | 1 - .../basic-upload/ref/rollup/~/index.js | 29 ----- .../basic-upload/ref/rollup/~/index.js.map | 1 - .../basic-upload/ref/vite/~/index.js | 2 - .../basic-upload/ref/vite/~/index.js.map | 1 - .../basic-upload/ref/webpack4/~/index.js | 2 - .../basic-upload/ref/webpack4/~/index.js.map | 1 - .../basic-upload/ref/webpack5/~/index.js | 2 - .../basic-upload/ref/webpack5/~/index.js.map | 1 - packages/e2e-tests/utils/releases.ts | 18 ---- 13 files changed, 103 insertions(+), 63 deletions(-) create mode 100644 packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map 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 new file mode 100644 index 000000000000..7175c942da07 --- /dev/null +++ b/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap @@ -0,0 +1,101 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +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\\"); +//# sourceMappingURL=index.js.map +", + "name": "~/index.js", + }, + Object { + "content": "{\\"version\\":3,\\"sources\\":[\\"sentry-plugin:\\\\u0000sentry-release-injector\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-esbuild\\\\\\"};\\",\\"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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[],\\"mappings\\":\\"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", + "name": "~/index.js.map", + }, +] +`; + +exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using rollup 1`] = ` +Array [ + Object { + "content": "'use strict'; + +var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"}; + +const fibonacci = (n) => { + if (n === 3) { + throw new Error(\\"I'm an uncaught error\\"); + } + if (n <= 1) { + return n; + } + return fibonacci(n - 1) + fibonacci(n - 2); +}; + +console.log(\\"Hi, I'm a very simple app\\"); + +fibonacci(10); + +console.log(\\"I'm done\\"); +//# sourceMappingURL=index.js.map +", + "name": "~/index.js", + }, + Object { + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", + "name": "~/index.js.map", + }, +] +`; + +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\\"); +//# sourceMappingURL=index.js.map +", + "name": "~/index.js", + }, + Object { + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\"],\\"mappings\\":\\"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", + "name": "~/index.js.map", + }, +] +`; + +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:///./_virtual_%00sentry-release-injector\\",\\"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\\",\\"\\\\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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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`] = ` +Array [ + Object { + "content": "(()=>{var e={434:(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(434);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})})(); +//# sourceMappingURL=index.js.map", + "name": "~/index.js", + }, + Object { + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", + "name": "~/index.js.map", + }, +] +`; 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 ab7918c6ff88..3283fda0aa5b 100644 --- a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts +++ b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts @@ -1,14 +1,13 @@ import { pluginConfig } from "./config"; import { BUNDLERS } from "../../utils/bundlers"; -import { getReferenceFiles, getSentryReleaseFiles } from "../../utils/releases"; +import { getSentryReleaseFiles } from "../../utils/releases"; describe("Simple Sourcemaps Upload (one string include + default options)", () => { it.each(BUNDLERS)("uploads the correct files using %s", async (bundler) => { const release = `${pluginConfig.release || ""}-${bundler}`; const sentryFiles = await getSentryReleaseFiles(release); - const refFiles = getReferenceFiles(bundler, __dirname); - expect(sentryFiles).toMatchObject(refFiles); + expect(sentryFiles).toMatchSnapshot(); }); }); diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js deleted file mode 100644 index 7485db947d25..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js +++ /dev/null @@ -1,2 +0,0 @@ -"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"); -//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map deleted file mode 100644 index 3e8047c2ba23..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/esbuild/~/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["sentry-plugin:\u0000sentry-release-injector","../../input/fib.js","../../input/index.js"],"sourcesContent":["\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-esbuild\"};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":[],"mappings":"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js deleted file mode 100644 index b77c543a0de8..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:"basic-upload-rollup"}; - -const fibonacci = (n) => { - if (n === 3) { - throw new Error("I'm an uncaught error"); - } - if (n <= 1) { - return n; - } - return fibonacci(n - 1) + fibonacci(n - 2); -}; - -console.log("Hi, I'm a very simple app"); - -fibonacci(10); - -console.log("I'm done"); -//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map deleted file mode 100644 index 60b20001040e..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/rollup/~/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js deleted file mode 100644 index 4438a4b33d4a..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js +++ /dev/null @@ -1,2 +0,0 @@ -"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"); -//# sourceMappingURL=index.js.map diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map deleted file mode 100644 index f579e392b316..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/vite/~/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../../input/fib.js","../../input/index.js"],"sourcesContent":["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","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\n"],"names":["fibonacci","n"],"mappings":"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js deleted file mode 100644 index 9066db4c3cbb..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js +++ /dev/null @@ -1,2 +0,0 @@ -!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 \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map deleted file mode 100644 index cf01f9e9a227..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack4/~/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["webpack:///webpack/bootstrap","webpack:///./_virtual_%00sentry-release-injector","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","\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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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"} \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js deleted file mode 100644 index 05d1a48b700e..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var e={434:(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(434);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})})(); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map b/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map deleted file mode 100644 index 001628f390dd..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/ref/webpack5/~/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global","webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js","webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js"],"sourcesContent":["\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-webpack5\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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};\nimport \"\u0000sentry-release-injector\";","import { fibonacci } from \"./fib\";\nconsole.log(\"Hi, I'm a very simple app\");\n\nfibonacci(10);\n\nconsole.log(\"I'm done\");\nimport \"\u0000sentry-release-injector\";"],"names":["window","g","self","SENTRY_RELEASE","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","globalThis","this","Function","e","r","Symbol","toStringTag","Object","defineProperty","value","fibonacci","n","Error","console","log"],"mappings":"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W"} \ No newline at end of file diff --git a/packages/e2e-tests/utils/releases.ts b/packages/e2e-tests/utils/releases.ts index d3c673939270..9f8740a49c0a 100644 --- a/packages/e2e-tests/utils/releases.ts +++ b/packages/e2e-tests/utils/releases.ts @@ -6,10 +6,6 @@ import { getReleaseFilesFromSentry, } from "./sentry-api"; -import fs from "fs"; -import path from "path"; -import glob from "glob"; - type ReleaseFilesData = { id: string; name: string; @@ -51,20 +47,6 @@ export async function getSentryReleaseFiles(release: string): Promise { - return { - name: path.relative(refFilePath, file), - content: fs.readFileSync(file).toString(), - }; - }); -} - async function getReleaseFiles(release: string): Promise { const response = await getReleaseFilesFromSentry(release); return response.data as ReleaseFilesData[]; From c576affd2cad0a099027f5fd177255f7fc2def30 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 17 Nov 2022 11:09:36 +0100 Subject: [PATCH 103/640] feat: Replace `entries` option with `releaseInjectionTargets` (#123) --- MIGRATION.md | 9 ++ packages/bundler-plugin-core/src/index.ts | 94 ++++++------------- .../src/options-mapping.ts | 19 ++-- packages/bundler-plugin-core/src/types.ts | 17 ++-- .../__snapshots__/basic-upload.test.ts.snap | 8 +- packages/esbuild-plugin/README.md | 66 ++++++------- .../array-entries-option.test.ts | 2 +- .../fixtures/array-entries-option/setup.ts | 2 +- .../function-entries-option.test.ts | 2 +- .../fixtures/function-entries-option/setup.ts | 2 +- .../fixtures/regex-entries-option/setup.ts | 2 +- .../string-entries-option.test.ts | 2 +- .../fixtures/string-entries-option/setup.ts | 2 +- .../string-entries-option.test.ts | 2 +- packages/rollup-plugin/README.md | 66 ++++++------- packages/vite-plugin/README.md | 66 ++++++------- packages/webpack-plugin/README.md | 66 ++++++------- 17 files changed, 204 insertions(+), 223 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 04bba739c033..83e7d0ee7ae3 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -23,6 +23,15 @@ sentryWebpackPlugin({ }); ``` +### Replacing `entries` option with `releaseInjectionTargets` + +Previously, the `entries` option was used to filter for _entrypoints_ that the plugin should inject the release into. +Releases were only injected into entrypoint files of a bundle. +In version 2, releases are injected into every module that is part of a bundle. +Don't worry, your bundler will only include the injected release code once. +Instead of using the `entries` option to filter for _entrypoints_, the `releaseInjectionTargets` option can now be used to filter for _modules_ that the plugin should inject the release into. +Matching behaviour stays the same. + ### Injecting `SENTRY_RELEASES` Map Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into the global object which would map from `project@org` to the `release` value. In version 2, we made this behaviour opt-in by setting the `injectReleasesMap` option in the plugin options to `true`. diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 84da564c3564..bdc8bf6dd10b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -28,6 +28,8 @@ import { Hub } from "@sentry/node"; // This probably doesn't work for all bundlers but for rollup it does. const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; +const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".cjs", ".mjs"]; + /** * The sentry bundler plugin concerns itself with two things: * - Release injection @@ -35,45 +37,11 @@ const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; * * Release injection: * - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` variable into the entrypoint of all bundles. - * On a technical level this is done by appending an import (`import "sentry-release-injector;"`) to all entrypoint files - * of the user code (see `transformInclude` and `transform` hooks). This import is then resolved by the sentry plugin - * to a virtual module that sets the global variable (see `resolveId` and `load` hooks). - * - * The resulting output approximately looks like this: - * - * ```text - * entrypoint1.js (user file) - * ┌─────────────────────────┐ ┌─────────────────────────────────────────────────┐ - * │ │ │ import { myFunction } from "./my-library.js"; │ - * │ sentry-bundler-plugin │ │ │ - * │ │ │ const myResult = myFunction(); │ - * └---------│--------------- │ export { myResult }; │ - * │ │ │ - * │ injects │ // injected by sentry plugin │ - * ├───────────────────► import "sentry-release-injector"; ─────────────────────┐ - * │ └─────────────────────────────────────────────────┘ │ - * │ │ - * │ │ - * │ entrypoint2.js (user file) │ - * │ ┌─────────────────────────────────────────────────┐ │ - * │ │ export function myFunction() { │ │ - * │ │ return "Hello world!"; │ │ - * │ │ } │ │ - * │ │ │ │ - * │ injects │ // injected by sentry plugin │ │ - * └───────────────────► import "sentry-release-injector"; ─────────────────────┤ - * └─────────────────────────────────────────────────┘ │ - * │ - * │ - * sentry-release-injector │ - * ┌──────────────────────────────────┐ │ - * │ │ is resolved │ - * │ global.SENTRY_RELEASE = { ... } │ by plugin │ - * │ // + a little more logic │<─────────────────────┘ - * │ │ (only once) - * └──────────────────────────────────┘ - * ``` + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module + * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) + * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved + * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). + * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. * * Source maps upload: * @@ -128,12 +96,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { sentryHub.setUser({ id: internalOptions.org }); - // This is `nonEntrypointSet` instead of `entrypointSet` because this set is filled in the `resolveId` hook and there - // we don't have guaranteed access to *absolute* paths of files if they're entrypoints. For non-entrypoints we're - // guaranteed to have absolute paths - we're then using the paths in later hooks to make decisions about whether a - // file is an entrypoint or a non-entrypoint. - const nonEntrypointSet = new Set(); - let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; @@ -192,10 +154,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { level: "info", }); - if (!isEntry) { - nonEntrypointSet.add(id); - } - if (id === RELEASE_INJECTOR_ID) { return RELEASE_INJECTOR_ID; } else { @@ -235,7 +193,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { /** * This hook determines whether we want to transform a module. In the sentry bundler plugin we want to transform every entrypoint - * unless configured otherwise with the `entries` option. + * unless configured otherwise with the `releaseInjectionTargets` option. * * @param id Always the absolute (fully resolved) path to the module. * @returns `true` or `false` depending on whether we want to transform the module. For the sentry bundler plugin we only @@ -247,28 +205,38 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { level: "info", }); - if (internalOptions.entries) { - // If there's an `entries` option transform (ie. inject the release varible) when the file path matches the option. - if (typeof internalOptions.entries === "function") { - return internalOptions.entries(id); + // We don't want to transform our injected code. + if (id === RELEASE_INJECTOR_ID) { + return false; + } + + if (internalOptions.releaseInjectionTargets) { + // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. + if (typeof internalOptions.releaseInjectionTargets === "function") { + return internalOptions.releaseInjectionTargets(id); } - return internalOptions.entries.some((entry) => { + return internalOptions.releaseInjectionTargets.some((entry) => { if (entry instanceof RegExp) { return entry.test(id); } else { return id === entry; } }); - } + } else { + const pathIsOrdinary = !id.includes("?") && !id.includes("#"); - // We want to transform (release injection) every module except for "sentry-release-injector". - return id !== RELEASE_INJECTOR_ID && !nonEntrypointSet.has(id); + const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( + (allowedFileEnding) => id.endsWith(allowedFileEnding) + ); + + return pathIsOrdinary && pathHasAllowedFileEnding; + } }, /** * This hook is responsible for injecting the "sentry release injector" imoprt statement into each entrypoint unless - * configured otherwise with the `entries` option (logic for that is in the `transformInclude` hook). + * configured otherwise with the `releaseInjectionTargets` option (logic for that is in the `transformInclude` hook). * * @param code Code of the file to transform. * @param id Always the absolute (fully resolved) path to the module. @@ -281,11 +249,11 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }); // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. - const ms: MagicString = new MagicString(code); // Very stupid author's note: For some absurd reason, when we add a JSDoc to this hook, the TS language server starts complaining about `ms` and adding a type annotation helped so that's why it's here. (┛ಠ_ಠ)┛彡┻━┻ + const ms = new MagicString(code); - // appending instead of prepending has less probability of mucking with user'sadly - // source maps and import statements get to the top anyways - ms.append(`import "${RELEASE_INJECTOR_ID}";`); + // Appending instead of prepending has less probability of mucking with user's source maps. + // Luckily import statements get hoisted to the top anyways. + ms.append(`;\nimport "${RELEASE_INJECTOR_ID}";`); if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index d1abab76520b..a2b1f2992b60 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -34,7 +34,7 @@ type OptionalInternalOptions = Partial< >; type NormalizedInternalOptions = { - entries: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; + releaseInjectionTargets: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; include: InternalIncludeEntry[]; }; @@ -108,7 +108,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions // Optional options setCommits: userOptions.setCommits, deploy: userOptions.deploy, - entries: normalizeEntries(userOptions.entries), + releaseInjectionTargets: normalizeReleaseInjectionTargets(userOptions.releaseInjectionTargets), dist: userOptions.dist, errorHandler: userOptions.errorHandler, configFile: userOptions.configFile, @@ -124,17 +124,18 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions } /** - * Converts the user-facing `entries` option to the internal `entries` option + * Converts the user-facing `releaseInjectionTargets` option to the internal + * `releaseInjectionTargets` option */ -function normalizeEntries( - userEntries: UserOptions["entries"] +function normalizeReleaseInjectionTargets( + userReleaseInjectionTargets: UserOptions["releaseInjectionTargets"] ): (string | RegExp)[] | ((filePath: string) => boolean) | undefined { - if (userEntries === undefined) { + if (userReleaseInjectionTargets === undefined) { return undefined; - } else if (typeof userEntries === "function") { - return userEntries; + } else if (typeof userReleaseInjectionTargets === "function") { + return userReleaseInjectionTargets; } else { - return arrayify(userEntries); + return arrayify(userReleaseInjectionTargets); } } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 28e67f0d5349..5f98824a4802 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -63,16 +63,19 @@ export type Options = Omit & { dist?: string; /** - * Filter for bundle entry points that should contain the provided release. + * Filter for modules that the release should be injected in. * - * This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. - * It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should - * return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this - * option require a full match with the absolute path of the bundle. + * This option takes a string, a regular expression, or an array containing strings, + * regular expressions, or both. It's also possible to provide a filter function + * that takes the absolute path of a processed module. It should return `true` + * if the release should be injected into the module and `false` otherwise. String + * values of this option require a full match with the absolute path of the module. * - * By default, the release will be injected into all entry points. + * By default, the release will be injected into all modules - however, bundlers + * will include the injected release code only once per entrypoint. + * If release injection should be disabled, provide an empty array here. */ - entries?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); + releaseInjectionTargets?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); /** * Determines if the Sentry release record should be automatically finalized 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 7175c942da07..c8c6dfb3abcb 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 @@ -9,7 +9,7 @@ Array [ "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"sources\\":[\\"sentry-plugin:\\\\u0000sentry-release-injector\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-esbuild\\\\\\"};\\",\\"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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[],\\"mappings\\":\\"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", + "content": "{\\"version\\":3,\\"sources\\":[\\"sentry-plugin:\\\\u0000sentry-release-injector\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-esbuild\\\\\\"};\\",\\"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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[],\\"mappings\\":\\"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", "name": "~/index.js.map", }, ] @@ -80,7 +80,7 @@ Array [ "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack:///webpack/bootstrap\\",\\"webpack:///./_virtual_%00sentry-release-injector\\",\\"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\\",\\"\\\\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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack:///webpack/bootstrap\\",\\"webpack:///./_virtual_%00sentry-release-injector\\",\\"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\\",\\"\\\\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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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", }, ] @@ -89,12 +89,12 @@ Array [ exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack5 1`] = ` Array [ Object { - "content": "(()=>{var e={434:(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(434);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})})(); + "content": "(()=>{var e={87:(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(87);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})})(); //# sourceMappingURL=index.js.map", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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};\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"2BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,yCCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", "name": "~/index.js.map", }, ] diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index 77eef2194b24..634a3ad546c9 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -54,39 +54,39 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Esbuild Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | #### options.include: diff --git a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts index cdf6d8613144..093873447b8e 100644 --- a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts +++ b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts @@ -10,7 +10,7 @@ function getFileContents(bundlePath: string): string { return fs.readFileSync(bundlePath, { encoding: "utf-8" }); } -describe("`entries` option should work as expected when given an array of RegEx and strings", () => { +describe("`releaseInjectionTargets` option should work as expected when given an array of RegEx and strings", () => { test("esbuild bundle", () => { expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( "I AM A RELEASE!" diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts index 1da304a4e2d8..a07cd847df33 100644 --- a/packages/integration-tests/fixtures/array-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/array-entries-option/setup.ts @@ -13,7 +13,7 @@ createCjsBundles( { release: "I AM A RELEASE!", include: outputDir, - entries: [/entrypoint1\.js/, entryPoint3Path], + releaseInjectionTargets: [/entrypoint1\.js/, entryPoint3Path], dryRun: true, } as Options ); diff --git a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts index d238a443879b..11d2db889bcc 100644 --- a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts +++ b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts @@ -10,7 +10,7 @@ function getFileContents(bundlePath: string): string { return fs.readFileSync(bundlePath, { encoding: "utf-8" }); } -describe("`entries` option should work as expected when given a function", () => { +describe("`releaseInjectionTargets` option should work as expected when given a function", () => { test("esbuild bundle", () => { expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( "I AM A RELEASE!" diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts index d30480410ec0..059b85c20019 100644 --- a/packages/integration-tests/fixtures/function-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/function-entries-option/setup.ts @@ -13,7 +13,7 @@ createCjsBundles( { release: "I AM A RELEASE!", include: outputDir, - entries: (entrypointPath) => + releaseInjectionTargets: (entrypointPath) => entrypointPath === entryPoint1Path || entrypointPath === entryPoint3Path, dryRun: true, } as Options diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts index 8f528f4c7aec..a3e004e50931 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/setup.ts @@ -10,5 +10,5 @@ createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, release: "I AM A RELEASE!", include: outputDir, dryRun: true, - entries: /entrypoint1\.js/, + releaseInjectionTargets: /entrypoint1\.js/, } as Options); diff --git a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts index d3637dd3caf3..b37e7f4733eb 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts @@ -10,7 +10,7 @@ function getFileContents(bundlePath: string): string { return fs.readFileSync(bundlePath, { encoding: "utf-8" }); } -describe("`entries` option should work as expected when given a regular expression", () => { +describe("`releaseInjectionTargets` option should work as expected when given a regular expression", () => { test("esbuild bundle", () => { expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( "I AM A RELEASE!" diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts index 374012e9cae7..7b07fb66451a 100644 --- a/packages/integration-tests/fixtures/string-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/string-entries-option/setup.ts @@ -9,6 +9,6 @@ const outputDir = path.resolve(__dirname, "./out"); createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { release: "I AM A RELEASE!", include: outputDir, - entries: entryPoint1Path, + releaseInjectionTargets: entryPoint1Path, dryRun: true, } as Options); diff --git a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts index 7095f4fe6956..caf0f9e142c9 100644 --- a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts +++ b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts @@ -10,7 +10,7 @@ function getFileContents(bundlePath: string): string { return fs.readFileSync(bundlePath, { encoding: "utf-8" }); } -describe("`entries` option should work as expected when given a string", () => { +describe("`releaseInjectionTargets` option should work as expected when given a string", () => { test("esbuild bundle", () => { expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( "I AM A RELEASE!" diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 39addcea31ce..296d14a14363 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -54,39 +54,39 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Rollup Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | #### options.include: diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 56b7fe212f17..473684c8a26f 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -54,39 +54,39 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Vite Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | #### options.include: diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index ecd36bf459db..35b765727caa 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -54,39 +54,39 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Webpack Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ------------------ | -------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for bundle entry points that should contain the provided release. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed entrypoint and should return `true` if the release should be injected into the entrypoint and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all entry points. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | #### options.include: From d35c948752dd33c69f9c7ed1af010b790f0870b6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 17 Nov 2022 15:29:31 +0100 Subject: [PATCH 104/640] meta: Update changelog for 0.2.0 (#125) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11863d31a238..79b485daae40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.2.0 + +This release replaces the `entries` option with `releaseInjectionTargets` which is a breaking change from previous versions. +For more information, take a look at the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md#replacing-entries-option-with-releaseinjectiontargets). + +- feat: Replace `entries` option with `releaseInjectionTargets` (#123) + ## 0.1.0 With this release, the Sentry bundler plugins support all features of the standalone Sentry Webpack plugin. From d452271f3d6d7f8f732d087ca6e2ef13953c46b6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 17 Nov 2022 14:30:57 +0000 Subject: [PATCH 105/640] release: 0.2.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index adfeeedd5a40..aff9f61b70c0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.1.0", + "version": "0.2.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5aac11d6e698..a48fd96f5ad0 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.1.0", + "version": "0.2.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -50,8 +50,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 162757ed4e57..b1c6408a66b0 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.1.0", - "@sentry/rollup-plugin": "0.1.0", - "@sentry/vite-plugin": "0.1.0", - "@sentry/webpack-plugin": "0.1.0", + "@sentry/esbuild-plugin": "0.2.0", + "@sentry/rollup-plugin": "0.2.0", + "@sentry/vite-plugin": "0.2.0", + "@sentry/webpack-plugin": "0.2.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 9a353fcf1cc3..1293ba1db11d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.1.0", + "version": "0.2.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.1.0" + "@sentry/bundler-plugin-core": "0.2.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2750f7ddc996..a72172d0291a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1bede89237f9..b89e471ac28f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", - "@sentry/bundler-plugin-core": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry/bundler-plugin-core": "0.2.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 34ea74a7615f..f4003c2db7a3 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.1.0", + "@sentry/bundler-plugin-core": "0.2.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 5d314edde19b..6d63db56f55c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.1.0", + "version": "0.2.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -41,7 +41,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.1.0" + "@sentry/bundler-plugin-core": "0.2.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -51,8 +51,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6181941ab41b..15e85ae21412 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index bbb0dfc241a1..2b5e709cf42c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.1.0", + "version": "0.2.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.1.0" + "@sentry/bundler-plugin-core": "0.2.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 842272589a95..8fb5086c4fd9 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.1.0", + "version": "0.2.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.1.0" + "@sentry/bundler-plugin-core": "0.2.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.1.0", + "@sentry-internal/eslint-config": "0.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 10e8d96520a3dbac0750b655489f5572907cd31c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 23 Nov 2022 13:55:20 +0100 Subject: [PATCH 106/640] docs: Remove WIP warning from READMEs (#130) --- README.md | 4 +--- packages/bundler-plugin-core/README.md | 2 -- packages/esbuild-plugin/README.md | 4 +--- packages/rollup-plugin/README.md | 2 -- packages/vite-plugin/README.md | 4 +--- packages/webpack-plugin/README.md | 4 +--- 6 files changed, 4 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c50a1b04205e..1f70a67ee5e7 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,7 @@

-# Sentry Bundler Plugins (WIP) - -**WARNING: This project is work in progress! Do not yet use it in production. We're happy to receive your feedback!** +# Sentry Bundler Plugins Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. diff --git a/packages/bundler-plugin-core/README.md b/packages/bundler-plugin-core/README.md index bc20d6a3b8f5..e95ece70c9c8 100644 --- a/packages/bundler-plugin-core/README.md +++ b/packages/bundler-plugin-core/README.md @@ -6,8 +6,6 @@ # Sentry Bundler Plugin Core -**WARNING: This package is work in progress! Do not yet use it in production. We're happy to receive your feedback!** - Core package containing the bundler-agnostic functionality used by the bundler plugins. Check out the individual packages for more information and examples: diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index 634a3ad546c9..b229a371fccf 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -4,9 +4,7 @@

-# Sentry Esbuild Plugin (WIP) - -**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** +# Sentry Esbuild Plugin A esbuild plugin that provides release management features for Sentry: diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 296d14a14363..281531ce16ce 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -6,8 +6,6 @@ # Sentry Rollup Plugin -**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** - A Rollup plugin that provides release management features for Sentry: - Sourcemap upload diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 473684c8a26f..6350da692092 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -4,9 +4,7 @@

-# Sentry Vite Plugin (WIP) - -**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** +# Sentry Vite Plugin A Vite plugin that provides release management features for Sentry: diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 35b765727caa..7e2c27aef926 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -4,9 +4,7 @@

-# Sentry Webpack Plugin (WIP) - -**WARNING: This package is work in progress! Use with caution and do not yet use it in production. We're happy to receive your feedback!** +# Sentry Webpack Plugin A Webpack plugin that provides release management features for Sentry: From f34219f7d8cec2c1ce5d9df698d4678f2cd3d17a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 23 Nov 2022 15:33:14 +0100 Subject: [PATCH 107/640] fix(core): Fix telemetry option logic (#128) --- packages/bundler-plugin-core/src/index.ts | 144 ++++++++++-------- .../src/options-mapping.ts | 7 - .../bundler-plugin-core/src/sentry/logger.ts | 4 +- .../src/sentry/releasePipeline.ts | 48 ++++-- .../src/sentry/telemetry.ts | 132 ++++++++++------ .../test/option-mappings.test.ts | 17 --- .../test/sentry/logger.test.ts | 41 ++++- .../test/sentry/releasePipeline.test.ts | 36 ++--- .../test/sentry/telemetry.test.ts | 101 ++++++------ 9 files changed, 306 insertions(+), 224 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index bdc8bf6dd10b..bbb87f47b910 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -11,17 +11,17 @@ import { } from "./sentry/releasePipeline"; import "@sentry/tracing"; import { - addPluginOptionTags, + addPluginOptionInformationToHub, addSpanToTransaction, captureMinimalError, makeSentryClient, - turnOffTelemetryForSelfHostedSentry, + shouldSendTelemetry, } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; import { createLogger, Logger } from "./sentry/logger"; import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; -import { Hub } from "@sentry/node"; +import { Hub, makeMain } from "@sentry/node"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. // This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. @@ -60,11 +60,21 @@ const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".cjs const unplugin = createUnplugin((options, unpluginMetaContext) => { const internalOptions = normalizeUserOptions(options); - const { hub: sentryHub } = makeSentryClient( + const allowedToSendTelemetryPromise = shouldSendTelemetry(internalOptions); + + const { sentryHub, sentryClient } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - internalOptions.telemetry + allowedToSendTelemetryPromise ); - addPluginOptionTags(internalOptions, sentryHub); + + addPluginOptionInformationToHub(internalOptions, sentryHub, unpluginMetaContext.framework); + + //TODO: This call is problematic because as soon as we set our hub as the current hub + // we might interfere with other plugins that use Sentry. However, for now, we'll + // leave it in because without it, we can't get distributed traces (which are pretty nice) + // Let's keep it until someone complains about interference. + // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. + makeMain(sentryHub); const logger = createLogger({ hub: sentryHub, @@ -83,19 +93,14 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const cli = getSentryCli(internalOptions, logger); - if (internalOptions.telemetry) { - logger.info("Sending error and performance telemetry data to Sentry."); - logger.info("To disable telemetry, set `options.telemetry` to `false`."); - } - - sentryHub.setTags({ - organization: internalOptions.org, - project: internalOptions.project, - bundler: unpluginMetaContext.framework, + const releaseNamePromise = new Promise((resolve) => { + if (options.release) { + resolve(options.release); + } else { + resolve(cli.releases.proposeVersion()); + } }); - sentryHub.setUser({ id: internalOptions.org }); - let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; @@ -107,14 +112,18 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * Responsible for starting the plugin execution transaction and the release injection span */ async buildStart() { - await turnOffTelemetryForSelfHostedSentry(cli, sentryHub); + logger.debug("Called 'buildStart'"); - if (!internalOptions.release) { - internalOptions.release = await cli.releases.proposeVersion(); + const isAllowedToSendToSendTelemetry = await allowedToSendTelemetryPromise; + if (isAllowedToSendToSendTelemetry) { + logger.info("Sending error and performance telemetry data to Sentry."); + logger.info("To disable telemetry, set `options.telemetry` to `false`."); } + const releaseName = await releaseNamePromise; + // At this point, we either have determined a release or we have to bail - if (!internalOptions.release) { + if (!releaseName) { handleError( new Error( "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" @@ -129,6 +138,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { op: "function.plugin", name: "Sentry Bundler Plugin execution", }); + releaseInjectionSpan = addSpanToTransaction( { hub: sentryHub, parentSpan: transaction, logger, cli }, "function.plugin.inject_release", @@ -148,11 +158,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. */ resolveId(id, importer, { isEntry }) { - sentryHub.addBreadcrumb({ - category: "resolveId", - message: `isEntry: ${String(isEntry)}`, - level: "info", - }); + logger.debug('Called "resolveId":', { id, importer, isEntry }); if (id === RELEASE_INJECTOR_ID) { return RELEASE_INJECTOR_ID; @@ -162,7 +168,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }, loadInclude(id) { - logger.info(`Called "loadInclude": ${JSON.stringify({ id })}`); + logger.debug('Called "loadInclude":', { id }); return id === RELEASE_INJECTOR_ID; }, @@ -173,15 +179,12 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * @param id Always the absolute (fully resolved) path to the module. * @returns The global injector code when we load the "sentry-release-injector" module. Otherwise returns `undefined`. */ - load(id) { - sentryHub.addBreadcrumb({ - category: "load", - level: "info", - }); + async load(id) { + logger.debug('Called "load":', { id }); if (id === RELEASE_INJECTOR_ID) { return generateGlobalInjectorCode({ - release: internalOptions.release, + release: await releaseNamePromise, injectReleasesMap: internalOptions.injectReleasesMap, org: internalOptions.org, project: internalOptions.project, @@ -200,10 +203,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * want to transform the release injector file. */ transformInclude(id) { - sentryHub.addBreadcrumb({ - category: "transformInclude", - level: "info", - }); + logger.debug('Called "transformInclude":', { id }); // We don't want to transform our injected code. if (id === RELEASE_INJECTOR_ID) { @@ -242,11 +242,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * @param id Always the absolute (fully resolved) path to the module. * @returns transformed code + source map */ - transform(code) { - sentryHub.addBreadcrumb({ - category: "transform", - level: "info", - }); + transform(code, id) { + logger.debug('Called "transform":', { id }); // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); @@ -272,7 +269,9 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * Responsible for executing the sentry release creation pipeline (i.e. creating a release on * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) */ - writeBundle() { + async writeBundle() { + logger.debug('Called "writeBundle"'); + releaseInjectionSpan?.finish(); const releasePipelineSpan = transaction && @@ -289,45 +288,58 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; - createNewRelease(internalOptions, ctx) - .then(() => cleanArtifacts(internalOptions, ctx)) - .then(() => uploadSourceMaps(internalOptions, ctx)) - .then(() => setCommits(internalOptions, ctx)) - .then(() => finalizeRelease(internalOptions, ctx)) - .then(() => addDeploy(internalOptions, ctx)) - .then(() => transaction?.setStatus("ok")) - .catch((e: Error) => { - transaction?.setStatus("cancelled"); - handleError(e, logger, internalOptions.errorHandler, sentryHub); - }) - .finally(() => { - sentryHub.addBreadcrumb({ - category: "writeBundle:finish", - level: "info", - }); - releasePipelineSpan?.finish(); - transaction?.finish(); + const releaseName = await releaseNamePromise; + + try { + await createNewRelease(internalOptions, ctx, releaseName); + await cleanArtifacts(internalOptions, ctx, releaseName); + await uploadSourceMaps(internalOptions, ctx, releaseName); + await setCommits(internalOptions, ctx, releaseName); + await finalizeRelease(internalOptions, ctx, releaseName); + await addDeploy(internalOptions, ctx, releaseName); + transaction?.setStatus("ok"); + } catch (e: unknown) { + transaction?.setStatus("cancelled"); + handleError(e, logger, internalOptions.errorHandler, sentryHub); + } finally { + sentryHub.addBreadcrumb({ + category: "writeBundle:finish", + level: "info", + }); + releasePipelineSpan?.finish(); + transaction?.finish(); + await sentryClient.flush().then(null, () => { + logger.warn("Sending of telemetry failed"); }); + } }, }; }); function handleError( - error: Error, + unknownError: unknown, logger: Logger, errorHandler: InternalOptions["errorHandler"], sentryHub?: Hub ) { - logger.error(error.message); + if (unknownError instanceof Error) { + logger.error(unknownError.message); + } else { + logger.error(String(unknownError)); + } if (sentryHub) { - captureMinimalError(error, sentryHub); + captureMinimalError(unknownError, sentryHub); } if (errorHandler) { - errorHandler(error); + if (unknownError instanceof Error) { + errorHandler(unknownError); + } else { + errorHandler(new Error("An unknown error occured")); + } } else { - throw error; + throw unknownError; } } diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index a2b1f2992b60..f38d39c7901d 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -5,7 +5,6 @@ import { arrayify } from "./utils"; type RequiredInternalOptions = Required< Pick< UserOptions, - | "release" | "finalize" | "dryRun" | "debug" @@ -114,12 +113,6 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions configFile: userOptions.configFile, }; - // We only want to enable telemetry for SaaS users - // This is not the final check (we need to call Sentry CLI at a later point) - // but we can already at this point make a first decision. - // @see `turnOffTelemetryForSelfHostedSentry` (telemetry.ts) for the second check. - options.telemetry = options.telemetry && options.url === SENTRY_SAAS_URL; - return options; } diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index 9328cf37284e..4dec02920369 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -48,14 +48,12 @@ export function createLogger(options: LoggerOptions): Logger { addBreadcrumb("error", message); }, - debug(message: string, ...params: unknown[]) { if (!options.silent && options.debug) { // eslint-disable-next-line no-console console.log(`${options.prefix} Debug: ${message}`, ...params); + // We're not creating breadcrumbs for debug logs because it is super spammy } - - addBreadcrumb("debug", message); }, }; } diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 05a75ea871c7..943f4cdc1dcc 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -11,16 +11,24 @@ import { InternalOptions } from "../options-mapping"; import { BuildContext } from "../types"; import { addSpanToTransaction } from "./telemetry"; -export async function createNewRelease(options: InternalOptions, ctx: BuildContext): Promise { +export async function createNewRelease( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { const span = addSpanToTransaction(ctx, "function.plugin.create_release"); - await ctx.cli.releases.new(options.release); + await ctx.cli.releases.new(releaseName); ctx.logger.info("Successfully created release."); span?.finish(); } -export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext): Promise { +export async function cleanArtifacts( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { if (!options.cleanArtifacts) { logger.debug("Skipping artifact cleanup."); return; @@ -28,25 +36,33 @@ export async function cleanArtifacts(options: InternalOptions, ctx: BuildContext const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); - await ctx.cli.releases.execute(["releases", "files", options.release, "delete", "--all"], true); + await ctx.cli.releases.execute(["releases", "files", releaseName, "delete", "--all"], true); ctx.logger.info("Successfully cleaned previous artifacts."); span?.finish(); } -export async function uploadSourceMaps(options: InternalOptions, ctx: BuildContext): Promise { +export async function uploadSourceMaps( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); ctx.logger.info("Uploading Sourcemaps."); // Since our internal include entries contain all top-level sourcemaps options, // we only need to pass the include option here. - await ctx.cli.releases.uploadSourceMaps(options.release, { include: options.include }); + await ctx.cli.releases.uploadSourceMaps(releaseName, { include: options.include }); ctx.logger.info("Successfully uploaded Sourcemaps."); span?.finish(); } -export async function setCommits(options: InternalOptions, ctx: BuildContext): Promise { +export async function setCommits( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { if (!options.setCommits) { logger.debug("Skipping setting commits to release."); return; @@ -55,7 +71,7 @@ export async function setCommits(options: InternalOptions, ctx: BuildContext): P const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; - await ctx.cli.releases.setCommits(options.release, { + await ctx.cli.releases.setCommits(releaseName, { commit, previousCommit, repo, @@ -68,7 +84,11 @@ export async function setCommits(options: InternalOptions, ctx: BuildContext): P span?.finish(); } -export async function finalizeRelease(options: InternalOptions, ctx: BuildContext): Promise { +export async function finalizeRelease( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { if (!options.finalize) { logger.debug("Skipping release finalization."); return; @@ -76,13 +96,17 @@ export async function finalizeRelease(options: InternalOptions, ctx: BuildContex const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); - await ctx.cli.releases.finalize(options.release); + await ctx.cli.releases.finalize(releaseName); ctx.logger.info("Successfully finalized release."); span?.finish(); } -export async function addDeploy(options: InternalOptions, ctx: BuildContext): Promise { +export async function addDeploy( + options: InternalOptions, + ctx: BuildContext, + releaseName: string +): Promise { if (!options.deploy) { logger.debug("Skipping adding deploy info to release."); return; @@ -91,7 +115,7 @@ export async function addDeploy(options: InternalOptions, ctx: BuildContext): Pr const span = addSpanToTransaction(ctx, "function.plugin.deploy"); const { env, started, finished, time, name, url } = options.deploy; - await ctx.cli.releases.newDeploy(options.release, { + await ctx.cli.releases.newDeploy(releaseName, { env, started, finished, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 0b6af4933346..75a81fc1beb8 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -1,45 +1,47 @@ -import { - defaultStackParser, - Hub, - Integrations, - makeMain, - makeNodeTransport, - NodeClient, - Span, -} from "@sentry/node"; +import SentryCli from "@sentry/cli"; +import { defaultStackParser, Hub, makeNodeTransport, NodeClient, Span } from "@sentry/node"; import { InternalOptions, SENTRY_SAAS_URL } from "../options-mapping"; import { BuildContext } from "../types"; -import { SentryCLILike } from "./cli"; + +const SENTRY_SAAS_HOSTNAME = "sentry.io"; export function makeSentryClient( dsn: string, - telemetryEnabled: boolean -): { client: NodeClient; hub: Hub } { + allowedToSendTelemetryPromise: Promise +): { sentryHub: Hub; sentryClient: NodeClient } { const client = new NodeClient({ dsn, - enabled: telemetryEnabled, - tracesSampleRate: telemetryEnabled ? 1.0 : 0.0, - sampleRate: telemetryEnabled ? 1.0 : 0.0, + tracesSampleRate: 1, + sampleRate: 1, release: __PACKAGE_VERSION__, - integrations: [new Integrations.Http({ tracing: true })], + integrations: [], tracePropagationTargets: ["sentry.io/api"], stackParser: defaultStackParser, - transport: makeNodeTransport, + + // We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told + // us that the upload URL is the Sentry SaaS URL) + transport: (nodeTransportOptions) => { + const nodeTransport = makeNodeTransport(nodeTransportOptions); + return { + flush: (timeout) => nodeTransport.flush(timeout), + send: async (request) => { + const isAllowedToSend = await allowedToSendTelemetryPromise; + if (isAllowedToSend) { + return nodeTransport.send(request); + } else { + return undefined; + } + }, + }; + }, }); const hub = new Hub(client); - //TODO: This call is problematic because as soon as we set our hub as the current hub - // we might interfere with other plugins that use Sentry. However, for now, we'll - // leave it in because without it, we can't get distributed traces (which are pretty nice) - // Let's keep it until someone complains about interference. - // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. - makeMain(hub); - - return { client, hub }; + return { sentryClient: client, sentryHub: hub }; } /** @@ -79,8 +81,14 @@ export function captureMinimalError(error: unknown | Error, hub: Hub) { hub.captureException(sentryError); } -export function addPluginOptionTags(options: InternalOptions, hub: Hub) { +export function addPluginOptionInformationToHub( + options: InternalOptions, + hub: Hub, + bundler: "rollup" | "webpack" | "vite" | "esbuild" +) { const { + org, + project, cleanArtifacts, finalize, setCommits, @@ -119,29 +127,65 @@ export function addPluginOptionTags(options: InternalOptions, hub: Hub) { } hub.setTag("node", process.version); + + hub.setTags({ + organization: org, + project, + bundler, + }); + + hub.setUser({ id: org }); } -/** - * Makes a call to SentryCLI to get the Sentry server URL the CLI uses. - * - * We need to check and decide to use telemetry based on the CLI's respone to this call - * because only at this time we checked a possibly existing .sentryclirc file. This file - * could point to another URL than the default URL. - */ -export async function turnOffTelemetryForSelfHostedSentry(cli: SentryCLILike, hub: Hub) { - const cliInfo = await cli.execute(["info"], false); +export async function shouldSendTelemetry(options: InternalOptions): Promise { + const { silent, org, project, authToken, url, vcsRemote, customHeader, dist, telemetry, dryRun } = + options; + + // `options.telemetry` defaults to true + if (telemetry === false) { + return false; + } - const url = cliInfo - ?.split(/(\r\n|\n|\r)/)[0] + if (dryRun) { + return false; + } + + if (url === SENTRY_SAAS_URL) { + return true; + } + + const cli = new SentryCli(options.configFile, { + url, + authToken, + org, + project, + vcsRemote, + dist, + silent, + customHeader, + }); + + let cliInfo; + try { + // Makes a call to SentryCLI to get the Sentry server URL the CLI uses. + // We need to check and decide to use telemetry based on the CLI's respone to this call + // because only at this time we checked a possibly existing .sentryclirc file. This file + // could point to another URL than the default URL. + cliInfo = await cli.execute(["info"], false); + } catch (e) { + throw new Error( + 'Sentry CLI "info" command failed, make sure you have an auth token configured, and your `url` option is correct.' + ); + } + + const cliInfoUrl = cliInfo + .split(/(\r\n|\n|\r)/)[0] ?.replace(/^Sentry Server: /, "") ?.trim(); - if (url !== SENTRY_SAAS_URL) { - const client = hub.getClient(); - if (client) { - client.getOptions().enabled = false; - client.getOptions().tracesSampleRate = 0; - client.getOptions().sampleRate = 0; - } + if (cliInfoUrl === undefined) { + return false; } + + return new URL(cliInfoUrl).hostname === SENTRY_SAAS_HOSTNAME; } diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index cfcd05fb46a8..d150a4d8b865 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -118,23 +118,6 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(options).telemetry).toBe(true); } ); - - test.each([ - [true, "https://selfhostedSentry.io"], - [false, "https://sentry.io"], - [false, "https://selfhostedSentry.io"], - ])( - "should disable telemetry if `telemetry` is %s and Sentry SaaS URL (%s) is used", - (telemetry, url) => { - const options = { - include: "", - telemetry, - url, - }; - - expect(normalizeUserOptions(options).telemetry).toBe(false); - } - ); }); describe("validateOptions", () => { diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index c556cbaed06b..a4210e547379 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -23,7 +23,6 @@ describe("Logger", () => { ["info", "Info"], ["warn", "Warning"], ["error", "Error"], - ["debug", "Debug"], ] as const)(".%s() should log correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; const logger = createLogger({ hub, prefix, silent: false, debug: true }); @@ -42,7 +41,6 @@ describe("Logger", () => { ["info", "Info"], ["warn", "Warning"], ["error", "Error"], - ["debug", "Debug"], ] as const)(".%s() should log multiple params correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; const logger = createLogger({ hub, prefix, silent: false, debug: true }); @@ -64,8 +62,35 @@ describe("Logger", () => { }); }); + it(".debug() should log correctly", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix, silent: false, debug: true }); + + logger.debug("Hey!"); + + expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); + expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); + }); + + it(".debug() should log multiple params correctly", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix, silent: false, debug: true }); + + logger.debug("Hey!", "this", "is", "a test with", 5, "params"); + + expect(consoleLogSpy).toHaveBeenCalledWith( + `[some-prefix] Debug: Hey!`, + "this", + "is", + "a test with", + 5, + "params" + ); + expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); + }); + describe("doesn't log when `silent` option is `true`", () => { - it.each(["info", "warn", "error", "debug"] as const)(".%s()", (loggerMethod) => { + it.each(["info", "warn", "error"] as const)(".%s()", (loggerMethod) => { const prefix = "[some-prefix]"; const logger = createLogger({ hub, prefix, silent: true, debug: true }); @@ -80,4 +105,14 @@ describe("Logger", () => { }); }); }); + + it(".debug() doesn't log when `silent` option is `true`", () => { + const prefix = "[some-prefix]"; + const logger = createLogger({ hub, prefix, silent: true, debug: true }); + + logger.debug("Hey!"); + + expect(consoleLogSpy).not.toHaveBeenCalled(); + expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); + }); }); diff --git a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts index 2b25b8222cf7..13a1199ff40d 100644 --- a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts @@ -55,10 +55,7 @@ describe("Release Pipeline", () => { describe("createNewRelease", () => { it("makes a call to Sentry CLI's releases creation command", async () => { - await createNewRelease( - { release: "1.0.0" } as InternalOptions, - ctx as unknown as BuildContext - ); + await createNewRelease({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.new).toHaveBeenCalledWith("1.0.0"); expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.create_release"); @@ -68,7 +65,7 @@ describe("Release Pipeline", () => { describe("cleanArtifacts", () => { it("doest do anything if cleanArtifacts is not true", async () => { - await cleanArtifacts({} as InternalOptions, ctx as unknown as BuildContext); + await cleanArtifacts({} as InternalOptions, ctx as unknown as BuildContext, "my-release"); expect(mockedCLI.releases.execute).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -77,8 +74,9 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI's artifact removal command if `cleanArtifacts` is set", async () => { await cleanArtifacts( - { release: "1.0.0", cleanArtifacts: true } as InternalOptions, - ctx as unknown as BuildContext + { cleanArtifacts: true } as InternalOptions, + ctx as unknown as BuildContext, + "1.0.0" ); expect(mockedCLI.releases.execute).toHaveBeenCalledWith( @@ -93,11 +91,10 @@ describe("Release Pipeline", () => { describe("uploadSourceMaps", () => { it("makes a call to Sentry CLI's sourcemaps upload command", async () => { const options = { - release: "1.0.0", include: [{ paths: ["dist"] }], } as InternalOptions; - await uploadSourceMaps(options, ctx as unknown as BuildContext); + await uploadSourceMaps(options, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.uploadSourceMaps).toHaveBeenCalledWith("1.0.0", { include: [{ paths: ["dist"] }], @@ -109,7 +106,7 @@ describe("Release Pipeline", () => { describe("setCommits", () => { it("doesn't do anything if `setCommits` option is not specified", async () => { - await setCommits({} as InternalOptions, ctx as unknown as BuildContext); + await setCommits({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -118,8 +115,9 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI if the correct options are specified", async () => { await setCommits( - { setCommits: { auto: true }, release: "1.0.0" } as InternalOptions, - ctx as unknown as BuildContext + { setCommits: { auto: true } } as InternalOptions, + ctx as unknown as BuildContext, + "1.0.0" ); expect(mockedCLI.releases.setCommits).toHaveBeenCalledWith("1.0.0", { auto: true }); @@ -130,7 +128,7 @@ describe("Release Pipeline", () => { describe("finalizeRelease", () => { it("doesn't do anything if `finalize` is not set", async () => { - await finalizeRelease({} as InternalOptions, ctx as unknown as BuildContext); + await finalizeRelease({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.finalize).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -139,8 +137,9 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI's release finalization command if `finalize` is true", async () => { await finalizeRelease( - { release: "1.0.0", finalize: true } as InternalOptions, - ctx as unknown as BuildContext + { finalize: true } as InternalOptions, + ctx as unknown as BuildContext, + "1.0.0" ); expect(mockedCLI.releases.finalize).toHaveBeenCalledWith("1.0.0"); @@ -151,7 +150,7 @@ describe("Release Pipeline", () => { describe("addDeploy", () => { it("doesn't do anything if `deploy` option is not specified", async () => { - await addDeploy({} as InternalOptions, ctx as unknown as BuildContext); + await addDeploy({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -168,8 +167,9 @@ describe("Release Pipeline", () => { }; await addDeploy( - { deploy: deployOptions, release: "1.0.0" } as InternalOptions, - ctx as unknown as BuildContext + { deploy: deployOptions } as InternalOptions, + ctx as unknown as BuildContext, + "1.0.0" ); expect(mockedCLI.releases.newDeploy).toHaveBeenCalledWith("1.0.0", deployOptions); diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 29efe785dc36..b3302fecc744 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,60 +1,37 @@ import { Hub } from "@sentry/node"; import { InternalOptions } from "../../src/options-mapping"; -import { SentryCLILike } from "../../src/sentry/cli"; import { - addPluginOptionTags, + addPluginOptionInformationToHub, captureMinimalError, - turnOffTelemetryForSelfHostedSentry, + shouldSendTelemetry, } from "../../src/sentry/telemetry"; -describe("turnOffTelemetryForSelfHostedSentry", () => { - const mockedCLI = { - execute: jest - .fn() - .mockImplementation(() => "Sentry Server: https://sentry.io \nsomeotherstuff\netc"), - }; - - const options = { - enabled: true, - tracesSampleRate: 1.0, - sampleRate: 1.0, - }; - - const mockedClient = { - getOptions: jest.fn().mockImplementation(() => options), - }; - const mockedHub = { - getClient: jest.fn().mockImplementation(() => { - return mockedClient; - }), - }; +const mockCliExecute = jest.fn(); +jest.mock( + "@sentry/cli", + () => + class { + execute = mockCliExecute; + } +); +describe("shouldSendTelemetry", () => { afterEach(() => { jest.resetAllMocks(); - mockedCLI.execute.mockImplementation( - () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" - ); }); - it("Should turn telemetry off if CLI returns a URL other than sentry.io", async () => { - mockedCLI.execute.mockImplementation( + it("should return false if CLI returns a URL other than sentry.io", async () => { + mockCliExecute.mockImplementation( () => "Sentry Server: https://selfhostedSentry.io \nsomeotherstuff\netc" ); - await turnOffTelemetryForSelfHostedSentry( - mockedCLI as unknown as SentryCLILike, - mockedHub as unknown as Hub - ); - expect(mockedHub.getClient).toHaveBeenCalledTimes(1); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - expect(mockedHub.getClient().getOptions).toHaveBeenCalledTimes(3); + expect(await shouldSendTelemetry({} as InternalOptions)).toBe(false); }); - it("Should do nothing if CLI returns sentry.io as a URL", async () => { - await turnOffTelemetryForSelfHostedSentry( - mockedCLI as unknown as SentryCLILike, - mockedHub as unknown as Hub + it("should return true if CLI returns sentry.io as a URL", async () => { + mockCliExecute.mockImplementation( + () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" ); - expect(mockedHub.getClient).not.toHaveBeenCalled(); + expect(await shouldSendTelemetry({} as InternalOptions)).toBe(true); }); }); @@ -115,9 +92,11 @@ describe("captureMinimalError", () => { }); }); -describe("addPluginOptionTags", () => { +describe("addPluginOptionTagsToHub", () => { const mockedHub = { setTag: jest.fn(), + setTags: jest.fn(), + setUser: jest.fn(), }; const defaultOptions: Partial = { @@ -129,30 +108,38 @@ describe("addPluginOptionTags", () => { }); it("should set include tag according to number of entries (single entry)", () => { - addPluginOptionTags(defaultOptions as unknown as InternalOptions, mockedHub as unknown as Hub); + addPluginOptionInformationToHub( + defaultOptions as unknown as InternalOptions, + mockedHub as unknown as Hub, + "rollup" + ); expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); }); + it("should set include tag according to number of entries (multiple entries)", () => { - addPluginOptionTags( + addPluginOptionInformationToHub( { include: [{}, {}, {}] } as unknown as InternalOptions, - mockedHub as unknown as Hub + mockedHub as unknown as Hub, + "rollup" ); expect(mockedHub.setTag).toHaveBeenCalledWith("include", "multiple-entries"); }); it("should set deploy tag to true if the deploy option is specified", () => { - addPluginOptionTags( + addPluginOptionInformationToHub( { ...defaultOptions, deploy: { env: "production" } } as unknown as InternalOptions, - mockedHub as unknown as Hub + mockedHub as unknown as Hub, + "rollup" ); expect(mockedHub.setTag).toHaveBeenCalledWith("add-deploy", true); }); it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { - addPluginOptionTags( + addPluginOptionInformationToHub( // eslint-disable-next-line @typescript-eslint/no-empty-function { ...defaultOptions, errorHandler: () => {} } as unknown as InternalOptions, - mockedHub as unknown as Hub + mockedHub as unknown as Hub, + "rollup" ); expect(mockedHub.setTag).toHaveBeenCalledWith("error-handler", "custom"); }); @@ -163,16 +150,17 @@ describe("addPluginOptionTags", () => { ])( `should set setCommits tag to %s if the setCommits option is %s`, (expectedValue, commitOptions) => { - addPluginOptionTags( + addPluginOptionInformationToHub( { ...defaultOptions, setCommits: commitOptions } as unknown as InternalOptions, - mockedHub as unknown as Hub + mockedHub as unknown as Hub, + "rollup" ); expect(mockedHub.setTag).toHaveBeenCalledWith("set-commits", expectedValue); } ); it("sets all simple tags correctly", () => { - addPluginOptionTags( + addPluginOptionInformationToHub( { ...defaultOptions, cleanArtifacts: true, @@ -180,7 +168,8 @@ describe("addPluginOptionTags", () => { injectReleasesMap: true, dryRun: true, } as unknown as InternalOptions, - mockedHub as unknown as Hub + mockedHub as unknown as Hub, + "rollup" ); expect(mockedHub.setTag).toHaveBeenCalledWith("clean-artifacts", true); @@ -190,7 +179,11 @@ describe("addPluginOptionTags", () => { }); it("shouldn't set any tags other than include if no opional options are specified", () => { - addPluginOptionTags(defaultOptions as unknown as InternalOptions, mockedHub as unknown as Hub); + addPluginOptionInformationToHub( + defaultOptions as unknown as InternalOptions, + mockedHub as unknown as Hub, + "rollup" + ); expect(mockedHub.setTag).toHaveBeenCalledTimes(2); expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); expect(mockedHub.setTag).toHaveBeenCalledWith("node", expect.any(String)); From 3e8bf59ba7be32a72acf8256568bd0123dacdccc Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 24 Nov 2022 11:04:30 +0100 Subject: [PATCH 108/640] fix(core): Normalize `id` and `releaseInjectionTargets` in `transformInclude` (#132) --- packages/bundler-plugin-core/src/index.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index bbb87f47b910..7f28e9c5e767 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -22,6 +22,7 @@ import { createLogger, Logger } from "./sentry/logger"; import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; import { Hub, makeMain } from "@sentry/node"; +import path from "path"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. // This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. @@ -205,29 +206,34 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { transformInclude(id) { logger.debug('Called "transformInclude":', { id }); + // We normalize the id because vite always passes `id` as a unix style path which causes problems when a user passes + // a windows style path to `releaseInjectionTargets` + const normalizedId = path.normalize(id); + // We don't want to transform our injected code. - if (id === RELEASE_INJECTOR_ID) { + if (normalizedId === RELEASE_INJECTOR_ID) { return false; } if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { - return internalOptions.releaseInjectionTargets(id); + return internalOptions.releaseInjectionTargets(normalizedId); } return internalOptions.releaseInjectionTargets.some((entry) => { if (entry instanceof RegExp) { - return entry.test(id); + return entry.test(normalizedId); } else { - return id === entry; + const normalizedEntry = path.normalize(entry); + return normalizedId === normalizedEntry; } }); } else { - const pathIsOrdinary = !id.includes("?") && !id.includes("#"); + const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( - (allowedFileEnding) => id.endsWith(allowedFileEnding) + (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) ); return pathIsOrdinary && pathHasAllowedFileEnding; From 5304fe2d383752d7f78a451ba17dfbffaf49189b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 24 Nov 2022 11:04:44 +0100 Subject: [PATCH 109/640] ci(integration-tests): Add OS and Node.js version matrix (#131) --- .github/workflows/checks.yml | 22 +++++++- .../scenarios/basic-upload/config.ts | 2 +- .../e2e-tests/scenarios/basic-upload/setup.ts | 4 +- .../e2e-tests/scripts/run-scenario-setups.ts | 4 +- .../array-entries-option.test.ts | 55 ++++++++++--------- .../fixtures/array-entries-option/setup.ts | 8 +-- .../basic-release-injection.test.ts | 3 +- .../fixtures/basic-release-injection/setup.ts | 4 +- .../function-entries-option.test.ts | 55 ++++++++++--------- .../fixtures/function-entries-option/setup.ts | 8 +-- .../fixtures/regex-entries-option/setup.ts | 6 +- .../string-entries-option.test.ts | 44 ++++++++------- .../releases-injection.test.ts | 13 +++-- .../fixtures/releases-injection/setup.ts | 4 +- .../fixtures/string-entries-option/setup.ts | 6 +- .../string-entries-option.test.ts | 44 ++++++++------- .../scripts/run-fixture-setups.ts | 4 +- .../utils/create-cjs-bundles.ts | 37 +++++++------ packages/integration-tests/utils/testIf.ts | 21 +++++++ packages/playground/build-webpack4.js | 2 +- packages/playground/build-webpack5.js | 2 +- .../scripts/request-logger-proxy.ts | 2 +- packages/playground/vite.config.js | 2 +- .../playground/vite.config.smallNodeApp.js | 2 +- 24 files changed, 208 insertions(+), 146 deletions(-) create mode 100644 packages/integration-tests/utils/testIf.ts diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index af11100ff2c4..640ff8648a86 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -48,12 +48,28 @@ jobs: test-integration: needs: build - name: Integration Tests - runs-on: ubuntu-latest + name: "Integration Tests (Node ${{ matrix.node-version }}, OS ${{ matrix.os }})" + strategy: + fail-fast: false + matrix: + node-version: [ + # nx uses a `yargs-parser` versision which isn't compatible with node 10 + # "10.24.1", + # vite uses optional chaining which isn't compatible with node 12 + # "12.22.12", + "14.21.1", + "16.18.1", + "18.12.1", + ] + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: volta-cli/action@v3 - - run: yarn --frozen-lockfile + with: + node-version: ${{ matrix.node-version }} + # husky uses fs-extra which needs node >= 14 - we can ignore because its a dev dependency + - run: yarn --frozen-lockfile --ignore-engines - run: yarn test:integration test-e2e: diff --git a/packages/e2e-tests/scenarios/basic-upload/config.ts b/packages/e2e-tests/scenarios/basic-upload/config.ts index b828c9a1d709..4544cb913ce3 100644 --- a/packages/e2e-tests/scenarios/basic-upload/config.ts +++ b/packages/e2e-tests/scenarios/basic-upload/config.ts @@ -6,7 +6,7 @@ import * as path from "path"; */ export const pluginConfig: Options = { release: "basic-upload", - include: path.resolve(__dirname, "./out"), + include: path.resolve(__dirname, "out"), authToken: process.env["SENTRY_AUTH_TOKEN"] || "", org: "sentry-sdks", project: "js-bundler-plugin-e2e-tests", diff --git a/packages/e2e-tests/scenarios/basic-upload/setup.ts b/packages/e2e-tests/scenarios/basic-upload/setup.ts index 34cbb317ed02..25a01f527429 100644 --- a/packages/e2e-tests/scenarios/basic-upload/setup.ts +++ b/packages/e2e-tests/scenarios/basic-upload/setup.ts @@ -6,8 +6,8 @@ import { createCjsBundles } from "../../utils/create-cjs-bundles"; deleteAllReleases(pluginConfig.release || "") .then(() => { - const entryPointPath = path.resolve(__dirname, "./input/index.js"); - const outputDir = path.resolve(__dirname, "./out"); + const entryPointPath = path.resolve(__dirname, "input", "index.js"); + const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, pluginConfig); }) diff --git a/packages/e2e-tests/scripts/run-scenario-setups.ts b/packages/e2e-tests/scripts/run-scenario-setups.ts index 8bd7ff049308..2d55a4b28dce 100644 --- a/packages/e2e-tests/scripts/run-scenario-setups.ts +++ b/packages/e2e-tests/scripts/run-scenario-setups.ts @@ -2,8 +2,8 @@ import fs from "fs"; import path from "path"; const scenarioPaths = fs - .readdirSync(path.join(__dirname, "../scenarios")) - .map((fixtureDir) => path.join(__dirname, "../scenarios", fixtureDir)); + .readdirSync(path.join(__dirname, "..", "scenarios")) + .map((fixtureDir) => path.join(__dirname, "..", "scenarios", fixtureDir)); scenarioPaths.forEach((fixturePath) => { require(path.join(fixturePath, "setup.ts")); diff --git a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts index 093873447b8e..eba6fde3e875 100644 --- a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts +++ b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts @@ -1,6 +1,7 @@ import childProcess from "child_process"; import path from "path"; import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function getBundleOutput(bundlePath: string): string { return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -12,67 +13,71 @@ function getFileContents(bundlePath: string): string { describe("`releaseInjectionTargets` option should work as expected when given an array of RegEx and strings", () => { test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); - test("webpack 4 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); + // eslint-disable-next-line jest/no-standalone-expect + expect( + getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); + expect( + getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); }); diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts index a07cd847df33..1be984e48888 100644 --- a/packages/integration-tests/fixtures/array-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/array-entries-option/setup.ts @@ -2,10 +2,10 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); -const entryPoint3Path = path.resolve(__dirname, "./input/entrypoint3.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); +const entryPoint3Path = path.resolve(__dirname, "input", "entrypoint3.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles( { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, 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 7d889cece802..db3bc356f658 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,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -27,7 +28,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "./out/vite/index.js")); }); -test("webpack 4 bundle", () => { +testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { expect.assertions(1); checkBundle(path.join(__dirname, "./out/webpack4/index.js")); }); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index b9112296838a..5f0dc5fbfed5 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -2,8 +2,8 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPointPath = path.resolve(__dirname, "./input/entrypoint.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { release: "I AM A RELEASE!", diff --git a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts index 11d2db889bcc..28bdc4da5604 100644 --- a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts +++ b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts @@ -1,6 +1,7 @@ import childProcess from "child_process"; import path from "path"; import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function getBundleOutput(bundlePath: string): string { return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -12,67 +13,71 @@ function getFileContents(bundlePath: string): string { describe("`releaseInjectionTargets` option should work as expected when given a function", () => { test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); - test("webpack 4 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( + testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); + // eslint-disable-next-line jest/no-standalone-expect + expect( + getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint3.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint3.js"))).toBe( "I AM A RELEASE!" ); + expect( + getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); }); diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts index 059b85c20019..56c9dfb39054 100644 --- a/packages/integration-tests/fixtures/function-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/function-entries-option/setup.ts @@ -2,10 +2,10 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); -const entryPoint3Path = path.resolve(__dirname, "./input/entrypoint3.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); +const entryPoint3Path = path.resolve(__dirname, "input", "entrypoint3.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles( { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts index a3e004e50931..2ee0b77fdf52 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/setup.ts @@ -2,9 +2,9 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { release: "I AM A RELEASE!", diff --git a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts index b37e7f4733eb..22f3efb7c1fb 100644 --- a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts +++ b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts @@ -1,6 +1,7 @@ import childProcess from "child_process"; import path from "path"; import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function getBundleOutput(bundlePath: string): string { return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -12,52 +13,55 @@ function getFileContents(bundlePath: string): string { describe("`releaseInjectionTargets` option should work as expected when given a regular expression", () => { test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); - test("webpack 4 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); + // eslint-disable-next-line jest/no-standalone-expect + expect( + getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); + expect( + getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); }); diff --git a/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts b/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts index 7d889cece802..5bb38d644158 100644 --- a/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts +++ b/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts @@ -1,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -14,25 +15,25 @@ function checkBundle(bundlePath: string): void { test("esbuild bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/esbuild/index.js")); + checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); }); test("rollup bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/rollup/index.js")); + checkBundle(path.join(__dirname, "out", "rollup", "index.js")); }); test("vite bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/vite/index.js")); + checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -test("webpack 4 bundle", () => { +testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack4/index.js")); + 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", "webpack5", "index.js")); }); diff --git a/packages/integration-tests/fixtures/releases-injection/setup.ts b/packages/integration-tests/fixtures/releases-injection/setup.ts index 8807e676049e..cc875088acd2 100644 --- a/packages/integration-tests/fixtures/releases-injection/setup.ts +++ b/packages/integration-tests/fixtures/releases-injection/setup.ts @@ -2,8 +2,8 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPointPath = path.resolve(__dirname, "./input/entrypoint.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { release: "I AM A RELEASE!", diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts index 7b07fb66451a..9601b7a51fae 100644 --- a/packages/integration-tests/fixtures/string-entries-option/setup.ts +++ b/packages/integration-tests/fixtures/string-entries-option/setup.ts @@ -2,9 +2,9 @@ import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -const entryPoint1Path = path.resolve(__dirname, "./input/entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "./input/entrypoint2.js"); -const outputDir = path.resolve(__dirname, "./out"); +const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); +const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); +const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { release: "I AM A RELEASE!", diff --git a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts index caf0f9e142c9..33f29bb75bcd 100644 --- a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts +++ b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts @@ -1,6 +1,7 @@ import childProcess from "child_process"; import path from "path"; import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function getBundleOutput(bundlePath: string): string { return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -12,52 +13,55 @@ function getFileContents(bundlePath: string): string { describe("`releaseInjectionTargets` option should work as expected when given a string", () => { test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/esbuild/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/rollup/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/rollup/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint1.js"))).toBe( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); - expect(getBundleOutput(path.join(__dirname, "./out/vite/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/vite/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); + expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( "I AM A RELEASE!" ); }); - test("webpack 4 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/webpack4/entrypoint2.js"))).not.toContain( + testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); + // eslint-disable-next-line jest/no-standalone-expect + expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); + // eslint-disable-next-line jest/no-standalone-expect + expect( + getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "./out/webpack5/entrypoint2.js"))).not.toContain( + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( "I AM A RELEASE!" ); + expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); + expect( + getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) + ).not.toContain("I AM A RELEASE!"); }); }); diff --git a/packages/integration-tests/scripts/run-fixture-setups.ts b/packages/integration-tests/scripts/run-fixture-setups.ts index 7ee1409fbec4..0020b3769951 100644 --- a/packages/integration-tests/scripts/run-fixture-setups.ts +++ b/packages/integration-tests/scripts/run-fixture-setups.ts @@ -2,8 +2,8 @@ import fs from "fs"; import path from "path"; const fixturePaths = fs - .readdirSync(path.join(__dirname, "../fixtures")) - .map((fixtureDir) => path.join(__dirname, "../fixtures", fixtureDir)); + .readdirSync(path.join(__dirname, "..", "fixtures")) + .map((fixtureDir) => path.join(__dirname, "..", "fixtures", fixtureDir)); fixturePaths.forEach((fixturePath) => { require(path.join(fixturePath, "setup.ts")); diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index b88860646718..16efaeaac5e2 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -12,6 +12,8 @@ import { Options, } from "@sentry/bundler-plugin-core"; +const nodejsMajorversion = process.version.split(".")[0]; + export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, @@ -54,24 +56,27 @@ export function createCjsBundles( format: "cjs", }); - webpack4( - { - mode: "production", - entry: entrypoints, - cache: false, - output: { - path: path.join(outFolder, "webpack4"), - libraryTarget: "commonjs", + // Webpack 4 doesn't work on Node.js versions >= 18 + if (!nodejsMajorversion || parseInt(nodejsMajorversion) < 18) { + webpack4( + { + 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(sentryUnpluginOptions)], }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], - }, - (err) => { - if (err) { - throw err; + (err) => { + if (err) { + throw err; + } } - } - ); + ); + } webpack5( { diff --git a/packages/integration-tests/utils/testIf.ts b/packages/integration-tests/utils/testIf.ts new file mode 100644 index 000000000000..ef64737c490c --- /dev/null +++ b/packages/integration-tests/utils/testIf.ts @@ -0,0 +1,21 @@ +// 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 () { + const nodejsMajorversion = process.version.split(".")[0]; + return testIf(!nodejsMajorversion || parseInt(nodejsMajorversion) < 18); + // eslint-disable-next-line @typescript-eslint/no-explicit-any +} as any; diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 8cd29aff146d..e87386d8933d 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -11,7 +11,7 @@ webpack4( entry: "./src/entrypoint1.js", cache: false, output: { - path: path.resolve(__dirname, `./out/webpack4`), + path: path.resolve(__dirname, "out", "webpack4"), filename: "index.js", library: "ExampleBundle", libraryTarget: "commonjs", diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 812dd5df38f2..9aed03207cb3 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -11,7 +11,7 @@ webpack5( entry: "./src/entrypoint1.js", output: { filename: "index.js", - path: path.resolve(__dirname, `./out/webpack5`), + path: path.resolve(__dirname, "out", "webpack5"), library: { type: "commonjs", name: "ExampleBundle", diff --git a/packages/playground/scripts/request-logger-proxy.ts b/packages/playground/scripts/request-logger-proxy.ts index bf078e550444..e62a1f71d823 100644 --- a/packages/playground/scripts/request-logger-proxy.ts +++ b/packages/playground/scripts/request-logger-proxy.ts @@ -47,7 +47,7 @@ app.use(function (req, res, next) { )}\nResponse body:\n${Buffer.concat(resBody).toString()}`; fs.appendFileSync( - path.join(__dirname, `request-logger-logs/${now}.txt`), + path.join(__dirname, "request-logger-logs", `${now}.txt`), `>>>>>>>>>\n\n${reqLog}\n\n-----------\n\n${resLog}\n\n<<<<<<<<<\n\n`, { encoding: "utf-8", diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index a625bae999b3..2254398e3212 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -8,7 +8,7 @@ export default defineConfig({ build: { outDir: "./out/vite", lib: { - entry: path.resolve(__dirname, "./src/entrypoint1.js"), + entry: path.resolve(__dirname, "src", "entrypoint1.js"), name: "ExampleBundle", fileName: "index", formats: ["cjs"], diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index b9566f49f3cb..1b86efcd8386 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -7,7 +7,7 @@ export default defineConfig({ build: { outDir: "./out/vite-smallNodeApp", lib: { - entry: path.resolve(__dirname, "./src/smallNodeApp.js"), + entry: path.resolve(__dirname, "src", "smallNodeApp.js"), name: "ExampleBundle", fileName: "index", formats: ["cjs"], From 21f6aae92e0bebd5b2cef361d1cfa6f612044c4a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 24 Nov 2022 11:11:32 +0100 Subject: [PATCH 110/640] meta: Add chanelog entry for 0.2.1 (#134) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79b485daae40..ff5f39750ce0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.2.1 + +- fix(core): Fix telemetry option logic (#128) +- fix(core): Normalize `id` and `releaseInjectionTargets` in `transformInclude` (#132) + ## 0.2.0 This release replaces the `entries` option with `releaseInjectionTargets` which is a breaking change from previous versions. From 26b716cbb82c925d1c6815d9d3279df511b26700 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 24 Nov 2022 10:21:05 +0000 Subject: [PATCH 111/640] release: 0.2.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index aff9f61b70c0..42118e03cd7a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.2.0", + "version": "0.2.1", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a48fd96f5ad0..9e12e7aa5a06 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.2.0", + "version": "0.2.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -50,8 +50,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index b1c6408a66b0..111e539b933f 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.2.0", - "@sentry/rollup-plugin": "0.2.0", - "@sentry/vite-plugin": "0.2.0", - "@sentry/webpack-plugin": "0.2.0", + "@sentry/esbuild-plugin": "0.2.1", + "@sentry/rollup-plugin": "0.2.1", + "@sentry/vite-plugin": "0.2.1", + "@sentry/webpack-plugin": "0.2.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1293ba1db11d..12224ad15f7a 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.2.0", + "version": "0.2.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.0" + "@sentry/bundler-plugin-core": "0.2.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index a72172d0291a..0402fa48d4ee 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b89e471ac28f..10e16fe59722 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", - "@sentry/bundler-plugin-core": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry/bundler-plugin-core": "0.2.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index f4003c2db7a3..a64140107aba 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.0", + "@sentry/bundler-plugin-core": "0.2.1", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 6d63db56f55c..8e597f396533 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.2.0", + "version": "0.2.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -41,7 +41,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.0" + "@sentry/bundler-plugin-core": "0.2.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -51,8 +51,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 15e85ae21412..87c84ae3798f 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 2b5e709cf42c..16ed99b0d9a2 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.2.0", + "version": "0.2.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.0" + "@sentry/bundler-plugin-core": "0.2.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8fb5086c4fd9..25f884e95045 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.2.0", + "version": "0.2.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -40,7 +40,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.0" + "@sentry/bundler-plugin-core": "0.2.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -50,8 +50,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.0", + "@sentry-internal/eslint-config": "0.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From d60f48dbb7b5565d08e08f1f260c1d7af4833cf5 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 25 Nov 2022 13:49:21 +0100 Subject: [PATCH 112/640] feat(core): Remove `server_name` from telemetry events (#135) --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 75a81fc1beb8..e166854d25f6 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -21,6 +21,16 @@ export function makeSentryClient( stackParser: defaultStackParser, + beforeSend: (event) => { + delete event.server_name; // Server name might contain PII + return event; + }, + + beforeSendTransaction: (event) => { + delete event.server_name; // Server name might contain PII + return event; + }, + // We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told // us that the upload URL is the Sentry SaaS URL) transport: (nodeTransportOptions) => { From 02ad34ef4ce9de9d2e93bff95c1f41f79ea94b3c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 25 Nov 2022 15:09:06 +0100 Subject: [PATCH 113/640] fix(core): Finish spans when CLI commands fail (#136) --- .../src/sentry/releasePipeline.ts | 72 ++++++++++++------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 943f4cdc1dcc..df303dc6cf77 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -18,10 +18,13 @@ export async function createNewRelease( ): Promise { const span = addSpanToTransaction(ctx, "function.plugin.create_release"); - await ctx.cli.releases.new(releaseName); + try { + await ctx.cli.releases.new(releaseName); + } finally { + span?.finish(); + } ctx.logger.info("Successfully created release."); - span?.finish(); } export async function cleanArtifacts( @@ -36,10 +39,13 @@ export async function cleanArtifacts( const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); - await ctx.cli.releases.execute(["releases", "files", releaseName, "delete", "--all"], true); + try { + await ctx.cli.releases.execute(["releases", "files", releaseName, "delete", "--all"], true); + } finally { + span?.finish(); + } ctx.logger.info("Successfully cleaned previous artifacts."); - span?.finish(); } export async function uploadSourceMaps( @@ -52,10 +58,13 @@ export async function uploadSourceMaps( // Since our internal include entries contain all top-level sourcemaps options, // we only need to pass the include option here. - await ctx.cli.releases.uploadSourceMaps(releaseName, { include: options.include }); + try { + await ctx.cli.releases.uploadSourceMaps(releaseName, { include: options.include }); + } finally { + span?.finish(); + } ctx.logger.info("Successfully uploaded Sourcemaps."); - span?.finish(); } export async function setCommits( @@ -71,17 +80,21 @@ export async function setCommits( const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; - await ctx.cli.releases.setCommits(releaseName, { - commit, - previousCommit, - repo, - auto, - ignoreMissing, - ignoreEmpty, - }); + + try { + await ctx.cli.releases.setCommits(releaseName, { + commit, + previousCommit, + repo, + auto, + ignoreMissing, + ignoreEmpty, + }); + } finally { + span?.finish(); + } ctx.logger.info("Successfully set commits."); - span?.finish(); } export async function finalizeRelease( @@ -96,10 +109,13 @@ export async function finalizeRelease( const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); - await ctx.cli.releases.finalize(releaseName); + try { + await ctx.cli.releases.finalize(releaseName); + } finally { + span?.finish(); + } ctx.logger.info("Successfully finalized release."); - span?.finish(); } export async function addDeploy( @@ -115,15 +131,19 @@ export async function addDeploy( const span = addSpanToTransaction(ctx, "function.plugin.deploy"); const { env, started, finished, time, name, url } = options.deploy; - await ctx.cli.releases.newDeploy(releaseName, { - env, - started, - finished, - time, - name, - url, - }); + + try { + await ctx.cli.releases.newDeploy(releaseName, { + env, + started, + finished, + time, + name, + url, + }); + } finally { + span?.finish(); + } ctx.logger.info("Successfully added deploy."); - span?.finish(); } From 36b38ee34aca518aaaeedb2d64c5bdcadb64c9c2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 28 Nov 2022 11:17:13 +0100 Subject: [PATCH 114/640] ref(core): Don't record stack traces for telemetry (#137) --- packages/bundler-plugin-core/src/index.ts | 15 ++--- .../src/sentry/releasePipeline.ts | 18 ++++++ .../src/sentry/telemetry.ts | 25 ++------ .../test/sentry/telemetry.test.ts | 63 +------------------ 4 files changed, 27 insertions(+), 94 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7f28e9c5e767..80414a0d28e9 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -13,7 +13,6 @@ import "@sentry/tracing"; import { addPluginOptionInformationToHub, addSpanToTransaction, - captureMinimalError, makeSentryClient, shouldSendTelemetry, } from "./sentry/telemetry"; @@ -21,7 +20,7 @@ import { Span, Transaction } from "@sentry/types"; import { createLogger, Logger } from "./sentry/logger"; import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; -import { Hub, makeMain } from "@sentry/node"; +import { makeMain } from "@sentry/node"; import path from "path"; // We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. @@ -130,8 +129,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" ), logger, - internalOptions.errorHandler, - sentryHub + internalOptions.errorHandler ); } @@ -306,7 +304,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { transaction?.setStatus("ok"); } catch (e: unknown) { transaction?.setStatus("cancelled"); - handleError(e, logger, internalOptions.errorHandler, sentryHub); + handleError(e, logger, internalOptions.errorHandler); } finally { sentryHub.addBreadcrumb({ category: "writeBundle:finish", @@ -325,8 +323,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { function handleError( unknownError: unknown, logger: Logger, - errorHandler: InternalOptions["errorHandler"], - sentryHub?: Hub + errorHandler: InternalOptions["errorHandler"] ) { if (unknownError instanceof Error) { logger.error(unknownError.message); @@ -334,10 +331,6 @@ function handleError( logger.error(String(unknownError)); } - if (sentryHub) { - captureMinimalError(unknownError, sentryHub); - } - if (errorHandler) { if (unknownError instanceof Error) { errorHandler(unknownError); diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index df303dc6cf77..88d8a5b3bc9a 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -20,6 +20,9 @@ export async function createNewRelease( try { await ctx.cli.releases.new(releaseName); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Creating new release failed")); + throw e; } finally { span?.finish(); } @@ -41,6 +44,9 @@ export async function cleanArtifacts( try { await ctx.cli.releases.execute(["releases", "files", releaseName, "delete", "--all"], true); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Deleting release files failed")); + throw e; } finally { span?.finish(); } @@ -60,6 +66,9 @@ export async function uploadSourceMaps( // we only need to pass the include option here. try { await ctx.cli.releases.uploadSourceMaps(releaseName, { include: options.include }); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Uploading source maps failed")); + throw e; } finally { span?.finish(); } @@ -90,6 +99,9 @@ export async function setCommits( ignoreMissing, ignoreEmpty, }); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Setting commits failed")); + throw e; } finally { span?.finish(); } @@ -111,6 +123,9 @@ export async function finalizeRelease( try { await ctx.cli.releases.finalize(releaseName); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Finalizing release failed")); + throw e; } finally { span?.finish(); } @@ -141,6 +156,9 @@ export async function addDeploy( name, url, }); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Adding deploy info failed")); + throw e; } finally { span?.finish(); } diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index e166854d25f6..d2ee62e28d73 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -22,6 +22,10 @@ export function makeSentryClient( stackParser: defaultStackParser, beforeSend: (event) => { + event.exception?.values?.forEach((exception) => { + delete exception.stacktrace; + }); + delete event.server_name; // Server name might contain PII return event; }, @@ -70,27 +74,6 @@ export function addSpanToTransaction( return span; } -export function captureMinimalError(error: unknown | Error, hub: Hub) { - let sentryError; - - if (error && typeof error === "object") { - const e = error as { name?: string; message?: string; stack?: string }; - sentryError = { - name: e.name, - message: e.message, - stack: e.stack, - }; - } else { - sentryError = { - name: "Error", - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - message: `${error}`, - }; - } - - hub.captureException(sentryError); -} - export function addPluginOptionInformationToHub( options: InternalOptions, hub: Hub, diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index b3302fecc744..652ca050dbff 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,10 +1,6 @@ import { Hub } from "@sentry/node"; import { InternalOptions } from "../../src/options-mapping"; -import { - addPluginOptionInformationToHub, - captureMinimalError, - shouldSendTelemetry, -} from "../../src/sentry/telemetry"; +import { addPluginOptionInformationToHub, shouldSendTelemetry } from "../../src/sentry/telemetry"; const mockCliExecute = jest.fn(); jest.mock( @@ -35,63 +31,6 @@ describe("shouldSendTelemetry", () => { }); }); -describe("captureMinimalError", () => { - const mockedHub = { - captureException: jest.fn(), - }; - - beforeEach(() => { - jest.resetAllMocks(); - }); - - it("Should capture a normal error", () => { - captureMinimalError(new Error("test"), mockedHub as unknown as Hub); - expect(mockedHub.captureException).toHaveBeenCalledWith({ - name: "Error", - message: "test", - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - stack: expect.any(String), - }); - }); - - it("Shouldn't capture an error with additional data", () => { - const error = new Error("test"); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - (error as any).additionalContext = { foo: "bar" }; - - captureMinimalError(error, mockedHub as unknown as Hub); - - expect(mockedHub.captureException).toHaveBeenCalledWith({ - name: "Error", - message: "test", - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - stack: expect.any(String), - }); - }); - - it("Should handle string messages gracefully", () => { - const error = "Property x is missing!"; - - captureMinimalError(error, mockedHub as unknown as Hub); - - expect(mockedHub.captureException).toHaveBeenCalledWith({ - name: "Error", - message: error, - }); - }); - - it("Should even handle undefined gracefully", () => { - const error = undefined; - - captureMinimalError(error, mockedHub as unknown as Hub); - - expect(mockedHub.captureException).toHaveBeenCalledWith({ - name: "Error", - message: "undefined", - }); - }); -}); - describe("addPluginOptionTagsToHub", () => { const mockedHub = { setTag: jest.fn(), From dd83bc315416d7d9e335c4033b3ad126f07f3ecf Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 28 Nov 2022 11:39:01 +0100 Subject: [PATCH 115/640] ref(core): Decouple breadcrumb usage from logger (#138) --- packages/bundler-plugin-core/src/index.ts | 20 ++++++--- .../bundler-plugin-core/src/sentry/logger.ts | 18 -------- .../src/sentry/releasePipeline.ts | 9 +++- .../test/sentry/logger.test.ts | 43 +++---------------- .../test/sentry/releasePipeline.test.ts | 6 ++- 5 files changed, 34 insertions(+), 62 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 80414a0d28e9..18f9c81ba0d9 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -77,7 +77,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { makeMain(sentryHub); const logger = createLogger({ - hub: sentryHub, prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, silent: internalOptions.silent, debug: internalOptions.debug, @@ -118,6 +117,12 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { if (isAllowedToSendToSendTelemetry) { logger.info("Sending error and performance telemetry data to Sentry."); logger.info("To disable telemetry, set `options.telemetry` to `false`."); + sentryHub.addBreadcrumb({ level: "info", message: "Telemetry enabled." }); + } else { + sentryHub.addBreadcrumb({ + level: "info", + message: "Telemetry disabled. This should never show up in a Sentry event.", + }); } const releaseName = await releaseNamePromise; @@ -304,18 +309,23 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { transaction?.setStatus("ok"); } catch (e: unknown) { transaction?.setStatus("cancelled"); - handleError(e, logger, internalOptions.errorHandler); - } finally { sentryHub.addBreadcrumb({ - category: "writeBundle:finish", - level: "info", + level: "error", + message: "Error during writeBundle", }); + handleError(e, logger, internalOptions.errorHandler); + } finally { releasePipelineSpan?.finish(); transaction?.finish(); await sentryClient.flush().then(null, () => { logger.warn("Sending of telemetry failed"); }); } + + sentryHub.addBreadcrumb({ + category: "writeBundle:finish", + level: "info", + }); }, }; }); diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index 4dec02920369..3e5fecad2463 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -1,9 +1,6 @@ -import { SeverityLevel, Hub } from "@sentry/node"; - interface LoggerOptions { silent: boolean; debug: boolean; - hub: Hub; prefix: string; } @@ -15,44 +12,29 @@ export type Logger = { }; export function createLogger(options: LoggerOptions): Logger { - function addBreadcrumb(level: SeverityLevel, message: string) { - options.hub.addBreadcrumb({ - category: "logger", - level, - message, - }); - } - return { info(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Info: ${message}`, ...params); } - - addBreadcrumb("info", message); }, warn(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Warning: ${message}`, ...params); } - - addBreadcrumb("warning", message); }, error(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console console.log(`${options.prefix} Error: ${message}`, ...params); } - - addBreadcrumb("error", message); }, debug(message: string, ...params: unknown[]) { if (!options.silent && options.debug) { // eslint-disable-next-line no-console console.log(`${options.prefix} Debug: ${message}`, ...params); - // We're not creating breadcrumbs for debug logs because it is super spammy } }, }; diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 88d8a5b3bc9a..03c79766327c 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -27,6 +27,7 @@ export async function createNewRelease( span?.finish(); } + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully created release." }); ctx.logger.info("Successfully created release."); } @@ -51,6 +52,7 @@ export async function cleanArtifacts( span?.finish(); } + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully cleaned previous artifacts." }); ctx.logger.info("Successfully cleaned previous artifacts."); } @@ -73,7 +75,8 @@ export async function uploadSourceMaps( span?.finish(); } - ctx.logger.info("Successfully uploaded Sourcemaps."); + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully uploaded source maps." }); + ctx.logger.info("Successfully uploaded source maps."); } export async function setCommits( @@ -115,6 +118,7 @@ export async function finalizeRelease( releaseName: string ): Promise { if (!options.finalize) { + ctx.hub.addBreadcrumb({ level: "info", message: "Skipping release finalization." }); logger.debug("Skipping release finalization."); return; } @@ -130,6 +134,7 @@ export async function finalizeRelease( span?.finish(); } + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully finalized release." }); ctx.logger.info("Successfully finalized release."); } @@ -139,6 +144,7 @@ export async function addDeploy( releaseName: string ): Promise { if (!options.deploy) { + ctx.hub.addBreadcrumb({ level: "info", message: "Skipping adding deploy info to release." }); logger.debug("Skipping adding deploy info to release."); return; } @@ -163,5 +169,6 @@ export async function addDeploy( span?.finish(); } + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully added deploy." }); ctx.logger.info("Successfully added deploy."); } diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index a4210e547379..a51aab456bc5 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -1,22 +1,10 @@ -import { Hub } from "@sentry/node"; import { createLogger } from "../../src/sentry/logger"; describe("Logger", () => { const consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => undefined); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - const hub: Hub = { - addBreadcrumb: () => { - return; - }, - }; - - const mockedAddBreadcrumb = jest.spyOn(hub, "addBreadcrumb"); - afterEach(() => { consoleLogSpy.mockReset(); - mockedAddBreadcrumb.mockReset(); }); it.each([ @@ -25,16 +13,11 @@ describe("Logger", () => { ["error", "Error"], ] as const)(".%s() should log correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: false, debug: true }); + const logger = createLogger({ prefix, silent: false, debug: true }); logger[loggerMethod]("Hey!"); expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); - expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ - category: "logger", - level: logLevel.toLowerCase(), - message: "Hey!", - }); }); it.each([ @@ -43,7 +26,7 @@ describe("Logger", () => { ["error", "Error"], ] as const)(".%s() should log multiple params correctly", (loggerMethod, logLevel) => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: false, debug: true }); + const logger = createLogger({ prefix, silent: false, debug: true }); logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); @@ -55,26 +38,20 @@ describe("Logger", () => { 5, "params" ); - expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ - category: "logger", - level: logLevel.toLowerCase(), - message: "Hey!", - }); }); it(".debug() should log correctly", () => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: false, debug: true }); + const logger = createLogger({ prefix, silent: false, debug: true }); logger.debug("Hey!"); expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); - expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); }); it(".debug() should log multiple params correctly", () => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: false, debug: true }); + const logger = createLogger({ prefix, silent: false, debug: true }); logger.debug("Hey!", "this", "is", "a test with", 5, "params"); @@ -86,33 +63,25 @@ describe("Logger", () => { 5, "params" ); - expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); }); describe("doesn't log when `silent` option is `true`", () => { it.each(["info", "warn", "error"] as const)(".%s()", (loggerMethod) => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: true, debug: true }); + const logger = createLogger({ prefix, silent: true, debug: true }); logger[loggerMethod]("Hey!"); expect(consoleLogSpy).not.toHaveBeenCalled(); - - expect(mockedAddBreadcrumb).toHaveBeenCalledWith({ - category: "logger", - level: expect.stringMatching(/.*/) as string, - message: "Hey!", - }); }); }); it(".debug() doesn't log when `silent` option is `true`", () => { const prefix = "[some-prefix]"; - const logger = createLogger({ hub, prefix, silent: true, debug: true }); + const logger = createLogger({ prefix, silent: true, debug: true }); logger.debug("Hey!"); expect(consoleLogSpy).not.toHaveBeenCalled(); - expect(mockedAddBreadcrumb).not.toHaveBeenCalled(); }); }); diff --git a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts index 13a1199ff40d..518f145aacb2 100644 --- a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts @@ -33,6 +33,10 @@ describe("Release Pipeline", () => { error: jest.fn(), }; + const mockedHub = { + addBreadcrumb: jest.fn(), + }; + const mockedCLI = { releases: { new: jest.fn(), @@ -47,7 +51,7 @@ describe("Release Pipeline", () => { const mockedChildSpan = { finish: jest.fn() }; mockedAddSpanToTxn.mockImplementation(() => mockedChildSpan); - const ctx = { cli: mockedCLI, logger: mockedLogger }; + const ctx = { cli: mockedCLI, logger: mockedLogger, hub: mockedHub }; beforeEach(() => { jest.clearAllMocks(); From 12e3f680bf641e878abe63b3f1f7f2c8f9ffacf1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 28 Nov 2022 11:50:05 +0100 Subject: [PATCH 116/640] meta: Add changelog entry for 0.2.2 (#139) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff5f39750ce0..1d2bfa513dbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.2.2 + +- feat(core): Remove `server_name` from telemetry events (#135) +- fix(core): Finish spans when CLI commands fail (#136) +- ref(core): Decouple breadcrumb usage from logger (#138) +- ref(core): Don't record stack traces for telemetry (#137) + ## 0.2.1 - fix(core): Fix telemetry option logic (#128) From cbd69eca54a8c74dbd6a7f10cdd8ca0ea12d2b06 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 28 Nov 2022 13:32:16 +0100 Subject: [PATCH 117/640] fix: Add definitions in `package.json` for ESM resolution (#141) --- CHANGELOG.md | 1 + packages/bundler-plugin-core/package.json | 8 +++++++- packages/esbuild-plugin/package.json | 8 +++++++- packages/rollup-plugin/package.json | 8 +++++++- packages/vite-plugin/package.json | 8 +++++++- packages/webpack-plugin/package.json | 8 +++++++- 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d2bfa513dbc..995a8e5b396b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ## 0.2.2 - feat(core): Remove `server_name` from telemetry events (#135) +- fix: Add definitions in package.json for ESM resolution (#141) - fix(core): Finish spans when CLI commands fail (#136) - ref(core): Decouple breadcrumb usage from logger (#138) - ref(core): Don't record stack traces for telemetry (#137) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9e12e7aa5a06..368c9ee1bb51 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -12,8 +12,14 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 12224ad15f7a..3ba2c6bb2dad 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -18,8 +18,14 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 8e597f396533..0c56d6fcc0e7 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -19,8 +19,14 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 16ed99b0d9a2..24c33405888f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -18,8 +18,14 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 25f884e95045..5e0bf832914f 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -19,8 +19,14 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { "build": "rimraf ./out && run-p build:rollup build:types", From 9ac08274189b19c6d31f59dbca039883c397bdaa Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 28 Nov 2022 12:39:20 +0000 Subject: [PATCH 118/640] release: 0.2.2 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 42118e03cd7a..de9ca345a2c7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.2.1", + "version": "0.2.2", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 368c9ee1bb51..05e0a52106f1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.2.1", + "version": "0.2.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -56,8 +56,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 111e539b933f..e75a2e94e7f2 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.2.1", - "@sentry/rollup-plugin": "0.2.1", - "@sentry/vite-plugin": "0.2.1", - "@sentry/webpack-plugin": "0.2.1", + "@sentry/esbuild-plugin": "0.2.2", + "@sentry/rollup-plugin": "0.2.2", + "@sentry/vite-plugin": "0.2.2", + "@sentry/webpack-plugin": "0.2.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 3ba2c6bb2dad..3d83ef289eaa 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.2.1", + "version": "0.2.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.1" + "@sentry/bundler-plugin-core": "0.2.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 0402fa48d4ee..756fbf3dbaed 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 10e16fe59722..281512697745 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", - "@sentry/bundler-plugin-core": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry/bundler-plugin-core": "0.2.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index a64140107aba..ac3861d038fc 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.1", + "@sentry/bundler-plugin-core": "0.2.2", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 0c56d6fcc0e7..c1c91c1b368d 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.2.1", + "version": "0.2.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.1" + "@sentry/bundler-plugin-core": "0.2.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 87c84ae3798f..88ab6279c2f0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 24c33405888f..87e129de0307 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.2.1", + "version": "0.2.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.1" + "@sentry/bundler-plugin-core": "0.2.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 5e0bf832914f..8329a96e569a 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.2.1", + "version": "0.2.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.1" + "@sentry/bundler-plugin-core": "0.2.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.1", + "@sentry-internal/eslint-config": "0.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 26ac9941b0dc8f805402c08e92c614e75bfa850a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 29 Nov 2022 10:46:46 +0100 Subject: [PATCH 119/640] fix: Exclude `node_modules` from release injection (#143) --- packages/bundler-plugin-core/src/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 18f9c81ba0d9..f5c3530dc5f5 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -28,7 +28,7 @@ import path from "path"; // This probably doesn't work for all bundlers but for rollup it does. const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; -const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".cjs", ".mjs"]; +const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; /** * The sentry bundler plugin concerns itself with two things: @@ -233,13 +233,14 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { } }); } else { + const isInNodeModules = normalizedId.split(path.sep).includes("node_modules"); const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) ); - return pathIsOrdinary && pathHasAllowedFileEnding; + return !isInNodeModules && pathIsOrdinary && pathHasAllowedFileEnding; } }, From 43dbf8d89a39f91b86f7b7675295abe8867e90b3 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 29 Nov 2022 11:41:37 +0100 Subject: [PATCH 120/640] meta: Add chanelog entry for 0.2.3 (#144) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 995a8e5b396b..c48911337547 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.2.3 + +- fix: Exclude `node_modules` from release injection (#143) + ## 0.2.2 - feat(core): Remove `server_name` from telemetry events (#135) From 1ac8843d9c17673153340393fce884b560860c9d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 29 Nov 2022 12:02:15 +0000 Subject: [PATCH 121/640] release: 0.2.3 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index de9ca345a2c7..1846643fde8e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.2.2", + "version": "0.2.3", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 05e0a52106f1..7c75b0eb6053 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.2.2", + "version": "0.2.3", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -56,8 +56,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index e75a2e94e7f2..15a5eb2ddeb1 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.2.2", - "@sentry/rollup-plugin": "0.2.2", - "@sentry/vite-plugin": "0.2.2", - "@sentry/webpack-plugin": "0.2.2", + "@sentry/esbuild-plugin": "0.2.3", + "@sentry/rollup-plugin": "0.2.3", + "@sentry/vite-plugin": "0.2.3", + "@sentry/webpack-plugin": "0.2.3", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 3d83ef289eaa..e592dba2d2d3 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.2.2", + "version": "0.2.3", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.2" + "@sentry/bundler-plugin-core": "0.2.3" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 756fbf3dbaed..c8345acabffd 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 281512697745..de9879ed9a58 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", - "@sentry/bundler-plugin-core": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry/bundler-plugin-core": "0.2.3", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index ac3861d038fc..d6a2077d71e2 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.2", + "@sentry/bundler-plugin-core": "0.2.3", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index c1c91c1b368d..fa0bf7c6fc2b 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.2.2", + "version": "0.2.3", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.2" + "@sentry/bundler-plugin-core": "0.2.3" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 88ab6279c2f0..bee3b8e64ca9 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 87e129de0307..a3a9b3753fa1 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.2.2", + "version": "0.2.3", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.2" + "@sentry/bundler-plugin-core": "0.2.3" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8329a96e569a..7a4125a48cda 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.2.2", + "version": "0.2.3", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.2" + "@sentry/bundler-plugin-core": "0.2.3" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.2", + "@sentry-internal/eslint-config": "0.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From f98523b23209d6d755eec394f2c8af1de4ecaa94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Perelli?= Date: Tue, 6 Dec 2022 15:56:47 +0100 Subject: [PATCH 122/640] Update magic-string due to deprecated dependency (#146) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7c75b0eb6053..4a8e8a0b4f2f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -44,7 +44,7 @@ "@sentry/cli": "^1.74.6", "@sentry/node": "^7.19.0", "@sentry/tracing": "^7.19.0", - "magic-string": "0.26.2", + "magic-string": "0.27.0", "unplugin": "0.10.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 0632815132db..618dd6d95680 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1414,7 +1414,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -8450,12 +8450,12 @@ lru_map@^0.3.3: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@0.26.2: - version "0.26.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" - integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== +magic-string@0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: - sourcemap-codec "^1.4.8" + "@jridgewell/sourcemap-codec" "^1.4.13" magic-string@^0.25.7: version "0.25.9" From 3423a0a99bae091dfa7977fa109498b935489fd8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Dec 2022 16:16:57 +0100 Subject: [PATCH 123/640] ci: Don't run E2E tests for forks (#149) --- .github/workflows/checks.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 640ff8648a86..9bceb3de2daf 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -73,6 +73,11 @@ jobs: - run: yarn test:integration test-e2e: + # We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks + # Dependabot PRs sadly also don't have access to secrets, so we skip them as well + if: + (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && + github.actor != 'dependabot[bot]' needs: build name: E2E Tests runs-on: ubuntu-latest From 68bec6aaa661f2ba10f400a2de08a771ddc3ebf2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 7 Dec 2022 12:10:02 +0100 Subject: [PATCH 124/640] ref(core): Send project as `dist` in telemetry (#148) --- packages/bundler-plugin-core/src/index.ts | 3 ++- packages/bundler-plugin-core/src/sentry/telemetry.ts | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index f5c3530dc5f5..a7e57effa01c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -64,7 +64,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const { sentryHub, sentryClient } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - allowedToSendTelemetryPromise + allowedToSendTelemetryPromise, + internalOptions.project ); addPluginOptionInformationToHub(internalOptions, sentryHub, unpluginMetaContext.framework); diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index d2ee62e28d73..ef7f20f36a8b 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -7,7 +7,8 @@ const SENTRY_SAAS_HOSTNAME = "sentry.io"; export function makeSentryClient( dsn: string, - allowedToSendTelemetryPromise: Promise + allowedToSendTelemetryPromise: Promise, + userProject: string | undefined ): { sentryHub: Hub; sentryClient: NodeClient } { const client = new NodeClient({ dsn, @@ -15,6 +16,11 @@ export function makeSentryClient( tracesSampleRate: 1, sampleRate: 1, + // We're also sending the user project in dist because it is an indexed fieldso we can use this data effectively in + // a dashboard. + // Yes, this is slightly abusing the purpose of this field. + dist: userProject, + release: __PACKAGE_VERSION__, integrations: [], tracePropagationTargets: ["sentry.io/api"], From f0b5ee1b30087cdf5526ceec761baa7b8762c554 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 7 Dec 2022 12:20:15 +0100 Subject: [PATCH 125/640] meta: Add changelog entry for 0.2.4 (#151) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c48911337547..7c4616ad44e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.2.4 + +- build(core): Update magic-string due to deprecated dependency (#146) +- ref(core): Send project as `dist` in telemetry (#148) + +Work in this release contributed by @jperelli. Thank you for your contribution! + ## 0.2.3 - fix: Exclude `node_modules` from release injection (#143) From 7f076f0f68e732fbdb7daafae86c9fd65543cf45 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 7 Dec 2022 11:27:51 +0000 Subject: [PATCH 126/640] release: 0.2.4 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 1846643fde8e..e4927121d919 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.2.3", + "version": "0.2.4", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4a8e8a0b4f2f..cc4cd186a4f9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.2.3", + "version": "0.2.4", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -56,8 +56,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 15a5eb2ddeb1..2697f76a7bab 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.2.3", + "version": "0.2.4", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.2.3", - "@sentry/rollup-plugin": "0.2.3", - "@sentry/vite-plugin": "0.2.3", - "@sentry/webpack-plugin": "0.2.3", + "@sentry/esbuild-plugin": "0.2.4", + "@sentry/rollup-plugin": "0.2.4", + "@sentry/vite-plugin": "0.2.4", + "@sentry/webpack-plugin": "0.2.4", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index e592dba2d2d3..5783f188a61c 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.2.3", + "version": "0.2.4", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.3" + "@sentry/bundler-plugin-core": "0.2.4" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c8345acabffd..9601a3280ac1 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.2.3", + "version": "0.2.4", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index de9879ed9a58..7b01f55b7b30 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.2.3", + "version": "0.2.4", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", - "@sentry/bundler-plugin-core": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry/bundler-plugin-core": "0.2.4", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index d6a2077d71e2..1fcaa353171f 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.2.3", + "version": "0.2.4", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.3", + "@sentry/bundler-plugin-core": "0.2.4", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index fa0bf7c6fc2b..1a87a28b80ba 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.2.3", + "version": "0.2.4", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.3" + "@sentry/bundler-plugin-core": "0.2.4" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index bee3b8e64ca9..ff4a8fcae89e 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.2.3", + "version": "0.2.4", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a3a9b3753fa1..a7c1dc535b80 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.2.3", + "version": "0.2.4", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.3" + "@sentry/bundler-plugin-core": "0.2.4" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 7a4125a48cda..8705ced4c8ca 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.2.3", + "version": "0.2.4", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.3" + "@sentry/bundler-plugin-core": "0.2.4" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.3", + "@sentry-internal/eslint-config": "0.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From a7b5e14884bab3af24b8507b546f497844ad67f7 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 7 Dec 2022 15:43:27 +0100 Subject: [PATCH 127/640] build: Add CodeQL scanning (#152) --- .github/workflows/codeql.yml | 73 ++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000000..801e6e0e9fbc --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,73 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [main] + pull_request: + # The branches below must be a subset of the branches above + branches: [main] + schedule: + - cron: "40 3 * * 0" + +# Cancel in progress workflows on pull_requests. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-20-latest + + strategy: + fail-fast: false + matrix: + language: ["javascript"] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 From 48080b4fc286f1e31c5e2ca7427b044c1d356aca Mon Sep 17 00:00:00 2001 From: Robert Cepa Date: Mon, 12 Dec 2022 04:55:38 -0800 Subject: [PATCH 128/640] feat(core): Add headers option (#153) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/package.json | 2 +- .../src/options-mapping.ts | 2 + .../bundler-plugin-core/src/sentry/cli.ts | 5 +- .../src/sentry/releasePipeline.ts | 5 +- .../src/sentry/telemetry.ts | 16 ++- packages/bundler-plugin-core/src/types.ts | 6 + packages/esbuild-plugin/README.md | 1 + packages/rollup-plugin/README.md | 1 + packages/vite-plugin/README.md | 1 + packages/webpack-plugin/README.md | 1 + yarn.lock | 106 +++--------------- 11 files changed, 50 insertions(+), 96 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index cc4cd186a4f9..1f9c2d156107 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -41,7 +41,7 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^1.74.6", + "@sentry/cli": "^2.10.0", "@sentry/node": "^7.19.0", "@sentry/tracing": "^7.19.0", "magic-string": "0.27.0", diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index f38d39c7901d..50d0899e045f 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -29,6 +29,7 @@ type OptionalInternalOptions = Partial< | "deploy" | "configFile" | "customHeader" + | "headers" > >; @@ -101,6 +102,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions // In the spirit of maximum compatibility, we allow both here. customHeader: userOptions.customHeader ?? process.env["SENTRY_HEADER"] ?? process.env["CUSTOM_HEADER"], + headers: userOptions.headers, vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 97367cc64911..4adcbf63a1e8 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -15,16 +15,17 @@ export type SentryCLILike = SentryCli | SentryDryRunCLI; * that makes no-ops out of most CLI operations */ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { - const { silent, org, project, authToken, url, vcsRemote, customHeader, dist } = internalOptions; + const { silent, org, project, authToken, url, vcsRemote, customHeader, headers } = + internalOptions; const cli = new SentryCli(internalOptions.configFile, { url, authToken, org, project, vcsRemote, - dist, silent, customHeader, + headers, }); if (internalOptions.dryRun) { diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 03c79766327c..2b5f3147e2c0 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -67,7 +67,10 @@ export async function uploadSourceMaps( // Since our internal include entries contain all top-level sourcemaps options, // we only need to pass the include option here. try { - await ctx.cli.releases.uploadSourceMaps(releaseName, { include: options.include }); + await ctx.cli.releases.uploadSourceMaps(releaseName, { + include: options.include, + dist: options.dist, + }); } catch (e) { ctx.hub.captureException(new Error("CLI Error: Uploading source maps failed")); throw e; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index ef7f20f36a8b..7c535137dbea 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -137,8 +137,18 @@ export function addPluginOptionInformationToHub( } export async function shouldSendTelemetry(options: InternalOptions): Promise { - const { silent, org, project, authToken, url, vcsRemote, customHeader, dist, telemetry, dryRun } = - options; + const { + silent, + org, + project, + authToken, + url, + vcsRemote, + customHeader, + headers, + telemetry, + dryRun, + } = options; // `options.telemetry` defaults to true if (telemetry === false) { @@ -159,9 +169,9 @@ export async function shouldSendTelemetry(options: InternalOptions): Promise & { */ customHeader?: string; + /** + * Headers added to every outgoing network request. + * This value does not set any env variable, and is overridden by customHeader. + */ + headers?: Record; + /** * Attempts a dry run (useful for dev environments), making release creation * a no-op. diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index b229a371fccf..f1c6b26dd421 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -59,6 +59,7 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | | customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 281531ce16ce..8592e73d9058 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -59,6 +59,7 @@ The Sentry Rollup Plugin takes an options argument with the following properties | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | | customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 6350da692092..32e24677ac02 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -59,6 +59,7 @@ The Sentry Vite Plugin takes an options argument with the following properties: | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | | customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 7e2c27aef926..1e176f2a48a7 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -59,6 +59,7 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | | customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | diff --git a/yarn.lock b/yarn.lock index 618dd6d95680..62b9b6a75aec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2564,15 +2564,13 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sentry/cli@^1.74.6": - version "1.74.6" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.6.tgz#c4f276e52c6f5e8c8d692845a965988068ebc6f5" - integrity sha512-pJ7JJgozyjKZSTjOGi86chIngZMLUlYt2HOog+OJn+WGvqEkVymu8m462j1DiXAnex9NspB4zLLNuZ/R6rTQHg== +"@sentry/cli@^2.10.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.10.0.tgz#ff89ae60724742dfafab93006ec2056cc2d74e9b" + integrity sha512-VQnGXPQCqJyxirmUWkNznq3YYklDwDfbogok3lPHaL3r0bhgcNwt/bZxeycpaqk5I7myKNUYW8RG+F1YERODSw== dependencies: https-proxy-agent "^5.0.0" - mkdirp "^0.5.5" node-fetch "^2.6.7" - npmlog "^4.1.2" progress "^2.0.3" proxy-from-env "^1.1.0" which "^2.0.2" @@ -3605,11 +3603,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -3650,16 +3643,16 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" @@ -3668,14 +3661,6 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -4522,11 +4507,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4650,7 +4630,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== @@ -6320,20 +6300,6 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6599,7 +6565,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0, has-unicode@^2.0.1: +has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== @@ -7091,13 +7057,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -8814,7 +8773,7 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -9170,16 +9129,6 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -9190,11 +9139,6 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - nwsapi@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" @@ -9277,7 +9221,7 @@ nx@15.0.0, "nx@>=14.8.6 < 16": yargs "^17.4.0" yargs-parser "21.0.1" -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -10144,7 +10088,7 @@ read@1, read@^1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -10565,7 +10509,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== @@ -10643,7 +10587,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, 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.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -10912,15 +10856,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10985,13 +10920,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -11915,7 +11843,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0, wide-align@^1.1.5: +wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From 6f6cf1b93b5edb11377feb588d73822385c54777 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Dec 2022 15:22:30 +0100 Subject: [PATCH 129/640] ci: Fix faulty image type for CodeQL (#155) --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 801e6e0e9fbc..3d891f155309 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ concurrency: jobs: analyze: name: Analyze - runs-on: ubuntu-20-latest + runs-on: ubuntu-latest strategy: fail-fast: false From 9f43a92df7e370b45090f78d9b2f539bff5b6d88 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Dec 2022 15:45:06 +0100 Subject: [PATCH 130/640] meta: Add chanelog entry for 0.3.0 (#156) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c4616ad44e9..11f4e1bb4f48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.3.0 + +Note: This release bumps the [`@sentry/cli`](https://www.npmjs.com/package/@sentry/cli) dependency from version `1.x` to version `2.x`. + +- feat(core): Add headers option (#153) + +Work in this release contributed by @robertcepa. Thank you for your contribution! + ## 0.2.4 - build(core): Update magic-string due to deprecated dependency (#146) From 58095a17d6b7e1f1a2507aac5fd2eec8f3ffb48d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 12 Dec 2022 15:06:42 +0000 Subject: [PATCH 131/640] release: 0.3.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index e4927121d919..32225a7c7fb5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.2.4", + "version": "0.3.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1f9c2d156107..a80885f14634 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.2.4", + "version": "0.3.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -56,8 +56,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 2697f76a7bab..1d50a58b0c50 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.2.4", + "version": "0.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.2.4", - "@sentry/rollup-plugin": "0.2.4", - "@sentry/vite-plugin": "0.2.4", - "@sentry/webpack-plugin": "0.2.4", + "@sentry/esbuild-plugin": "0.3.0", + "@sentry/rollup-plugin": "0.3.0", + "@sentry/vite-plugin": "0.3.0", + "@sentry/webpack-plugin": "0.3.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5783f188a61c..aafe265281c9 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.2.4", + "version": "0.3.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.4" + "@sentry/bundler-plugin-core": "0.3.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9601a3280ac1..b2ca3bd0e708 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.2.4", + "version": "0.3.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 7b01f55b7b30..f4054fb48387 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.2.4", + "version": "0.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", - "@sentry/bundler-plugin-core": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry/bundler-plugin-core": "0.3.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 1fcaa353171f..5015e02d2d22 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.2.4", + "version": "0.3.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.4", + "@sentry/bundler-plugin-core": "0.3.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 1a87a28b80ba..594296b3ca01 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.2.4", + "version": "0.3.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.4" + "@sentry/bundler-plugin-core": "0.3.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index ff4a8fcae89e..f66edb0d2a07 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.2.4", + "version": "0.3.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a7c1dc535b80..ad86f25020bf 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.2.4", + "version": "0.3.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.4" + "@sentry/bundler-plugin-core": "0.3.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8705ced4c8ca..d593570fbe80 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.2.4", + "version": "0.3.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.2.4" + "@sentry/bundler-plugin-core": "0.3.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.2.4", + "@sentry-internal/eslint-config": "0.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 8c83a962d0fbe67a6158dfd53987646125e6b1f5 Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Tue, 17 Jan 2023 15:26:24 +0100 Subject: [PATCH 132/640] chore(readme): fix typo (#162) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f70a67ee5e7..1a3931382379 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Sentry Bundler Plugins -Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/uplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. +Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/unplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. Check out the individual packages for more information and examples: From df4f3a6c17439a150af7911c0249fefed1dee448 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 19 Jan 2023 11:31:23 +0100 Subject: [PATCH 133/640] deps(core): Bump unplugin version (#164) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 25 ++++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a80885f14634..b13a2ead5305 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -45,7 +45,7 @@ "@sentry/node": "^7.19.0", "@sentry/tracing": "^7.19.0", "magic-string": "0.27.0", - "unplugin": "0.10.1" + "unplugin": "1.0.1" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/yarn.lock b/yarn.lock index 62b9b6a75aec..7f3ec4524fb0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3542,6 +3542,11 @@ acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -11468,15 +11473,15 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unplugin@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.10.1.tgz#e00dc951c1901aef4124121057102a8c290e28b3" - integrity sha512-y1hdBitiLOJvCmer0/IGrMGmHplsm2oFRGWleoAJTRQ8aMHxHOe9gLntYlh1WNLKufBuQ2sOTrHF+KWH4xE8Ag== +unplugin@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" + integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA== dependencies: - acorn "^8.8.0" + acorn "^8.8.1" chokidar "^3.5.3" webpack-sources "^3.2.3" - webpack-virtual-modules "^0.4.5" + webpack-virtual-modules "^0.5.0" unset-value@^1.0.0: version "1.0.0" @@ -11725,10 +11730,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-virtual-modules@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz#e476842dab5eafb7beb844aa2f747fc12ebbf6ec" - integrity sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg== +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== "webpack4@npm:webpack@4.46.0": version "4.46.0" From f783689a5417b044225270d1e0f949bf062736f8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 19 Jan 2023 11:39:28 +0100 Subject: [PATCH 134/640] ref: Turn default exports into named exports (#165) --- MIGRATION.md | 43 +++++++++++++++++++ .../e2e-tests/utils/create-cjs-bundles.ts | 9 ++-- packages/esbuild-plugin/README.md | 2 +- packages/esbuild-plugin/src/index.ts | 4 +- .../esbuild-plugin/test/public-api.test.ts | 2 +- packages/rollup-plugin/README.md | 2 +- packages/rollup-plugin/src/index.ts | 4 +- .../rollup-plugin/test/public-api.test.ts | 2 +- packages/vite-plugin/README.md | 2 +- packages/vite-plugin/src/index.ts | 4 +- packages/vite-plugin/test/public-api.test.ts | 2 +- packages/webpack-plugin/README.md | 2 +- packages/webpack-plugin/src/index.ts | 4 +- .../webpack-plugin/test/public-api.test.ts | 2 +- 14 files changed, 64 insertions(+), 20 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 83e7d0ee7ae3..e35c379f4900 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -37,3 +37,46 @@ Matching behaviour stays the same. Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into the global object which would map from `project@org` to the `release` value. In version 2, we made this behaviour opt-in by setting the `injectReleasesMap` option in the plugin options to `true`. The purpose of this option is to support module-federated projects or micro frontend setups where multiple projects would want to access the global release variable. However, Sentry SDKs by default never accessed this variable so it would require manual user-intervention to make use of it. Making this behaviour opt-in decreases the bundle size impact of our plugin for the majority of users. + +## Upgrading from 0.3.x to 0.4.x + +### Replacing default exports with named exports + +Previously all the plugins were exported as default exports. +Moving forward, with version `0.4.x` of the plugins, all exports become named exports: + +```ts +import sentryVitePlugin from "@sentry/vite-plugin"; +// becomes +import { sentryVitePlugin } from "@sentry/vite-plugin"; + +import sentryEsbuildPlugin from "@sentry/esbuild-plugin"; +// becomes +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; + +import sentryRollupPlugin from "@sentry/rollup-plugin"; +// becomes +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +``` + +### Renaming of `Options` type export + +The `Options` type was a bit too generic for our taste so we renamed it: + +```ts +import type { Options } from "@sentry/vite-plugin"; +// becomes +import type { SentryVitePluginOptions } from "@sentry/vite-plugin"; + +import type { Options } from "@sentry/esbuild-plugin"; +// becomes +import type { SentryEsbuildPluginOptions } from "@sentry/esbuild-plugin"; + +import type { Options } from "@sentry/rollup-plugin"; +// becomes +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +``` + +### Removal of `customHeader` option + +We removed the `customHeader` option in favor of the `headers` option. diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index d1c20f3fe4c2..593e149dd353 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -5,10 +5,11 @@ import { default as webpack4 } from "webpack4"; import { webpack as webpack5 } from "webpack"; import * as esbuild from "esbuild"; -import sentryVitePlugin, { Options } from "@sentry/vite-plugin"; -import sentryWebpackPlugin from "@sentry/webpack-plugin"; -import sentryEsbuildPlugin from "@sentry/esbuild-plugin"; -import sentryRollupPlugin from "@sentry/rollup-plugin"; +import type { 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"; export function createCjsBundles( entrypoints: { [name: string]: string }, diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index f1c6b26dd421..6f5abf91fa63 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -31,7 +31,7 @@ $ yarn add @sentry/esbuild-plugin --dev ```js // esbuild.config.js -const sentryEsbuildPlugin = require("@sentry/esbuild-plugin"); +const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); require("esbuild").build({ plugins: [ diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index a7e7f03da45d..9694575ef299 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryEsbuildPlugin as default } from "@sentry/bundler-plugin-core"; -export type { Options } from "@sentry/bundler-plugin-core"; +export { sentryEsbuildPlugin } from "@sentry/bundler-plugin-core"; +export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index 7a5ea90962c4..0721ef7c52d9 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import sentryEsbuildPlugin from "../src"; +import { sentryEsbuildPlugin } from "../src"; test("Esbuild plugin should exist", () => { expect(sentryEsbuildPlugin).toBeDefined(); diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 8592e73d9058..9ac8b5941940 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -31,7 +31,7 @@ $ yarn add @sentry/rollup-plugin --dev ```js // rollup.config.js -import sentryRollupPlugin from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; export default { plugins: [ diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 6e64e732d3f4..82233adfe1a5 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryRollupPlugin as default } from "@sentry/bundler-plugin-core"; -export type { Options } from "@sentry/bundler-plugin-core"; +export { sentryRollupPlugin } from "@sentry/bundler-plugin-core"; +export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index 59cfdaa3c373..900e101e5852 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import sentryRollupPlugin from "../src"; +import { sentryRollupPlugin } from "../src"; test("Rollup plugin should exist", () => { expect(sentryRollupPlugin).toBeDefined(); diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 32e24677ac02..c138051c7f76 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -31,7 +31,7 @@ $ yarn add @sentry/vite-plugin --dev ```ts // vite.config.ts -import sentryVitePlugin from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; export default { plugins: [ diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index f4754ff8b06b..d0bd4c9cb5d2 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryVitePlugin as default } from "@sentry/bundler-plugin-core"; -export type { Options } from "@sentry/bundler-plugin-core"; +export { sentryVitePlugin } from "@sentry/bundler-plugin-core"; +export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index 1de1f84db7f8..cfa848acec02 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import sentryVitePlugin from "../src"; +import { sentryVitePlugin } from "../src"; test("Vite plugin should exist", () => { expect(sentryVitePlugin).toBeDefined(); diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 1e176f2a48a7..7014e275d334 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -31,7 +31,7 @@ $ yarn add @sentry/webpack-plugin --dev ```js // webpack.config.js -const sentryWebpackPlugin = require("@sentry/webpack-plugin"); +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); module.exports = { plugins: [ diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 67cd0758054a..89d6e52d7776 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryWebpackPlugin as default } from "@sentry/bundler-plugin-core"; -export type { Options } from "@sentry/bundler-plugin-core"; +export { sentryWebpackPlugin } from "@sentry/bundler-plugin-core"; +export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index 81979a74183f..a27f454d2f78 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import sentryWebpackPlugin from "../src"; +import { sentryWebpackPlugin } from "../src"; test("Webpack plugin should exist", () => { expect(sentryWebpackPlugin).toBeDefined(); From 11dc761b88db7742d6ee4037b7b678f3a3145031 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 19 Jan 2023 11:50:10 +0100 Subject: [PATCH 135/640] ref: Remove `customHeader` option (#167) --- MIGRATION.md | 5 ++++ .../src/options-mapping.ts | 6 ----- .../bundler-plugin-core/src/sentry/cli.ts | 4 +-- .../src/sentry/telemetry.ts | 14 +--------- packages/bundler-plugin-core/src/types.ts | 9 ------- .../test/option-mappings.test.ts | 26 ------------------- packages/esbuild-plugin/README.md | 3 +-- packages/rollup-plugin/README.md | 3 +-- packages/vite-plugin/README.md | 3 +-- packages/webpack-plugin/README.md | 3 +-- 10 files changed, 11 insertions(+), 65 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index e35c379f4900..8c2d8fcf246b 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -38,6 +38,11 @@ Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into The purpose of this option is to support module-federated projects or micro frontend setups where multiple projects would want to access the global release variable. However, Sentry SDKs by default never accessed this variable so it would require manual user-intervention to make use of it. Making this behaviour opt-in decreases the bundle size impact of our plugin for the majority of users. +### Removal of the `customHeader` option + +The `customHeader` was used to attach an additional header to outgoing requests to Sentry when uploading source maps. +This option has been removed in favor of the `headers` option which allows for attaching multiple headers. + ## Upgrading from 0.3.x to 0.4.x ### Replacing default exports with named exports diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 50d0899e045f..c0d55e3cfa25 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -28,7 +28,6 @@ type OptionalInternalOptions = Partial< | "setCommits" | "deploy" | "configFile" - | "customHeader" | "headers" > >; @@ -97,11 +96,6 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions // the passed options are undefined. authToken: userOptions.authToken, // env var: `SENTRY_AUTH_TOKEN` - // CLI v1 (and the "old" webpack plugin) use `CUSTOM_HEADER`, - // but CLI v2 uses `SENTRY_HEADER` (which is also better aligned with other naming) - // In the spirit of maximum compatibility, we allow both here. - customHeader: - userOptions.customHeader ?? process.env["SENTRY_HEADER"] ?? process.env["CUSTOM_HEADER"], headers: userOptions.headers, vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 4adcbf63a1e8..329cb699f330 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -15,8 +15,7 @@ export type SentryCLILike = SentryCli | SentryDryRunCLI; * that makes no-ops out of most CLI operations */ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { - const { silent, org, project, authToken, url, vcsRemote, customHeader, headers } = - internalOptions; + const { silent, org, project, authToken, url, vcsRemote, headers } = internalOptions; const cli = new SentryCli(internalOptions.configFile, { url, authToken, @@ -24,7 +23,6 @@ export function getSentryCli(internalOptions: InternalOptions, logger: Logger): project, vcsRemote, silent, - customHeader, headers, }); diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 7c535137dbea..baf84ad94868 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -137,18 +137,7 @@ export function addPluginOptionInformationToHub( } export async function shouldSendTelemetry(options: InternalOptions): Promise { - const { - silent, - org, - project, - authToken, - url, - vcsRemote, - customHeader, - headers, - telemetry, - dryRun, - } = options; + const { silent, org, project, authToken, url, vcsRemote, headers, telemetry, dryRun } = options; // `options.telemetry` defaults to true if (telemetry === false) { @@ -170,7 +159,6 @@ export async function shouldSendTelemetry(options: InternalOptions): Promise & { */ vcsRemote?: string; - /** - * A header added to every outgoing network request. - * The format should be `header-key: header-value`. - * - * This value can also be specified via the `CUSTOM_HEADER` environment variable. - */ - customHeader?: string; - /** * Headers added to every outgoing network request. - * This value does not set any env variable, and is overridden by customHeader. */ headers?: Record; diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index d150a4d8b865..72837c39a18c 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -81,32 +81,6 @@ describe("normalizeUserOptions()", () => { }); }); - test("should handle `SENTRY_HEADER` & `CUSTOM_HEADER` env", () => { - const userOptions: Options = { - org: "my-org", - project: "my-project", - authToken: "my-auth-token", - release: "my-release", - include: "./out", - }; - - const _original_SENTRY_HEADER = process.env["SENTRY_HEADER"]; - const _original_CUSTOM_HEADER = process.env["CUSTOM_HEADER"]; - - expect(normalizeUserOptions(userOptions).customHeader).toBeUndefined(); - - process.env["CUSTOM_HEADER"] = "custom-header"; - - expect(normalizeUserOptions(userOptions).customHeader).toBe("custom-header"); - - process.env["SENTRY_HEADER"] = "sentry-header"; - - expect(normalizeUserOptions(userOptions).customHeader).toBe("sentry-header"); - - process.env["SENTRY_HEADER"] = _original_SENTRY_HEADER; - process.env["CUSTOM_HEADER"] = _original_CUSTOM_HEADER; - }); - test.each(["https://sentry.io", undefined])( "should enable telemetry if `telemetry` is true and Sentry SaaS URL (%s) is used", (url) => { diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index 6f5abf91fa63..f295bac380a1 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -59,8 +59,7 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | | dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 9ac8b5941940..898238735aee 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -59,8 +59,7 @@ The Sentry Rollup Plugin takes an options argument with the following properties | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | | dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index c138051c7f76..2aacb7fbf45d 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -59,8 +59,7 @@ The Sentry Vite Plugin takes an options argument with the following properties: | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | | dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 7014e275d334..86c39a3c84fa 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -59,8 +59,7 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. This value does not set any env variable, and is overridden by `customHeader`. | -| customHeader | `string` | optional | A header added to every outgoing network request. The format should be `header-key: header-value`. This value can also be specified via the `CUSTOM_HEADER` environment variable. | +| headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | | release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | | dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | From 6ca81b8b0657bb210623e0dab8f8eefaec7e5eb6 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 19 Jan 2023 11:56:28 +0100 Subject: [PATCH 136/640] ref(core): Only inject release into entrypoints per default (#166) --- MIGRATION.md | 7 ++ packages/bundler-plugin-core/src/index.ts | 84 ++++++------------- packages/bundler-plugin-core/src/types.ts | 5 +- .../__snapshots__/basic-upload.test.ts.snap | 40 +++++---- 4 files changed, 55 insertions(+), 81 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 8c2d8fcf246b..1f0dae68bb28 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -82,6 +82,13 @@ import type { Options } from "@sentry/rollup-plugin"; import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; ``` +### Behavioral change of `releaseInjectionTargets` + +Previously the plugins injected a Sentry release value into every module that was processed. +This approach caused problems in some cases so moving forward, they will only inject the release value into entrypoints by default. + +In case you need more fine grained control over which modules should have a release value, you can use the `releaseInjectionTargets` option. + ### Removal of `customHeader` option We removed the `customHeader` option in favor of the `headers` option. diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a7e57effa01c..98351b6d7d8e 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -23,11 +23,6 @@ import { getSentryCli } from "./sentry/cli"; import { makeMain } from "@sentry/node"; import path from "path"; -// We prefix the polyfill id with \0 to tell other plugins not to try to load or transform it. -// This hack is taken straight from https://rollupjs.org/guide/en/#resolveid. -// This probably doesn't work for all bundlers but for rollup it does. -const RELEASE_INJECTOR_ID = "\0sentry-release-injector"; - const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; /** @@ -36,17 +31,17 @@ const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs * - Sourcemaps upload * * Release injection: - * - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module - * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) - * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved - * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). - * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into + * each JavaScript/TypeScript entrypoint. On a technical level this is done by identifying + * entrypoints in the `resolveId` hook and prepending user code in the `transform` hook. + * If a user wants to inject the release into a particular set of modules instead, + * they can use the `releaseInjectionTargets` option. * * Source maps upload: * - * The sentry bundler plugin will also take care of uploading source maps to Sentry. This is all done in the - * `writeBundle` hook. In this hook the sentry plugin will execute the release creation pipeline: + * The sentry bundler plugin will also take care of uploading source maps to Sentry. This + * is all done in the `writeBundle` hook. In this hook the sentry plugin will execute the + * release creation pipeline: * * 1. Create a new release * 2. Delete already uploaded artifacts for this release (if `cleanArtifacts` is enabled) @@ -104,6 +99,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; + const absolueEntrypointPaths = new Set(); + return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -165,38 +162,11 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { resolveId(id, importer, { isEntry }) { logger.debug('Called "resolveId":', { id, importer, isEntry }); - if (id === RELEASE_INJECTOR_ID) { - return RELEASE_INJECTOR_ID; - } else { - return undefined; + if (isEntry) { + absolueEntrypointPaths.add(path.resolve(path.normalize(id))); } - }, - - loadInclude(id) { - logger.debug('Called "loadInclude":', { id }); - return id === RELEASE_INJECTOR_ID; - }, - /** - * Responsible for "virtually" loading the "sentry-release-injector" module. "Virtual" means that the module is not - * read from somewhere on disk but rather just returned via a string. - * - * @param id Always the absolute (fully resolved) path to the module. - * @returns The global injector code when we load the "sentry-release-injector" module. Otherwise returns `undefined`. - */ - async load(id) { - logger.debug('Called "load":', { id }); - - if (id === RELEASE_INJECTOR_ID) { - return generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: internalOptions.injectReleasesMap, - org: internalOptions.org, - project: internalOptions.project, - }); - } else { - return undefined; - } + return undefined; }, /** @@ -214,11 +184,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); - // We don't want to transform our injected code. - if (normalizedId === RELEASE_INJECTOR_ID) { - return false; - } - if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { @@ -233,15 +198,16 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { return normalizedId === normalizedEntry; } }); - } else { - const isInNodeModules = normalizedId.split(path.sep).includes("node_modules"); + } else if (absolueEntrypointPaths.has(normalizedId)) { const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) ); - return !isInNodeModules && pathIsOrdinary && pathHasAllowedFileEnding; + return pathIsOrdinary && pathHasAllowedFileEnding; + } else { + return false; } }, @@ -253,15 +219,20 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { * @param id Always the absolute (fully resolved) path to the module. * @returns transformed code + source map */ - transform(code, id) { + async transform(code, id) { logger.debug('Called "transform":', { id }); // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); - // Appending instead of prepending has less probability of mucking with user's source maps. - // Luckily import statements get hoisted to the top anyways. - ms.append(`;\nimport "${RELEASE_INJECTOR_ID}";`); + ms.prepend( + generateGlobalInjectorCode({ + release: await releaseNamePromise, + injectReleasesMap: internalOptions.injectReleasesMap, + org: internalOptions.org, + project: internalOptions.project, + }) + ); if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. @@ -387,8 +358,7 @@ function generateGlobalInjectorCode({ const key = org ? `${project}@${org}` : project; code += ` _global.SENTRY_RELEASES=_global.SENTRY_RELEASES || {}; - _global.SENTRY_RELEASES["${key}"]={id:"${release}"}; - `; + _global.SENTRY_RELEASES["${key}"]={id:"${release}"};`; } return code; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 4263f032a0fd..fd863125aacd 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -71,9 +71,8 @@ export type Options = Omit & { * if the release should be injected into the module and `false` otherwise. String * values of this option require a full match with the absolute path of the module. * - * By default, the release will be injected into all modules - however, bundlers - * will include the injected release code only once per entrypoint. - * If release injection should be disabled, provide an empty array here. + * By default, the release will be injected into all entrypoints. If release + * injection should be disabled, provide an empty array here. */ releaseInjectionTargets?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); 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 c8c6dfb3abcb..83b0e4f3e613 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 @@ -3,13 +3,13 @@ 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\\"); + "content": "\\"use strict\\";var e=o=>{if(o===3)throw new Error(\\"I'm an uncaught error\\");return o<=1?o:e(o-1)+e(o-2)};var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-esbuild\\"};console.log(\\"Hi, I'm a very simple app\\");e(10);console.log(\\"I'm done\\"); //# sourceMappingURL=index.js.map ", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"sources\\":[\\"sentry-plugin:\\\\u0000sentry-release-injector\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-esbuild\\\\\\"};\\",\\"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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[],\\"mappings\\":\\"aACI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECV9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", + "content": "{\\"version\\":3,\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"\\\\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-esbuild\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\"aAAO,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,EACrD,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", "name": "~/index.js.map", }, ] @@ -20,17 +20,6 @@ Array [ Object { "content": "'use strict'; -var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"}; - const fibonacci = (n) => { if (n === 3) { throw new Error(\\"I'm an uncaught error\\"); @@ -41,7 +30,16 @@ const fibonacci = (n) => { return fibonacci(n - 1) + fibonacci(n - 2); }; -console.log(\\"Hi, I'm a very simple app\\"); +var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"};console.log(\\"Hi, I'm a very simple app\\"); fibonacci(10); @@ -51,7 +49,7 @@ console.log(\\"I'm done\\"); "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;AAAA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;AAAO,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,EAAE,OAAO,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;;;;;;;;;;;ACRD,IAAA,OAAA,CAAA,cAAA,CAAA,CAAA,EAAA,CAAA,qBAAA,CAAA,CACA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", "name": "~/index.js.map", }, ] @@ -60,13 +58,13 @@ console.log(\\"I'm done\\"); 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\\"); + "content": "\\"use strict\\";const o=e=>{if(e===3)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:o(e-1)+o(e-2)};var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-vite\\"};console.log(\\"Hi, I'm a very simple app\\");o(10);console.log(\\"I'm done\\"); //# sourceMappingURL=index.js.map ", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\"],\\"mappings\\":\\"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\",\\"_global\\"],\\"mappings\\":\\"aAAO,MAAMA,EAAaC,GAAM,CAC9B,GAAIA,IAAM,EACR,MAAM,IAAI,MAAM,uBAAuB,EAEzC,OAAIA,GAAK,EACAA,EAEFD,EAAUC,EAAI,CAAC,EAAID,EAAUC,EAAI,CAAC,CAC3C,kFCRAC,EAAA,eAAA,CAAA,GAAA,mBAAA,EACA,QAAA,IAAA,2BAAA,EAEAF,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", "name": "~/index.js.map", }, ] @@ -75,12 +73,12 @@ 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\\")}])); + "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=0)}([function(e,n,r){\\"use strict\\";r.r(n);const t=e=>{if(3===e)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:t(e-1)+t(e-2)};(\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack4\\"},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:///./_virtual_%00sentry-release-injector\\",\\"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\\",\\"\\\\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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"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,iBChF7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCVxB,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\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack:///webpack/bootstrap\\",\\"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 = 0);\\\\n\\",\\"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\\",\\"\\\\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\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"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\\",\\"fibonacci\\",\\"Error\\",\\"window\\",\\"global\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"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,sCClF9C,MAAMC,EAAaP,IACxB,GAAU,IAANA,EACF,MAAM,IAAIQ,MAAM,yBAElB,OAAIR,GAAK,EACAA,EAEFO,EAAUP,EAAI,GAAKO,EAAUP,EAAI,KCLlB,oBAAXS,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,yBAC/BC,QAAQC,IAAI,6BAEZR,EAAU,IAEVO,QAAQC,IAAI\\"}", "name": "~/index.js.map", }, ] @@ -89,12 +87,12 @@ Array [ exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack5 1`] = ` Array [ Object { - "content": "(()=>{var e={87:(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(87);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})})(); + "content": "(()=>{\\"use strict\\";var e={};e.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),e.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})};var o={};e.r(o);const r=e=>{if(3===e)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:r(e-1)+r(e-2)};(\\"undefined\\"!=typeof window?window:void 0!==e.g?e.g:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack5\\"},console.log(\\"Hi, I'm a very simple app\\"),r(10),console.log(\\"I'm done\\");var t=exports;for(var n in o)t[n]=o[n];o.__esModule&&Object.defineProperty(t,\\"__esModule\\",{value:!0})})(); //# sourceMappingURL=index.js.map", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./_virtual_%00sentry-release-injector\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"\\\\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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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 \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"\\\\u0000sentry-release-injector\\\\\\";\\"],\\"names\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"2BAEwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCT3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,yCCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// The require scope\\\\nvar __webpack_require__ = {};\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\",\\"\\\\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-webpack5\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"__webpack_require__\\",\\"g\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"window\\",\\"r\\",\\"exports\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"mBACA,IAAIA,EAAsB,CAAC,ECD3BA,EAAoBC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBN,EAAoBO,EAAKC,IACH,oBAAXC,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeJ,EAASC,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeJ,EAAS,aAAc,CAAEK,OAAO,GAAO,E,gBCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,GCLpB,oBAAXT,OACLA,YACkB,IAAX,EAAAL,EACL,EAAAA,EACgB,oBAATgB,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,yBAC/BC,QAAQC,IAAI,6BAEZP,EAAU,IAEVM,QAAQC,IAAI,Y\\"}", "name": "~/index.js.map", }, ] From 5954b0c087aa325a26c29be16218f0449a04df2d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 19 Jan 2023 12:11:16 +0100 Subject: [PATCH 137/640] meta: Add changelog entry for 0.4.0 (#168) --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11f4e1bb4f48..87e371169bbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.4.0 + +This release contains breaking changes. Please refer to the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md) on how to update from version `0.3.x` to `0.4.x`. + +- deps(core): Bump unplugin version (#164) +- ref(core): Only inject release into entrypoints per default (#166) (BREAKING) +- ref: Remove `customHeader` option (#167) (BREAKING) +- ref: Turn default exports into named exports (#165) (BREAKING) + +Work in this release contributed by @manniL. Thank you for your contribution! + ## 0.3.0 Note: This release bumps the [`@sentry/cli`](https://www.npmjs.com/package/@sentry/cli) dependency from version `1.x` to version `2.x`. From 5fb167438cbf4554e2ffaa1db65714ad9a0f0020 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 19 Jan 2023 12:02:31 +0000 Subject: [PATCH 138/640] release: 0.4.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 32225a7c7fb5..6b5933e8802b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.3.0", + "version": "0.4.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b13a2ead5305..98f902bdb2db 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.3.0", + "version": "0.4.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -56,8 +56,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 1d50a58b0c50..017dc7469d63 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.3.0", - "@sentry/rollup-plugin": "0.3.0", - "@sentry/vite-plugin": "0.3.0", - "@sentry/webpack-plugin": "0.3.0", + "@sentry/esbuild-plugin": "0.4.0", + "@sentry/rollup-plugin": "0.4.0", + "@sentry/vite-plugin": "0.4.0", + "@sentry/webpack-plugin": "0.4.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index aafe265281c9..6b67d6fdee6c 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.3.0", + "version": "0.4.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.3.0" + "@sentry/bundler-plugin-core": "0.4.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index b2ca3bd0e708..a8ee2d620f7b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index f4054fb48387..5dea52b4ac7d 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", - "@sentry/bundler-plugin-core": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry/bundler-plugin-core": "0.4.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 5015e02d2d22..0e188d5003c8 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.3.0", + "@sentry/bundler-plugin-core": "0.4.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 594296b3ca01..b8063b889215 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.3.0", + "version": "0.4.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.3.0" + "@sentry/bundler-plugin-core": "0.4.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index f66edb0d2a07..c095de1cbce0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index ad86f25020bf..b5282f4ea643 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.3.0", + "version": "0.4.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.3.0" + "@sentry/bundler-plugin-core": "0.4.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d593570fbe80..8aaf55383a66 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.3.0", + "version": "0.4.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.3.0" + "@sentry/bundler-plugin-core": "0.4.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.3.0", + "@sentry-internal/eslint-config": "0.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 8cfbd35bf601a07aae37d6dcc4ff6769f413c268 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 20 Jan 2023 16:04:12 +0100 Subject: [PATCH 139/640] feat: Add `sentryCliBinaryExists` function (#171) --- MIGRATION.md | 4 ++++ packages/bundler-plugin-core/src/index.ts | 11 +++++++++++ packages/esbuild-plugin/src/index.ts | 2 +- packages/rollup-plugin/src/index.ts | 2 +- packages/vite-plugin/src/index.ts | 2 +- packages/webpack-plugin/src/index.ts | 2 +- 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 1f0dae68bb28..994259a98015 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -43,6 +43,10 @@ The purpose of this option is to support module-federated projects or micro fron The `customHeader` was used to attach an additional header to outgoing requests to Sentry when uploading source maps. This option has been removed in favor of the `headers` option which allows for attaching multiple headers. +### Renaming of `cliBinaryExists` to `sentryCliBinaryExists` + +The `cliBinaryExists` function was renamed to `sentryCliBinaryExists`. + ## Upgrading from 0.3.x to 0.4.x ### Replacing default exports with named exports diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 98351b6d7d8e..9680d9a18a40 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -10,6 +10,7 @@ import { uploadSourceMaps, } from "./sentry/releasePipeline"; import "@sentry/tracing"; +import SentryCli from "@sentry/cli"; import { addPluginOptionInformationToHub, addSpanToTransaction, @@ -22,6 +23,7 @@ import { InternalOptions, normalizeUserOptions, validateOptions } from "./option import { getSentryCli } from "./sentry/cli"; import { makeMain } from "@sentry/node"; import path from "path"; +import fs from "fs"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; @@ -364,6 +366,15 @@ function generateGlobalInjectorCode({ return code; } +/** + * Determines whether the Sentry CLI binary is in its expected location. + * This function is useful since `@sentry/cli` installs the binary via a post-install + * script and post-install scripts may not always run. E.g. with `npm i --ignore-scripts`. + */ +export function sentryCliBinaryExists(): boolean { + return fs.existsSync(SentryCli.getPath()); +} + // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryVitePlugin: (options: Options) => any = unplugin.vite; // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 9694575ef299..b5d964d7f784 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryEsbuildPlugin } from "@sentry/bundler-plugin-core"; +export { sentryEsbuildPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 82233adfe1a5..ee9c1f4fac2d 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryRollupPlugin } from "@sentry/bundler-plugin-core"; +export { sentryRollupPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index d0bd4c9cb5d2..5341d28939f4 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryVitePlugin } from "@sentry/bundler-plugin-core"; +export { sentryVitePlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 89d6e52d7776..1c683c591a1f 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,2 +1,2 @@ -export { sentryWebpackPlugin } from "@sentry/bundler-plugin-core"; +export { sentryWebpackPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; From 5e0710de0833384f408868c9fec092e312fd8044 Mon Sep 17 00:00:00 2001 From: David Turbert <6975084+dcyou@users.noreply.github.com> Date: Thu, 9 Feb 2023 22:38:02 +0100 Subject: [PATCH 140/640] docs: Fix documentation to use named exports (#173) --- packages/vite-plugin/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 2aacb7fbf45d..bc99212137d6 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -105,7 +105,7 @@ Example: ```ts // vite.config.ts -import sentryVitePlugin from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; export default { plugins: [ From 97a2a2f7e72b19aade44d008a55ee5a8490c51b1 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 22 Feb 2023 16:13:43 +0100 Subject: [PATCH 141/640] feat: Add `_experiments.injectBuildInformation` option (#176) --- .prettierignore | 3 +- package.json | 2 +- packages/bundler-plugin-core/.eslintrc.js | 8 +- packages/bundler-plugin-core/jest.config.js | 1 + packages/bundler-plugin-core/package.json | 1 + packages/bundler-plugin-core/src/index.ts | 29 ++- .../src/options-mapping.ts | 2 + packages/bundler-plugin-core/src/types.ts | 14 ++ packages/bundler-plugin-core/src/utils.ts | 158 ++++++++++++++++ .../deeply/nested/index.js | 1 + .../deeply/nested/package.json | 3 + .../deeply-nested-package/package.json | 3 + .../deeply/nested/index.js | 1 + .../deeply/nested/package.json | 1 + .../nested-error-package/package.json | 3 + .../nested-package/deeply/nested/index.js | 1 + .../nested-package/deeply/nested/package.json | 3 + .../test/fixtures/nested-package/package.json | 3 + .../no-valid-package/deeply/nested/index.js | 1 + .../deeply/nested/package.json | 3 + .../test/option-mappings.test.ts | 2 + .../bundler-plugin-core/test/tsconfig.json | 2 +- .../bundler-plugin-core/test/utils.test.ts | 171 ++++++++++++++++++ packages/esbuild-plugin/README.md | 67 +++---- .../build-information-injection.test.ts | 64 +++++++ .../input/entrypoint.js | 2 + .../build-information-injection/setup.ts | 12 ++ packages/rollup-plugin/README.md | 67 +++---- packages/vite-plugin/README.md | 67 +++---- packages/webpack-plugin/README.md | 67 +++---- yarn.lock | 16 +- 31 files changed, 632 insertions(+), 146 deletions(-) create mode 100644 packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/nested-package/package.json create mode 100644 packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json create mode 100644 packages/bundler-plugin-core/test/utils.test.ts create mode 100644 packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts create mode 100644 packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js create mode 100644 packages/integration-tests/fixtures/build-information-injection/setup.ts diff --git a/.prettierignore b/.prettierignore index 218659e6dd46..a409bc299bed 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ -packages/e2e-tests/scenarios/*/ref/**/* \ No newline at end of file +packages/e2e-tests/scenarios/*/ref/**/* +packages/bundler-plugin-core/test/fixtures \ No newline at end of file diff --git a/package.json b/package.json index 87883c41ee2d..168f7ceb7427 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "npm-run-all": "^4.1.5" }, "volta": { - "node": "14.21.1", + "node": "14.21.2", "yarn": "1.22.19" } } diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 404bc734c663..46367cee734b 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -4,7 +4,13 @@ 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.js"], + ignorePatterns: [ + ".eslintrc.js", + "dist", + "jest.config.js", + "rollup.config.js", + "test/fixtures/**/*", + ], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/bundler-plugin-core/jest.config.js b/packages/bundler-plugin-core/jest.config.js index 555d04bb645e..4c779f6f98c9 100644 --- a/packages/bundler-plugin-core/jest.config.js +++ b/packages/bundler-plugin-core/jest.config.js @@ -2,6 +2,7 @@ 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 98f902bdb2db..1e456ad2fc13 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -44,6 +44,7 @@ "@sentry/cli": "^2.10.0", "@sentry/node": "^7.19.0", "@sentry/tracing": "^7.19.0", + "find-up": "5.0.0", "magic-string": "0.27.0", "unplugin": "1.0.1" }, diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 9680d9a18a40..0e9c699d0da7 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -24,6 +24,7 @@ import { getSentryCli } from "./sentry/cli"; import { makeMain } from "@sentry/node"; import path from "path"; import fs from "fs"; +import { getDependencies, getPackageJson, parseMajorVersion } from "./utils"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; @@ -231,6 +232,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { generateGlobalInjectorCode({ release: await releaseNamePromise, injectReleasesMap: internalOptions.injectReleasesMap, + injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, org: internalOptions.org, project: internalOptions.project, }) @@ -328,17 +330,19 @@ function handleError( } /** - * Generates code for the "sentry-release-injector" which is responsible for setting the global `SENTRY_RELEASE` - * variable. + * Generates code for the global injector which is responsible for setting the global + * `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables. */ function generateGlobalInjectorCode({ release, injectReleasesMap, + injectBuildInformation, org, project, }: { release: string; injectReleasesMap: boolean; + injectBuildInformation: boolean; org?: string; project?: string; }) { @@ -363,9 +367,30 @@ function generateGlobalInjectorCode({ _global.SENTRY_RELEASES["${key}"]={id:"${release}"};`; } + if (injectBuildInformation) { + const buildInfo = getBuildInformation(); + + code += ` + _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; + } + return code; } +export function getBuildInformation() { + const packageJson = getPackageJson(); + + const { deps, depsVersions } = packageJson + ? getDependencies(packageJson) + : { deps: [], depsVersions: {} }; + + return { + deps, + depsVersions, + nodeVersion: parseMajorVersion(process.version), + }; +} + /** * Determines whether the Sentry CLI binary is in its expected location. * This function is useful since `@sentry/cli` installs the binary via a post-install diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index c0d55e3cfa25..f1e36c0f7ace 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -12,6 +12,7 @@ type RequiredInternalOptions = Required< | "cleanArtifacts" | "telemetry" | "injectReleasesMap" + | "_experiments" > >; @@ -89,6 +90,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions silent: userOptions.silent ?? false, telemetry: userOptions.telemetry ?? true, injectReleasesMap: userOptions.injectReleasesMap ?? false, + _experiments: userOptions._experiments ?? {}, // These options and can also be set via env variables or the config file. // If they're set in the options, we simply pass them to the CLI constructor. diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index fd863125aacd..eed0c6de620a 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -198,6 +198,20 @@ export type Options = Omit & { * Defaults to `false`. */ injectReleasesMap?: boolean; + + /** + * These options are considered experimental and subject to change. + * + * _experiments.injectBuildInformation: + * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. + * This contains information about the build, e.g. dependencies, node version and other useful data. + * + * Defaults to `false`. + * @hidden + */ + _experiments?: { + injectBuildInformation?: boolean; + }; }; export type IncludeEntry = { diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 3027ff001d9a..0997a72dcdb4 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -1,3 +1,8 @@ +import findUp from "find-up"; +import path from "node:path"; +import fs from "node:fs"; +import os from "node:os"; + /** * Checks whether the given input is already an array, and if it isn't, wraps it in one. * @@ -7,3 +12,156 @@ export function arrayify(maybeArray: T | T[]): T[] { return Array.isArray(maybeArray) ? maybeArray : [maybeArray]; } + +type PackageJson = Record; + +/** + * Get the closes package.json from a given starting point upwards. + * This handles a few edge cases: + * * Check if a given file package.json appears to be an actual NPM package.json file + * * Stop at the home dir, to avoid looking too deeply + */ +export function getPackageJson({ cwd, stopAt }: { cwd?: string; stopAt?: string } = {}): + | PackageJson + | undefined { + return lookupPackageJson(cwd ?? process.cwd(), path.normalize(stopAt ?? os.homedir())); +} + +export function parseMajorVersion(version: string): number | undefined { + // if it has a `v` prefix, remove it + if (version.startsWith("v")) { + version = version.slice(1); + } + + // First, try simple lookup of exact, ~ and ^ versions + const regex = /^[\^~]?(\d+)(\.\d+)?(\.\d+)?(-.+)?/; + + const match = version.match(regex); + if (match) { + return parseInt(match[1] as string, 10); + } + + // Try to parse e.g. 1.x + const coerced = parseInt(version, 10); + if (!Number.isNaN(coerced)) { + return coerced; + } + + // Match <= and >= ranges. + const gteLteRegex = /^[<>]=\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/; + const gteLteMatch = version.match(gteLteRegex); + if (gteLteMatch) { + return parseInt(gteLteMatch[1] as string, 10); + } + + // match < ranges + const ltRegex = /^<\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/; + const ltMatch = version.match(ltRegex); + if (ltMatch) { + // Two scenarios: + // a) < 2.0.0 --> return 1 + // b) < 2.1.0 --> return 2 + + const major = parseInt(ltMatch[1] as string, 10); + + if ( + // minor version > 0 + (typeof ltMatch[2] === "string" && parseInt(ltMatch[2].slice(1), 10) > 0) || + // patch version > 0 + (typeof ltMatch[3] === "string" && parseInt(ltMatch[3].slice(1), 10) > 0) + ) { + return major; + } + + return major - 1; + } + + // match > ranges + const gtRegex = /^>\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/; + const gtMatch = version.match(gtRegex); + if (gtMatch) { + // We always return the version here, even though it _may_ be incorrect + // E.g. if given > 2.0.0, it should be 2 if there exists any 2.x.x version, else 3 + // Since there is no way for us to know this, we're going to assume any kind of patch/feature release probably exists + return parseInt(gtMatch[1] as string, 10); + } + return undefined; +} + +// This is an explicit list of packages where we want to include the (major) version number. +const PACKAGES_TO_INCLUDE_VERSION = [ + "react", + "@angular/core", + "vue", + "ember-source", + "svelte", + "@sveltejs/kit", + "webpack", + "vite", + "gatsby", + "next", + "remix", + "rollup", + "esbuild", +]; + +export function getDependencies(packageJson: PackageJson): { + deps: string[]; + depsVersions: Record; +} { + const dependencies: Record = Object.assign( + {}, + packageJson["devDependencies"] ?? {}, + packageJson["dependencies"] ?? {} + ); + + const deps = Object.keys(dependencies).sort(); + + const depsVersions: Record = deps.reduce((depsVersions, depName) => { + if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) { + const version = dependencies[depName] as string; + const majorVersion = parseMajorVersion(version); + if (majorVersion) { + depsVersions[depName] = majorVersion; + } + } + return depsVersions; + }, {} as Record); + + return { deps, depsVersions }; +} + +function lookupPackageJson(cwd: string, stopAt: string): PackageJson | undefined { + const jsonPath = findUp.sync( + (dirName) => { + // Stop if we reach this dir + if (path.normalize(dirName) === stopAt) { + return findUp.stop; + } + + return findUp.sync.exists(dirName + "/package.json") ? "package.json" : undefined; + }, + { cwd } + ); + + if (!jsonPath) { + return undefined; + } + + try { + const jsonStr = fs.readFileSync(jsonPath, "utf8"); + const json = JSON.parse(jsonStr) as PackageJson; + + // Ensure it is an actual package.json + // This is very much not bulletproof, but should be good enough + if ("name" in json || "private" in json) { + return json; + } + } catch (error) { + // Ignore and walk up + } + + // Continue up the tree, if we find a fitting package.json + const newCwd = path.dirname(path.resolve(jsonPath + "/..")); + return lookupPackageJson(newCwd, stopAt); +} diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js new file mode 100644 index 000000000000..756d81895cb2 --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js @@ -0,0 +1 @@ +// Placeholder here diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json new file mode 100644 index 000000000000..f1ae4a21d008 --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json @@ -0,0 +1,3 @@ +{ + "invalid": "not a real package.json" +} diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json new file mode 100644 index 000000000000..c656da6e72ff --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json @@ -0,0 +1,3 @@ +{ + "name": "my-deeply-nested-package" +} diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js b/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js new file mode 100644 index 000000000000..6bc5ef9cb7ed --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js @@ -0,0 +1 @@ +// Placeholder here \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json b/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json new file mode 100644 index 000000000000..b9ea9c4f55a9 --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json @@ -0,0 +1 @@ +// This is an invalid json File!! \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json b/packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json new file mode 100644 index 000000000000..9bc6b6d5f31e --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json @@ -0,0 +1,3 @@ +{ + "name": "my-deeply-nested-package" +} \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js b/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js new file mode 100644 index 000000000000..6bc5ef9cb7ed --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js @@ -0,0 +1 @@ +// Placeholder here \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json b/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json new file mode 100644 index 000000000000..2dec0988f88a --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json @@ -0,0 +1,3 @@ +{ + "name": "my-first-package" +} \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/package.json b/packages/bundler-plugin-core/test/fixtures/nested-package/package.json new file mode 100644 index 000000000000..9bc6b6d5f31e --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/nested-package/package.json @@ -0,0 +1,3 @@ +{ + "name": "my-deeply-nested-package" +} \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js b/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js new file mode 100644 index 000000000000..6bc5ef9cb7ed --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js @@ -0,0 +1 @@ +// Placeholder here \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json b/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json new file mode 100644 index 000000000000..a04620ef3210 --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json @@ -0,0 +1,3 @@ +{ + "invalid": "my-first-package" +} \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 72837c39a18c..8d69fd8d0742 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -34,6 +34,7 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectReleasesMap: false, + _experiments: {}, url: "https://sentry.io", }); }); @@ -77,6 +78,7 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectReleasesMap: false, + _experiments: {}, url: "https://sentry.io", }); }); diff --git a/packages/bundler-plugin-core/test/tsconfig.json b/packages/bundler-plugin-core/test/tsconfig.json index b73d9b533da9..20225819627e 100644 --- a/packages/bundler-plugin-core/test/tsconfig.json +++ b/packages/bundler-plugin-core/test/tsconfig.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "../src/tsconfig.json", - "include": ["../src/**/*", "./**/*"], + "include": ["../src/**/*", "./*.ts", "./sentry/**/*"], "compilerOptions": { "types": ["node", "jest"] } diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts new file mode 100644 index 000000000000..a59c6c87e9b9 --- /dev/null +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -0,0 +1,171 @@ +import { getDependencies, getPackageJson, parseMajorVersion } from "../src/utils"; +import path from "node:path"; + +type PackageJson = Record; + +function getCwdFor(dirName: string) { + return path.resolve(__dirname + dirName); +} + +describe("getPackageJson", () => { + test("it works for this package", () => { + const packageJson = getPackageJson(); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const expected = require("../package.json") as PackageJson; + + expect(packageJson).toEqual(expected); + }); + + test("it works with nested folders with invalid package.json format", () => { + const packageJson = getPackageJson({ + cwd: getCwdFor("/fixtures/deeply-nested-package/deeply/nested"), + }); + + expect(packageJson).toEqual({ name: "my-deeply-nested-package" }); + }); + + test("it works with nested folders with errors in package.json", () => { + const packageJson = getPackageJson({ + cwd: getCwdFor("/fixtures/nested-error-package/deeply/nested"), + }); + + expect(packageJson).toEqual({ name: "my-deeply-nested-package" }); + }); + + test("it picks first package.json it finds", () => { + const packageJson = getPackageJson({ + cwd: getCwdFor("/fixtures/nested-package/deeply/nested"), + }); + + expect(packageJson).toEqual({ name: "my-first-package" }); + }); + + test("it stops after reaching too far", () => { + const packageJson = getPackageJson({ + cwd: getCwdFor("/fixtures/no-valid-package/deeply/nested"), + stopAt: process.cwd(), + }); + + expect(packageJson).toBeUndefined(); + }); +}); + +describe("parseMajorVersion", () => { + it.each([ + ["2.0.0", 2], + ["12.0.0", 12], + ["12.0", 12], + ["12", 12], + [">12", 12], + ["<12", 11], + ["<=12", 12], + [">=12", 12], + [">12.0.0", 12], + ["<12.0.0", 11], + ["<=12.0.0", 12], + [">=12.0.0", 12], + [">= 12.0.0", 12], + ["<= 12.0.0", 12], + ["< 12.0.0", 11], + ["< 12.0.1", 12], + ["< 12.1", 12], + ["< 12.0", 11], + ["> 2", 2], + ["< 2", 1], + ["12.x", 12], + ["> 10 < 12", 10], + ])("parses %s", (version, expected) => { + expect(parseMajorVersion(version)).toBe(expected); + + // Also test with prerelease suffix + expect(parseMajorVersion(`${version}-alpha.1`)).toBe(expected); + + // Also test with v prefix + expect(parseMajorVersion(`v${version}`)).toBe(expected); + }); +}); + +describe("getDependencies", () => { + test("it works without dependencies", () => { + const { deps, depsVersions } = getDependencies({}); + + expect(deps).toEqual([]); + expect(depsVersions).toEqual({}); + }); + + test("it works with only dependencies", () => { + const { deps, depsVersions } = getDependencies({ + dependencies: { + dep1: "1", + "other-dep": "^2.0.0", + dep2: "~3.1.0", + }, + }); + + expect(deps).toEqual(["dep1", "dep2", "other-dep"]); + expect(depsVersions).toEqual({}); + }); + + test("it works with only devDependencies", () => { + const { deps, depsVersions } = getDependencies({ + devDependencies: { + dep1: "1", + "other-dep": "^2.0.0", + dep2: "~3.1.0", + }, + }); + + expect(deps).toEqual(["dep1", "dep2", "other-dep"]); + expect(depsVersions).toEqual({}); + }); + + test("it works with both devDependencies & dependencies", () => { + const { deps, depsVersions } = getDependencies({ + devDependencies: { + dep1: "1", + "other-dep": "^2.0.0", + dep2: "~3.1.0", + }, + dependencies: { + dep3: "2", + "another-dep": "^3.0.0", + }, + }); + + expect(deps).toEqual(["another-dep", "dep1", "dep2", "dep3", "other-dep"]); + expect(depsVersions).toEqual({}); + }); + + test("it extracts versions of packages we care about", () => { + const { deps, depsVersions } = getDependencies({ + devDependencies: { + dep1: "1", + webpack: "5.x", + react: "^18.2.0", + "other-dep": "^2.0.0", + dep2: "~3.1.0", + }, + dependencies: { + dep3: "2", + "another-dep": "^3.0.0", + vite: "^3.0.0", + }, + }); + + expect(deps).toEqual([ + "another-dep", + "dep1", + "dep2", + "dep3", + "other-dep", + "react", + "vite", + "webpack", + ]); + expect(depsVersions).toEqual({ + react: 18, + vite: 3, + webpack: 5, + }); + }); +}); diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index f295bac380a1..dd3669672822 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -52,39 +52,40 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Esbuild Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: 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 new file mode 100644 index 000000000000..4e80c6a21dcb --- /dev/null +++ b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts @@ -0,0 +1,64 @@ +import childProcess from "child_process"; +import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +/** + * Runs a node file in a seprate process. + * + * @param bundlePath Path of node file to run + * @returns Stdout of the process + */ +function checkBundle(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + + const expectedNodeVersion = parseInt(process.versions.node); + + expect(processOutput).toBe( + JSON.stringify({ + deps: [ + "@sentry-internal/eslint-config", + "@sentry-internal/sentry-bundler-plugin-tsconfig", + "@sentry/bundler-plugin-core", + "@swc/jest", + "@types/jest", + "@types/webpack4", + "esbuild", + "eslint", + "jest", + "rollup", + "ts-node", + "vite", + "webpack", + "webpack4", + ], + depsVersions: { rollup: 2, vite: 3, webpack: 5 }, + // This will differ based on what env this is run on + nodeVersion: expectedNodeVersion, + }) + ); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "out", "rollup", "index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + 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")); +}); diff --git a/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js b/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js new file mode 100644 index 000000000000..6297b3072c22 --- /dev/null +++ b/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call +process.stdout.write(global.SENTRY_BUILD_INFO ? JSON.stringify(global.SENTRY_BUILD_INFO) : ""); diff --git a/packages/integration-tests/fixtures/build-information-injection/setup.ts b/packages/integration-tests/fixtures/build-information-injection/setup.ts new file mode 100644 index 000000000000..5112dea02e89 --- /dev/null +++ b/packages/integration-tests/fixtures/build-information-injection/setup.ts @@ -0,0 +1,12 @@ +import { Options } from "@sentry/bundler-plugin-core"; +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + include: outputDir, + dryRun: true, + _experiments: { injectBuildInformation: true }, +} as Options); diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 898238735aee..bb1f8c755ae5 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -52,39 +52,40 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Rollup Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index bc99212137d6..36ae8b0b7125 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -52,39 +52,40 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Vite Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ----------------------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| \_experimentsinjectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 86c39a3c84fa..7790e582d265 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -52,39 +52,40 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Webpack Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ----------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| Option | Type | Required | Description | +| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/yarn.lock b/yarn.lock index 7f3ec4524fb0..0284e7a4f8c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6093,6 +6093,14 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -6115,14 +6123,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" From 69d85f6c9fd7217d5d59f49d0d935977cc3407a8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Mar 2023 07:53:56 +0400 Subject: [PATCH 142/640] feat(core): Import release injection code from each module --- packages/bundler-plugin-core/package.json | 6 -- packages/bundler-plugin-core/rollup.config.js | 68 +++++++++++-------- packages/bundler-plugin-core/src/index.ts | 50 +++++++------- .../src/release-injection-file.ts | 3 + 4 files changed, 70 insertions(+), 57 deletions(-) create mode 100644 packages/bundler-plugin-core/src/release-injection-file.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1e456ad2fc13..6a7767445941 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -12,12 +12,6 @@ "files": [ "dist" ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" - } - }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 8e13d8366fa0..705c19617f3a 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -10,34 +10,48 @@ const input = ["src/index.ts"]; const extensions = [".js", ".ts"]; -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - plugins: [ - resolve({ extensions, preferBuiltins: true }), - commonjs(), - json(), - replace({ - __PACKAGE_VERSION__: JSON.stringify(packageJson.version), - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, +export default [ + { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + commonjs(), + json(), + replace({ + preventAssignment: true, + values: { + __PACKAGE_VERSION__: JSON.stringify(packageJson.version), + }, + }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], + }, + { + input: "src/release-injection-file.ts", + output: { + file: "dist/release-injection-file.js", format: "cjs", exports: "named", sourcemap: true, }, - ], -}; + }, +]; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0e9c699d0da7..39c3ad4844f7 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -34,11 +34,11 @@ const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs * - Sourcemaps upload * * Release injection: - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into - * each JavaScript/TypeScript entrypoint. On a technical level this is done by identifying - * entrypoints in the `resolveId` hook and prepending user code in the `transform` hook. - * If a user wants to inject the release into a particular set of modules instead, - * they can use the `releaseInjectionTargets` option. + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module + * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) + * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved + * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). + * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. * * Source maps upload: * @@ -102,8 +102,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; - const absolueEntrypointPaths = new Set(); - return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -164,11 +162,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { */ resolveId(id, importer, { isEntry }) { logger.debug('Called "resolveId":', { id, importer, isEntry }); - - if (isEntry) { - absolueEntrypointPaths.add(path.resolve(path.normalize(id))); - } - return undefined; }, @@ -187,6 +180,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); + if (id.includes("release-injection-file")) { + return true; + } + if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { @@ -201,7 +198,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { return normalizedId === normalizedEntry; } }); - } else if (absolueEntrypointPaths.has(normalizedId)) { + } else { const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( @@ -209,8 +206,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { ); return pathIsOrdinary && pathHasAllowedFileEnding; - } else { - return false; } }, @@ -228,15 +223,22 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); - ms.prepend( - generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: internalOptions.injectReleasesMap, - injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, - org: internalOptions.org, - project: internalOptions.project, - }) - ); + if (code.includes("_sentry_release_injection_file")) { + // Appending instead of prepending has less probability of mucking with user's source maps. + ms.append( + generateGlobalInjectorCode({ + release: await releaseNamePromise, + injectReleasesMap: internalOptions.injectReleasesMap, + injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, + org: internalOptions.org, + project: internalOptions.project, + }) + ); + } else { + // Appending instead of prepending has less probability of mucking with user's source maps. + // Luckily import statements get hoisted to the top anyways. + ms.append(`;\nimport "@sentry/bundler-plugin-core/dist/release-injection-file";`); + } if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. diff --git a/packages/bundler-plugin-core/src/release-injection-file.ts b/packages/bundler-plugin-core/src/release-injection-file.ts new file mode 100644 index 000000000000..05c101e4d852 --- /dev/null +++ b/packages/bundler-plugin-core/src/release-injection-file.ts @@ -0,0 +1,3 @@ +// This const is used for nothing except to make this file identifiable via its content. +// We search for "_sentry_release_injection_file" in the plugin. +export const _sentry_release_injection_file = true; From ae0a9cfddc49d0acdf31c6e80cd42d3617ba954c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Sun, 26 Mar 2023 16:14:28 +0200 Subject: [PATCH 143/640] Revert "feat(core): Import release injection code from each module" This reverts commit 69d85f6c9fd7217d5d59f49d0d935977cc3407a8. --- packages/bundler-plugin-core/package.json | 6 ++ packages/bundler-plugin-core/rollup.config.js | 68 ++++++++----------- packages/bundler-plugin-core/src/index.ts | 50 +++++++------- .../src/release-injection-file.ts | 3 - 4 files changed, 57 insertions(+), 70 deletions(-) delete mode 100644 packages/bundler-plugin-core/src/release-injection-file.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 6a7767445941..1e456ad2fc13 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -12,6 +12,12 @@ "files": [ "dist" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js" + } + }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 705c19617f3a..8e13d8366fa0 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -10,48 +10,34 @@ const input = ["src/index.ts"]; const extensions = [".js", ".ts"]; -export default [ - { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - plugins: [ - resolve({ extensions, preferBuiltins: true }), - commonjs(), - json(), - replace({ - preventAssignment: true, - values: { - __PACKAGE_VERSION__: JSON.stringify(packageJson.version), - }, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], - }, - { - input: "src/release-injection-file.ts", - output: { - file: "dist/release-injection-file.js", +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + plugins: [ + resolve({ extensions, preferBuiltins: true }), + commonjs(), + json(), + replace({ + __PACKAGE_VERSION__: JSON.stringify(packageJson.version), + }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, format: "cjs", exports: "named", sourcemap: true, }, - }, -]; + ], +}; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 39c3ad4844f7..0e9c699d0da7 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -34,11 +34,11 @@ const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs * - Sourcemaps upload * * Release injection: - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module - * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) - * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved - * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). - * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into + * each JavaScript/TypeScript entrypoint. On a technical level this is done by identifying + * entrypoints in the `resolveId` hook and prepending user code in the `transform` hook. + * If a user wants to inject the release into a particular set of modules instead, + * they can use the `releaseInjectionTargets` option. * * Source maps upload: * @@ -102,6 +102,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; + const absolueEntrypointPaths = new Set(); + return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -162,6 +164,11 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { */ resolveId(id, importer, { isEntry }) { logger.debug('Called "resolveId":', { id, importer, isEntry }); + + if (isEntry) { + absolueEntrypointPaths.add(path.resolve(path.normalize(id))); + } + return undefined; }, @@ -180,10 +187,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); - if (id.includes("release-injection-file")) { - return true; - } - if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { @@ -198,7 +201,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { return normalizedId === normalizedEntry; } }); - } else { + } else if (absolueEntrypointPaths.has(normalizedId)) { const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( @@ -206,6 +209,8 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { ); return pathIsOrdinary && pathHasAllowedFileEnding; + } else { + return false; } }, @@ -223,22 +228,15 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); - if (code.includes("_sentry_release_injection_file")) { - // Appending instead of prepending has less probability of mucking with user's source maps. - ms.append( - generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: internalOptions.injectReleasesMap, - injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, - org: internalOptions.org, - project: internalOptions.project, - }) - ); - } else { - // Appending instead of prepending has less probability of mucking with user's source maps. - // Luckily import statements get hoisted to the top anyways. - ms.append(`;\nimport "@sentry/bundler-plugin-core/dist/release-injection-file";`); - } + ms.prepend( + generateGlobalInjectorCode({ + release: await releaseNamePromise, + injectReleasesMap: internalOptions.injectReleasesMap, + injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, + org: internalOptions.org, + project: internalOptions.project, + }) + ); if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. diff --git a/packages/bundler-plugin-core/src/release-injection-file.ts b/packages/bundler-plugin-core/src/release-injection-file.ts deleted file mode 100644 index 05c101e4d852..000000000000 --- a/packages/bundler-plugin-core/src/release-injection-file.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This const is used for nothing except to make this file identifiable via its content. -// We search for "_sentry_release_injection_file" in the plugin. -export const _sentry_release_injection_file = true; From d3261dfb997c27c0a876e0eee165e54e05a23987 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 28 Mar 2023 17:20:21 +0200 Subject: [PATCH 144/640] meta: Add stale bot (#189) --- .github/workflows/stale.yml | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000000..eda1e003898b --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,45 @@ +name: "close stale issues/PRs" +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: +jobs: + stale: + runs-on: ubuntu-20.04 + steps: + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b + with: + repo-token: ${{ github.token }} + days-before-stale: 21 + days-before-close: 7 + only-labels: "" + operations-per-run: 100 + remove-stale-when-updated: true + debug-only: false + ascending: false + + exempt-issue-labels: "Status: Backlog,Status: In Progress" + stale-issue-label: "Status: Stale" + stale-issue-message: |- + This issue has gone three weeks without activity. In another week, I will close it. + + But! If you comment or otherwise update it, I will reset the clock, and if you label it `Status: Backlog` or `Status: In Progress`, I will leave it alone ... forever! + + ---- + + "A weed is but an unloved flower." ― _Ella Wheeler Wilcox_ 🥀 + close-issue-label: "" + close-issue-message: "" + + exempt-pr-labels: "Status: Backlog,Status: In Progress" + stale-pr-label: "Status: Stale" + stale-pr-message: |- + This pull request has gone three weeks without activity. In another week, I will close it. + + But! If you comment or otherwise update it, I will reset the clock, and if you label it `Status: Backlog` or `Status: In Progress`, I will leave it alone ... forever! + + ---- + + "A weed is but an unloved flower." ― _Ella Wheeler Wilcox_ 🥀 + close-pr-label: + close-pr-message: "" From f49cc63f401a08dcca06660102f9cc3c1c972d33 Mon Sep 17 00:00:00 2001 From: Alexandre Soro Date: Wed, 29 Mar 2023 11:51:54 +0200 Subject: [PATCH 145/640] feat(core): Add `injectRelease` and `uploadSourceMaps` options (#190) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/index.ts | 4 ++ .../src/options-mapping.ts | 4 ++ .../src/sentry/releasePipeline.ts | 5 +++ packages/bundler-plugin-core/src/types.ts | 14 +++++++ .../test/option-mappings.test.ts | 4 ++ .../test/sentry/releasePipeline.test.ts | 26 ++++++++++--- packages/esbuild-plugin/README.md | 2 + .../disabled-release-injection.test.ts | 39 +++++++++++++++++++ .../input/entrypoint.js | 2 + .../disabled-release-injection/setup.ts | 16 ++++++++ packages/rollup-plugin/README.md | 2 + packages/vite-plugin/README.md | 2 + packages/webpack-plugin/README.md | 2 + 13 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts create mode 100644 packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js create mode 100644 packages/integration-tests/fixtures/disabled-release-injection/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0e9c699d0da7..f6e518b5f0b0 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -225,6 +225,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { async transform(code, id) { logger.debug('Called "transform":', { id }); + if (!internalOptions.injectRelease) { + return; + } + // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index f1e36c0f7ace..6dc37d4bfa7c 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -13,6 +13,8 @@ type RequiredInternalOptions = Required< | "telemetry" | "injectReleasesMap" | "_experiments" + | "injectRelease" + | "uploadSourceMaps" > >; @@ -90,6 +92,8 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions silent: userOptions.silent ?? false, telemetry: userOptions.telemetry ?? true, injectReleasesMap: userOptions.injectReleasesMap ?? false, + injectRelease: userOptions.injectRelease ?? true, + uploadSourceMaps: userOptions.uploadSourceMaps ?? true, _experiments: userOptions._experiments ?? {}, // These options and can also be set via env variables or the config file. diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 2b5f3147e2c0..fbe07ba59b23 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -61,6 +61,11 @@ export async function uploadSourceMaps( ctx: BuildContext, releaseName: string ): Promise { + if (!options.uploadSourceMaps) { + logger.debug("Skipping source maps upload."); + return; + } + const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); ctx.logger.info("Uploading Sourcemaps."); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index eed0c6de620a..e498fba83c52 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -190,6 +190,13 @@ export type Options = Omit & { */ configFile?: string; + /** + * Whether the plugin should inject release information into the build. + * + * Defaults to `true`. + */ + injectRelease?: boolean; + /** * If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that * maps from `{org}@{project}` to the `release` value. This might be helpful for webpack @@ -199,6 +206,13 @@ export type Options = Omit & { */ injectReleasesMap?: boolean; + /** + * Whether the plugin should upload source maps to Sentry. + * + * Defaults to `true`. + */ + uploadSourceMaps?: boolean; + /** * These options are considered experimental and subject to change. * diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 8d69fd8d0742..21d44e099857 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -33,7 +33,9 @@ describe("normalizeUserOptions()", () => { release: "my-release", silent: false, telemetry: true, + injectRelease: true, injectReleasesMap: false, + uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", }); @@ -77,7 +79,9 @@ describe("normalizeUserOptions()", () => { release: "my-release", silent: false, telemetry: true, + injectRelease: true, injectReleasesMap: false, + uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", }); diff --git a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts index 518f145aacb2..2cbff27bbf25 100644 --- a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts @@ -1,4 +1,4 @@ -import { InternalOptions } from "../../src/options-mapping"; +import { InternalOptions, normalizeUserOptions } from "../../src/options-mapping"; import { addDeploy, cleanArtifacts, @@ -93,16 +93,32 @@ describe("Release Pipeline", () => { }); describe("uploadSourceMaps", () => { - it("makes a call to Sentry CLI's sourcemaps upload command", async () => { - const options = { + it("doesn't do anything if uploadSourceMaps option is `false`", async () => { + const options = normalizeUserOptions({ + uploadSourceMaps: false, include: [{ paths: ["dist"] }], - } as InternalOptions; + }); await uploadSourceMaps(options, ctx as unknown as BuildContext, "1.0.0"); - expect(mockedCLI.releases.uploadSourceMaps).toHaveBeenCalledWith("1.0.0", { + expect(mockedCLI.releases.uploadSourceMaps).not.toHaveBeenCalled(); + expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); + expect(mockedChildSpan.finish).not.toHaveBeenCalled(); + }); + + it("makes a call to Sentry CLI's sourcemaps upload command", async () => { + const options = normalizeUserOptions({ include: [{ paths: ["dist"] }], }); + + await uploadSourceMaps(options, ctx as unknown as BuildContext, "1.0.0"); + + expect(mockedCLI.releases.uploadSourceMaps).toHaveBeenCalledWith( + "1.0.0", + expect.objectContaining({ + include: [expect.objectContaining({ paths: ["dist"] })], + }) + ); expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.upload_sourcemaps"); expect(mockedChildSpan.finish).toHaveBeenCalled(); }); diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index dd3669672822..da422ecec5fe 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -83,7 +83,9 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | 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 new file mode 100644 index 000000000000..9586dd202927 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts @@ -0,0 +1,39 @@ +import childProcess from "child_process"; +import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +/** + * Runs a node file in a seprate process. + * + * @param bundlePath Path of node file to run + * @returns Stdout of the process + */ +function checkBundle(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput).toBe(""); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "out", "rollup", "index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + 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")); +}); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js b/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js new file mode 100644 index 000000000000..9b1aa93e838e --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call +process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts new file mode 100644 index 000000000000..aefc6cf073d4 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts @@ -0,0 +1,16 @@ +import { Options } from "@sentry/bundler-plugin-core"; +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + release: "I AM A RELEASE!", + project: "releasesProject", + org: "releasesOrg", + include: outputDir, + dryRun: true, + injectRelease: false, + injectReleasesMap: true, +} as Options); diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index bb1f8c755ae5..2041ef1211d9 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -83,7 +83,9 @@ The Sentry Rollup Plugin takes an options argument with the following properties | errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 36ae8b0b7125..639e8606b1be 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -83,7 +83,9 @@ The Sentry Vite Plugin takes an options argument with the following properties: | errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | \_experimentsinjectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 7790e582d265..7f894b15ce27 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -83,7 +83,9 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | From 06071885269979cb931f5f66dcae738227215102 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 30 Mar 2023 07:28:16 +0200 Subject: [PATCH 146/640] feat(core): Import release injection code from each module (#188) --- packages/bundler-plugin-core/.eslintrc.js | 1 + packages/bundler-plugin-core/package.json | 9 +--- packages/bundler-plugin-core/rollup.config.js | 5 +- .../sentry-release-injection-file.js | 4 ++ packages/bundler-plugin-core/src/index.ts | 54 ++++++++++--------- .../__snapshots__/basic-upload.test.ts.snap | 45 +++++++++------- packages/playground/rollup.config.js | 4 -- 7 files changed, 67 insertions(+), 55 deletions(-) create mode 100644 packages/bundler-plugin-core/sentry-release-injection-file.js diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 46367cee734b..ede7139e1aeb 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -10,6 +10,7 @@ module.exports = { "jest.config.js", "rollup.config.js", "test/fixtures/**/*", + "sentry-release-injection-file.js", ], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1e456ad2fc13..4ef6629916a2 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -10,14 +10,9 @@ "access": "public" }, "files": [ - "dist" + "dist", + "sentry-release-injection-file.js" ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" - } - }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 8e13d8366fa0..2e033ab1d1d3 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -18,7 +18,10 @@ export default { commonjs(), json(), replace({ - __PACKAGE_VERSION__: JSON.stringify(packageJson.version), + preventAssignment: true, + values: { + __PACKAGE_VERSION__: JSON.stringify(packageJson.version), + }, }), babel({ extensions, diff --git a/packages/bundler-plugin-core/sentry-release-injection-file.js b/packages/bundler-plugin-core/sentry-release-injection-file.js new file mode 100644 index 000000000000..51de6958a7c0 --- /dev/null +++ b/packages/bundler-plugin-core/sentry-release-injection-file.js @@ -0,0 +1,4 @@ +// This const is used for nothing except to make this file identifiable via its content. +// 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. + +// _sentry_release_injection_file diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index f6e518b5f0b0..b9d7800da11e 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -28,17 +28,20 @@ import { getDependencies, getPackageJson, parseMajorVersion } from "./utils"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; +const releaseInjectionFilePath = require.resolve( + "@sentry/bundler-plugin-core/sentry-release-injection-file" +); /** * The sentry bundler plugin concerns itself with two things: * - Release injection * - Sourcemaps upload * * Release injection: - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into - * each JavaScript/TypeScript entrypoint. On a technical level this is done by identifying - * entrypoints in the `resolveId` hook and prepending user code in the `transform` hook. - * If a user wants to inject the release into a particular set of modules instead, - * they can use the `releaseInjectionTargets` option. + * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module + * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) + * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved + * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). + * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. * * Source maps upload: * @@ -102,8 +105,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; - const absolueEntrypointPaths = new Set(); - return { name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -164,11 +165,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { */ resolveId(id, importer, { isEntry }) { logger.debug('Called "resolveId":', { id, importer, isEntry }); - - if (isEntry) { - absolueEntrypointPaths.add(path.resolve(path.normalize(id))); - } - return undefined; }, @@ -187,6 +183,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); + if (id.includes("sentry-release-injection-file")) { + return true; + } + if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { @@ -201,7 +201,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { return normalizedId === normalizedEntry; } }); - } else if (absolueEntrypointPaths.has(normalizedId)) { + } else { const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( @@ -209,8 +209,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { ); return pathIsOrdinary && pathHasAllowedFileEnding; - } else { - return false; } }, @@ -232,15 +230,23 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. const ms = new MagicString(code); - ms.prepend( - generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: internalOptions.injectReleasesMap, - injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, - org: internalOptions.org, - project: internalOptions.project, - }) - ); + if (code.includes("_sentry_release_injection_file")) { + // Appending instead of prepending has less probability of mucking with user's source maps. + ms.append( + generateGlobalInjectorCode({ + release: await releaseNamePromise, + injectReleasesMap: internalOptions.injectReleasesMap, + injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, + org: internalOptions.org, + project: internalOptions.project, + }) + ); + } else { + // Appending instead of prepending has less probability of mucking with user's source maps. + // Luckily import statements get hoisted to the top anyways. + // The import needs to be an absolute path because Rollup doesn't bundle stuff in `node_modules` by default when bundling CJS (unless the import path is absolute or the node-resolve-plugin is used). + ms.append(`;\nimport "${releaseInjectionFilePath.replace(/\\/g, "\\\\")}";`); + } if (unpluginMetaContext.framework === "esbuild") { // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. 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 83b0e4f3e613..e7c776120378 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 @@ -3,13 +3,13 @@ exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using esbuild 1`] = ` Array [ Object { - "content": "\\"use strict\\";var e=o=>{if(o===3)throw new Error(\\"I'm an uncaught error\\");return o<=1?o:e(o-1)+e(o-2)};var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-esbuild\\"};console.log(\\"Hi, I'm a very simple app\\");e(10);console.log(\\"I'm done\\"); + "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\\"); //# sourceMappingURL=index.js.map ", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"\\\\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-esbuild\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\"aAAO,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,EACrD,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", + "content": "{\\"version\\":3,\\"sources\\":[\\"../../../../../bundler-plugin-core/sentry-release-injection-file.js\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"// 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-esbuild\\\\\\"};\\",\\"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\\":[],\\"mappings\\":\\"aAKI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECd9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", "name": "~/index.js.map", }, ] @@ -20,6 +20,22 @@ Array [ Object { "content": "'use strict'; +// This const is used for nothing except to make this file identifiable via its content. +// 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. + +// _sentry_release_injection_file + + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"}; + const fibonacci = (n) => { if (n === 3) { throw new Error(\\"I'm an uncaught error\\"); @@ -30,16 +46,7 @@ const fibonacci = (n) => { return fibonacci(n - 1) + fibonacci(n - 2); }; -var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"};console.log(\\"Hi, I'm a very simple app\\"); +console.log(\\"Hi, I'm a very simple app\\"); fibonacci(10); @@ -49,7 +56,7 @@ console.log(\\"I'm done\\"); "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;AAAO,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,EAAE,OAAO,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;;;;;;;;;;;ACRD,IAAA,OAAA,CAAA,cAAA,CAAA,CAAA,EAAA,CAAA,qBAAA,CAAA,CACA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../../../../bundler-plugin-core/sentry-release-injection-file.js\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"// 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\\",\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", "name": "~/index.js.map", }, ] @@ -58,13 +65,13 @@ console.log(\\"I'm done\\"); exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using vite 1`] = ` Array [ Object { - "content": "\\"use strict\\";const o=e=>{if(e===3)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:o(e-1)+o(e-2)};var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-vite\\"};console.log(\\"Hi, I'm a very simple app\\");o(10);console.log(\\"I'm done\\"); + "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\\"); //# sourceMappingURL=index.js.map ", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\",\\"_global\\"],\\"mappings\\":\\"aAAO,MAAMA,EAAaC,GAAM,CAC9B,GAAIA,IAAM,EACR,MAAM,IAAI,MAAM,uBAAuB,EAEzC,OAAIA,GAAK,EACAA,EAEFD,EAAUC,EAAI,CAAC,EAAID,EAAUC,EAAI,CAAC,CAC3C,kFCRAC,EAAA,eAAA,CAAA,GAAA,mBAAA,EACA,QAAA,IAAA,2BAAA,EAEAF,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\"],\\"mappings\\":\\"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", "name": "~/index.js.map", }, ] @@ -73,12 +80,12 @@ 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=0)}([function(e,n,r){\\"use strict\\";r.r(n);const t=e=>{if(3===e)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:t(e-1)+t(e-2)};(\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack4\\"},console.log(\\"Hi, I'm a very simple app\\"),t(10),console.log(\\"I'm done\\")}])); + "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:///./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 = 0);\\\\n\\",\\"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\\",\\"\\\\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\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"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\\",\\"fibonacci\\",\\"Error\\",\\"window\\",\\"global\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"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,sCClF9C,MAAMC,EAAaP,IACxB,GAAU,IAANA,EACF,MAAM,IAAIQ,MAAM,yBAElB,OAAIR,GAAK,EACAA,EAEFO,EAAUP,EAAI,GAAKO,EAAUP,EAAI,KCLlB,oBAAXS,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,yBAC/BC,QAAQC,IAAI,6BAEZR,EAAU,IAEVO,QAAQC,IAAI\\"}", + "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", }, ] @@ -87,12 +94,12 @@ Array [ exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack5 1`] = ` Array [ Object { - "content": "(()=>{\\"use strict\\";var e={};e.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),e.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})};var o={};e.r(o);const r=e=>{if(3===e)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:r(e-1)+r(e-2)};(\\"undefined\\"!=typeof window?window:void 0!==e.g?e.g:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack5\\"},console.log(\\"Hi, I'm a very simple app\\"),r(10),console.log(\\"I'm done\\");var t=exports;for(var n in o)t[n]=o[n];o.__esModule&&Object.defineProperty(t,\\"__esModule\\",{value:!0})})(); + "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})})(); //# sourceMappingURL=index.js.map", "name": "~/index.js", }, Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// The require scope\\\\nvar __webpack_require__ = {};\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\",\\"\\\\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-webpack5\\\\\\"};import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"__webpack_require__\\",\\"g\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"window\\",\\"r\\",\\"exports\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"mBACA,IAAIA,EAAsB,CAAC,ECD3BA,EAAoBC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBN,EAAoBO,EAAKC,IACH,oBAAXC,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeJ,EAASC,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeJ,EAAS,aAAc,CAAEK,OAAO,GAAO,E,gBCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,GCLpB,oBAAXT,OACLA,YACkB,IAAX,EAAAL,EACL,EAAAA,EACgB,oBAATgB,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,yBAC/BC,QAAQC,IAAI,6BAEZP,EAAU,IAEVM,QAAQC,IAAI,Y\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/../bundler-plugin-core/sentry-release-injection-file.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// 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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAMwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCb3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", "name": "~/index.js.map", }, ] diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.js index 7c54c2697d75..982688126bc4 100644 --- a/packages/playground/rollup.config.js +++ b/packages/playground/rollup.config.js @@ -1,6 +1,4 @@ // @ts-check -import commonjs from "@rollup/plugin-commonjs"; -import resolve from "@rollup/plugin-node-resolve"; import { sentryRollupPlugin } from "@sentry/bundler-plugin-core"; import placeHolderOptions from "./config.json"; @@ -11,8 +9,6 @@ const extensions = [".js"]; export default { input, plugins: [ - resolve({ extensions }), - commonjs(), sentryRollupPlugin({ ...placeHolderOptions, }), From 7129dc60c6f9ab1134903b4ccd3b4ba99656640b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 5 Apr 2023 16:33:48 +0200 Subject: [PATCH 147/640] feat(core): Add experimental debug ID based source map upload to Rollup and Vite plugins (#192) --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/debug-id.ts | 162 ++++++++++++++++++ packages/bundler-plugin-core/src/index.ts | 65 +++++++ .../src/sentry/releasePipeline.ts | 33 ++++ .../src/sentry/telemetry.ts | 4 + .../bundler-plugin-core/src/tsconfig.json | 1 + packages/bundler-plugin-core/src/types.ts | 33 +++- packages/bundler-plugin-core/src/utils.ts | 27 ++- .../test/sentry/telemetry.test.ts | 25 +-- .../bundler-plugin-core/test/utils.test.ts | 8 +- yarn.lock | 49 +++++- 11 files changed, 379 insertions(+), 31 deletions(-) create mode 100644 packages/bundler-plugin-core/src/debug-id.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4ef6629916a2..6da8588aca33 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -36,10 +36,11 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^2.10.0", + "@sentry/cli": "^2.17.0", "@sentry/node": "^7.19.0", "@sentry/tracing": "^7.19.0", "find-up": "5.0.0", + "glob": "9.3.2", "magic-string": "0.27.0", "unplugin": "1.0.1" }, diff --git a/packages/bundler-plugin-core/src/debug-id.ts b/packages/bundler-plugin-core/src/debug-id.ts new file mode 100644 index 000000000000..5a9a1d4a9ea2 --- /dev/null +++ b/packages/bundler-plugin-core/src/debug-id.ts @@ -0,0 +1,162 @@ +import * as fs from "fs"; +import MagicString from "magic-string"; +import * as path from "path"; +import * as util from "util"; +import { Logger } from "./sentry/logger"; +import { stringToUUID } from "./utils"; + +// TODO: Find a more elaborate process to generate this. (Maybe with type checking and built-in minification) +const DEBUG_ID_INJECTOR_SNIPPET = + ';!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="__SENTRY_DEBUG_ID__",e._sentryDebugIdIdentifier="sentry-dbid-__SENTRY_DEBUG_ID__")}catch(e){}}();'; + +export function injectDebugIdSnippetIntoChunk(code: string) { + const debugId = stringToUUID(code); // generate a deterministic debug ID + const ms = new MagicString(code); + + const codeToInject = DEBUG_ID_INJECTOR_SNIPPET.replace(/__SENTRY_DEBUG_ID__/g, debugId); + + // We need to be careful not to inject the snippet before any `"use strict";`s. + // As an additional complication `"use strict";`s may come after any number of comments. + const commentUseStrictRegex = + /^(?:\s*|\/\*(.|\r|\n)*?\*\/|\/\/.*?[\n\r])*(?:"use strict";|'use strict';)?/; + + if (code.match(commentUseStrictRegex)?.[0]) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.replace(commentUseStrictRegex, (match) => `${match}${codeToInject}`); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(codeToInject); + } + + return { + code: ms.toString(), + map: ms.generateMap(), + }; +} + +export async function prepareBundleForDebugIdUpload( + bundleFilePath: string, + uploadFolder: string, + uniqueUploadName: string, + logger: Logger +) { + let bundleContent; + try { + bundleContent = await util.promisify(fs.readFile)(bundleFilePath, "utf8"); + } catch (e) { + logger.warn(`Could not read bundle to determine debug ID and source map: ${bundleFilePath}`); + return; + } + + const debugId = determineDebugIdFromBundleSource(bundleContent); + if (debugId === undefined) { + logger.warn(`Could not determine debug ID from bundle: ${bundleFilePath}`); + return; + } + + bundleContent += `\n//# debugId=${debugId}`; + const writeSourceFilePromise = util.promisify(fs.writeFile)( + path.join(uploadFolder, `${uniqueUploadName}.js`), + bundleContent, + "utf-8" + ); + + const writeSourceMapFilePromise = determineSourceMapPathFromBundle( + bundleFilePath, + bundleContent, + logger + ).then(async (sourceMapPath): Promise => { + if (sourceMapPath) { + return await prepareSourceMapForDebugIdUpload( + sourceMapPath, + path.join(uploadFolder, `${uniqueUploadName}.js.map`), + debugId, + logger + ); + } + }); + + return Promise.all([writeSourceFilePromise, writeSourceMapFilePromise]); +} + +/** + * Looks for a particular string pattern (`sdbid-[debug ID]`) in the bundle + * source and extracts the bundle's debug ID from it. + * + * The string pattern is injected via the debug ID injection snipped. + */ +function determineDebugIdFromBundleSource(code: string): string | undefined { + const match = code.match( + /sentry-dbid-([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})/ + ); + + if (match) { + return match[1]; + } else { + return undefined; + } +} + +/** + * Applies a set of heuristics to find the source map for a particular bundle. + * + * @returns the path to the bundle's source map or `undefined` if none could be found. + */ +async function determineSourceMapPathFromBundle( + bundlePath: string, + bundleSource: string, + logger: Logger +): Promise { + // 1. try to find source map at `sourceMappingURL` location + const sourceMappingUrlMatch = bundleSource.match(/^\/\/# sourceMappingURL=(.*)$/); + if (sourceMappingUrlMatch) { + const sourceMappingUrl = path.normalize(sourceMappingUrlMatch[1] as string); + if (path.isAbsolute(sourceMappingUrl)) { + return sourceMappingUrl; + } else { + return path.join(path.dirname(bundlePath), sourceMappingUrl); + } + } + + // 2. try to find source map at path adjacent to chunk source, but with `.map` appended + try { + const adjacentSourceMapFilePath = bundlePath + ".map"; + await util.promisify(fs.access)(adjacentSourceMapFilePath); + return adjacentSourceMapFilePath; + } catch (e) { + // noop + } + + logger.warn(`Could not determine source map path for bundle: ${bundlePath}`); + return undefined; +} + +/** + * Reads a source map, injects debug ID fields, and writes the source map to the target path. + */ +async function prepareSourceMapForDebugIdUpload( + sourceMapPath: string, + targetPath: string, + debugId: string, + logger: Logger +): Promise { + try { + const sourceMapFileContent = await util.promisify(fs.readFile)(sourceMapPath, { + encoding: "utf8", + }); + + const map = JSON.parse(sourceMapFileContent) as Record; + + // For now we write both fields until we know what will become the standard - if ever. + map["debug_id"] = debugId; + map["debugId"] = debugId; + + await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { + encoding: "utf8", + }); + } catch (e) { + logger.warn(`Failed to prepare source map for debug ID upload: ${sourceMapPath}`); + } +} diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b9d7800da11e..11a67b056b19 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -8,6 +8,7 @@ import { finalizeRelease, setCommits, uploadSourceMaps, + uploadDebugIdSourcemaps, } from "./sentry/releasePipeline"; import "@sentry/tracing"; import SentryCli from "@sentry/cli"; @@ -22,15 +23,20 @@ import { createLogger, Logger } from "./sentry/logger"; import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; import { makeMain } from "@sentry/node"; +import os from "os"; import path from "path"; import fs from "fs"; +import util from "util"; import { getDependencies, getPackageJson, parseMajorVersion } from "./utils"; +import { glob } from "glob"; +import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; const releaseInjectionFilePath = require.resolve( "@sentry/bundler-plugin-core/sentry-release-injection-file" ); + /** * The sentry bundler plugin concerns itself with two things: * - Release injection @@ -286,7 +292,37 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { const releaseName = await releaseNamePromise; + let tmpUploadFolder: string | undefined; + try { + if (internalOptions._experiments.debugIdUpload) { + const debugIdChunkFilePaths = ( + await glob(internalOptions._experiments.debugIdUpload.include, { + absolute: true, + nodir: true, + ignore: internalOptions._experiments.debugIdUpload.ignore, + }) + ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs")); + + const sourceFileUploadFolderPromise = util.promisify(fs.mkdtemp)( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + + await Promise.all( + debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + await sourceFileUploadFolderPromise, + String(chunkIndex), + logger + ); + }) + ); + + tmpUploadFolder = await sourceFileUploadFolderPromise; + await uploadDebugIdSourcemaps(internalOptions, ctx, tmpUploadFolder, releaseName); + } + await createNewRelease(internalOptions, ctx, releaseName); await cleanArtifacts(internalOptions, ctx, releaseName); await uploadSourceMaps(internalOptions, ctx, releaseName); @@ -302,6 +338,11 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }); handleError(e, logger, internalOptions.errorHandler); } finally { + if (tmpUploadFolder) { + fs.rm(tmpUploadFolder, { recursive: true, force: true }, () => { + // We don't care if this errors + }); + } releasePipelineSpan?.finish(); transaction?.finish(); await sentryClient.flush().then(null, () => { @@ -314,6 +355,30 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { level: "info", }); }, + rollup: { + renderChunk(code, chunk) { + if ( + options._experiments?.debugIdUpload && + [".js", ".mjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + return injectDebugIdSnippetIntoChunk(code); + } else { + return null; // returning null means not modifying the chunk at all + } + }, + }, + vite: { + renderChunk(code, chunk) { + if ( + options._experiments?.debugIdUpload && + [".js", ".mjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + return injectDebugIdSnippetIntoChunk(code); + } else { + return null; // returning null means not modifying the chunk at all + } + }, + }, }; }); diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index fbe07ba59b23..89d225a1289f 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -87,6 +87,39 @@ export async function uploadSourceMaps( ctx.logger.info("Successfully uploaded source maps."); } +export async function uploadDebugIdSourcemaps( + options: InternalOptions, + ctx: BuildContext, + folderPathToUpload: string, + releaseName: string +): Promise { + const span = addSpanToTransaction(ctx, "function.plugin.upload_debug_id_sourcemaps"); + ctx.logger.info("Uploading debug ID Sourcemaps."); + + // Since our internal include entries contain all top-level sourcemaps options, + // we only need to pass the include option here. + try { + await ctx.cli.releases.uploadSourceMaps(releaseName, { + include: [ + { + paths: [folderPathToUpload], + rewrite: false, + dist: options.dist, + }, + ], + useArtifactBundle: true, + }); + } catch (e) { + ctx.hub.captureException(new Error("CLI Error: Uploading debug ID source maps failed")); + throw e; + } finally { + span?.finish(); + } + + ctx.hub.addBreadcrumb({ level: "info", message: "Successfully uploaded debug ID source maps." }); + ctx.logger.info("Successfully uploaded debug ID source maps."); +} + export async function setCommits( options: InternalOptions, ctx: BuildContext, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index baf84ad94868..e63b30eff98e 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -96,6 +96,7 @@ export function addPluginOptionInformationToHub( errorHandler, deploy, include, + _experiments, } = options; hub.setTag("include", include.length > 1 ? "multiple-entries" : "single-entry"); @@ -124,6 +125,9 @@ export function addPluginOptionInformationToHub( if (errorHandler) { hub.setTag("error-handler", "custom"); } + if (_experiments.debugIdUpload) { + hub.setTag("debug-id-upload", true); + } hub.setTag("node", process.version); diff --git a/packages/bundler-plugin-core/src/tsconfig.json b/packages/bundler-plugin-core/src/tsconfig.json index 2607d6f03246..2dbce52c3887 100644 --- a/packages/bundler-plugin-core/src/tsconfig.json +++ b/packages/bundler-plugin-core/src/tsconfig.json @@ -6,6 +6,7 @@ "esModuleInterop": true, "resolveJsonModule": true, // needed to import package.json "types": ["node"], + "target": "ES6", // needed for some iterator features "lib": ["ES2020", "DOM"] // es2020 needed for "new Set()", DOM needed for various bundler types } } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index e498fba83c52..b6272a3687c1 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -214,17 +214,34 @@ export type Options = Omit & { uploadSourceMaps?: boolean; /** - * These options are considered experimental and subject to change. - * - * _experiments.injectBuildInformation: - * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. - * This contains information about the build, e.g. dependencies, node version and other useful data. - * - * Defaults to `false`. - * @hidden + * Options that are considered experimental and subject to change. */ _experiments?: { + /** + * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. + * This contains information about the build, e.g. dependencies, node version and other useful data. + * + * Defaults to `false`. + */ injectBuildInformation?: boolean; + + /** + * Configuration for debug ID upload. + * + * Note: Currently only functional for Vite and Rollup. + */ + debugIdUpload?: { + /** + * Glob paths to files that should get be injected with a debug ID and uploaded. + */ + include: string | string[]; + /** + * Glob paths to files that should be ignored for debug ID injection and upload. + * + * Default: `[]` + */ + ignore?: string | string[]; + }; }; }; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 0997a72dcdb4..2516cd4201b9 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -1,7 +1,8 @@ import findUp from "find-up"; -import path from "node:path"; -import fs from "node:fs"; -import os from "node:os"; +import path from "path"; +import fs from "fs"; +import os from "os"; +import crypto from "crypto"; /** * Checks whether the given input is already an array, and if it isn't, wraps it in one. @@ -165,3 +166,23 @@ function lookupPackageJson(cwd: string, stopAt: string): PackageJson | undefined const newCwd = path.dirname(path.resolve(jsonPath + "/..")); return lookupPackageJson(newCwd, stopAt); } + +/** + * Deterministically hashes a string and turns the hash into a uuid. + */ +export function stringToUUID(str: string): string { + const md5sum = crypto.createHash("md5"); + md5sum.update(str); + const md5Hash = md5sum.digest("hex"); + return ( + md5Hash.substring(0, 8) + + "-" + + md5Hash.substring(8, 12) + + "-4" + + md5Hash.substring(13, 16) + + "-" + + md5Hash.substring(16, 20) + + "-" + + md5Hash.substring(20) + ).toLowerCase(); +} diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 652ca050dbff..2178d5be25cc 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,5 +1,5 @@ import { Hub } from "@sentry/node"; -import { InternalOptions } from "../../src/options-mapping"; +import { InternalOptions, normalizeUserOptions } from "../../src/options-mapping"; import { addPluginOptionInformationToHub, shouldSendTelemetry } from "../../src/sentry/telemetry"; const mockCliExecute = jest.fn(); @@ -38,7 +38,7 @@ describe("addPluginOptionTagsToHub", () => { setUser: jest.fn(), }; - const defaultOptions: Partial = { + const defaultOptions = { include: [], }; @@ -48,7 +48,7 @@ describe("addPluginOptionTagsToHub", () => { it("should set include tag according to number of entries (single entry)", () => { addPluginOptionInformationToHub( - defaultOptions as unknown as InternalOptions, + normalizeUserOptions(defaultOptions), mockedHub as unknown as Hub, "rollup" ); @@ -57,7 +57,7 @@ describe("addPluginOptionTagsToHub", () => { it("should set include tag according to number of entries (multiple entries)", () => { addPluginOptionInformationToHub( - { include: [{}, {}, {}] } as unknown as InternalOptions, + normalizeUserOptions({ include: ["", "", ""] }), mockedHub as unknown as Hub, "rollup" ); @@ -66,7 +66,7 @@ describe("addPluginOptionTagsToHub", () => { it("should set deploy tag to true if the deploy option is specified", () => { addPluginOptionInformationToHub( - { ...defaultOptions, deploy: { env: "production" } } as unknown as InternalOptions, + normalizeUserOptions({ ...defaultOptions, deploy: { env: "production" } }), mockedHub as unknown as Hub, "rollup" ); @@ -76,7 +76,7 @@ describe("addPluginOptionTagsToHub", () => { it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { addPluginOptionInformationToHub( // eslint-disable-next-line @typescript-eslint/no-empty-function - { ...defaultOptions, errorHandler: () => {} } as unknown as InternalOptions, + normalizeUserOptions({ ...defaultOptions, errorHandler: () => {} }), mockedHub as unknown as Hub, "rollup" ); @@ -90,7 +90,8 @@ describe("addPluginOptionTagsToHub", () => { `should set setCommits tag to %s if the setCommits option is %s`, (expectedValue, commitOptions) => { addPluginOptionInformationToHub( - { ...defaultOptions, setCommits: commitOptions } as unknown as InternalOptions, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + normalizeUserOptions({ ...defaultOptions, setCommits: commitOptions as any }), mockedHub as unknown as Hub, "rollup" ); @@ -100,13 +101,13 @@ describe("addPluginOptionTagsToHub", () => { it("sets all simple tags correctly", () => { addPluginOptionInformationToHub( - { + normalizeUserOptions({ ...defaultOptions, cleanArtifacts: true, finalize: true, injectReleasesMap: true, dryRun: true, - } as unknown as InternalOptions, + }), mockedHub as unknown as Hub, "rollup" ); @@ -119,12 +120,14 @@ describe("addPluginOptionTagsToHub", () => { it("shouldn't set any tags other than include if no opional options are specified", () => { addPluginOptionInformationToHub( - defaultOptions as unknown as InternalOptions, + normalizeUserOptions(defaultOptions), mockedHub as unknown as Hub, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledTimes(2); + + expect(mockedHub.setTag).toHaveBeenCalledTimes(3); expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); expect(mockedHub.setTag).toHaveBeenCalledWith("node", expect.any(String)); }); }); diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index a59c6c87e9b9..ad5a6af40e14 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -1,4 +1,4 @@ -import { getDependencies, getPackageJson, parseMajorVersion } from "../src/utils"; +import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "../src/utils"; import path from "node:path"; type PackageJson = Record; @@ -169,3 +169,9 @@ describe("getDependencies", () => { }); }); }); + +describe("stringToUUID", () => { + test("should return a deterministic UUID", () => { + expect(stringToUUID("Nothing personnel kid")).toBe("52c7a762-5ddf-49a7-6f16-6874a8cb2512"); + }); +}); diff --git a/yarn.lock b/yarn.lock index 0284e7a4f8c7..a95c7b0e6acf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2564,10 +2564,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sentry/cli@^2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.10.0.tgz#ff89ae60724742dfafab93006ec2056cc2d74e9b" - integrity sha512-VQnGXPQCqJyxirmUWkNznq3YYklDwDfbogok3lPHaL3r0bhgcNwt/bZxeycpaqk5I7myKNUYW8RG+F1YERODSw== +"@sentry/cli@^2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.17.0.tgz#fc809ecd721eb5323502625fa904b786af28ad89" + integrity sha512-CHIMEg8+YNCpEBDgUctu+DvG3S8+g8Zn9jTE5MMGINNmGkQTMG179LuDE04B/inaCYixLVNpFPTe6Iow3tXjnQ== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -3543,9 +3543,9 @@ acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== acorn@^8.8.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== add-stream@^1.0.0: version "1.0.0" @@ -6468,6 +6468,16 @@ glob@8.0.3, glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" +glob@9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda" + integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== + dependencies: + fs.realpath "^1.0.0" + minimatch "^7.4.1" + minipass "^4.2.4" + path-scurry "^1.6.1" + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -8404,6 +8414,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.14.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" @@ -8664,6 +8679,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^7.4.1: + version "7.4.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.3.tgz#012cbf110a65134bb354ae9773b55256cdb045a2" + integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -8737,6 +8759,11 @@ minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: dependencies: yallist "^4.0.0" +minipass@^4.0.2, minipass@^4.2.4: + version "4.2.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" + integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -9651,6 +9678,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.6.1: + version "1.6.3" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.3.tgz#4eba7183d64ef88b63c7d330bddc3ba279dc6c40" + integrity sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g== + dependencies: + lru-cache "^7.14.1" + minipass "^4.0.2" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" From 7aea9a337c1fab9d92dacbd0604d882a5bb24d4b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 5 Apr 2023 16:48:01 +0200 Subject: [PATCH 148/640] meta: Add changelog entry for 0.5.0 (#193) --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87e371169bbe..76890f9c70f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.5.0 + +- feat(core): Add `injectRelease` and `uploadSourceMaps` options (#190) +- feat(core): Add experimental debug ID based source map upload to Rollup and Vite plugins (#192) +- feat(core): Import release injection code from each module (#188) +- feat: Add `_experiments.injectBuildInformation` option (#176) +- feat: Add `sentryCliBinaryExists` function (#171) + +Work in this release contributed by @alexandresoro and @dcyou. Thank you for your contributions! + ## 0.4.0 This release contains breaking changes. Please refer to the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md) on how to update from version `0.3.x` to `0.4.x`. From 5b888cb885a60e9d49b36628d62714c088a87138 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 5 Apr 2023 14:57:25 +0000 Subject: [PATCH 149/640] release: 0.5.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 6b5933e8802b..9fa4d8a72566 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.4.0", + "version": "0.5.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 6da8588aca33..f2031e3afe6b 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.4.0", + "version": "0.5.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,8 +53,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 017dc7469d63..15229775e8bc 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.4.0", + "version": "0.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.4.0", - "@sentry/rollup-plugin": "0.4.0", - "@sentry/vite-plugin": "0.4.0", - "@sentry/webpack-plugin": "0.4.0", + "@sentry/esbuild-plugin": "0.5.0", + "@sentry/rollup-plugin": "0.5.0", + "@sentry/vite-plugin": "0.5.0", + "@sentry/webpack-plugin": "0.5.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 6b67d6fdee6c..8722f76f5a08 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.4.0", + "version": "0.5.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.4.0" + "@sentry/bundler-plugin-core": "0.5.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index a8ee2d620f7b..8c69326a9612 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.4.0", + "version": "0.5.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5dea52b4ac7d..2092f94c396a 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.4.0", + "version": "0.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", - "@sentry/bundler-plugin-core": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry/bundler-plugin-core": "0.5.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 0e188d5003c8..916fa623bf67 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.4.0", + "version": "0.5.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.4.0", + "@sentry/bundler-plugin-core": "0.5.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index b8063b889215..d2e34776b729 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.4.0", + "version": "0.5.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.4.0" + "@sentry/bundler-plugin-core": "0.5.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c095de1cbce0..2c827d7a1f16 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.4.0", + "version": "0.5.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b5282f4ea643..b6891f7d99c5 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.4.0", + "version": "0.5.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.4.0" + "@sentry/bundler-plugin-core": "0.5.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8aaf55383a66..3e0d9f86113e 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.4.0", + "version": "0.5.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.4.0" + "@sentry/bundler-plugin-core": "0.5.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.4.0", + "@sentry-internal/eslint-config": "0.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 144a8188de8caac8f910f5bcea90acfd38006dfd Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 6 Apr 2023 09:56:45 +0200 Subject: [PATCH 150/640] fix(core): Skip all transformations for 3rd party modules (#195) --- packages/bundler-plugin-core/src/index.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 11a67b056b19..dc5588c759a1 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -133,6 +133,12 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }); } + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + const releaseName = await releaseNamePromise; // At this point, we either have determined a release or we have to bail @@ -185,6 +191,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { transformInclude(id) { logger.debug('Called "transformInclude":', { id }); + if (id.match(/\\node_modules\\|\/node_modules\//)) { + return false; // never transform 3rd party modules + } + // We normalize the id because vite always passes `id` as a unix style path which causes problems when a user passes // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); From 3bdd932b89a6dd4dee852d59ff04d5f620bdf98a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 6 Apr 2023 10:11:29 +0200 Subject: [PATCH 151/640] meta: Add changelog entry for 0.5.1 (#197) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76890f9c70f6..f0b8a55b0510 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.5.1 + +- fix(core): Skip all transformations for 3rd party modules + ## 0.5.0 - feat(core): Add `injectRelease` and `uploadSourceMaps` options (#190) From c222275611d3c08883fb7b27fba51249bb8b20d8 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 6 Apr 2023 08:13:09 +0000 Subject: [PATCH 152/640] release: 0.5.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 9fa4d8a72566..73a242e66704 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.5.0", + "version": "0.5.1", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index f2031e3afe6b..02d2d977f61d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.5.0", + "version": "0.5.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,8 +53,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 15229775e8bc..68441df35cc2 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.5.0", - "@sentry/rollup-plugin": "0.5.0", - "@sentry/vite-plugin": "0.5.0", - "@sentry/webpack-plugin": "0.5.0", + "@sentry/esbuild-plugin": "0.5.1", + "@sentry/rollup-plugin": "0.5.1", + "@sentry/vite-plugin": "0.5.1", + "@sentry/webpack-plugin": "0.5.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 8722f76f5a08..4871dbd9ea4e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.5.0", + "version": "0.5.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.0" + "@sentry/bundler-plugin-core": "0.5.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 8c69326a9612..04081d791dff 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 2092f94c396a..8eef15613896 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", - "@sentry/bundler-plugin-core": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry/bundler-plugin-core": "0.5.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 916fa623bf67..57f79fa734d6 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.0", + "@sentry/bundler-plugin-core": "0.5.1", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d2e34776b729..10dabe05e863 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.5.0", + "version": "0.5.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.0" + "@sentry/bundler-plugin-core": "0.5.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 2c827d7a1f16..88a24486222a 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b6891f7d99c5..c60734b510d6 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.5.0", + "version": "0.5.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.0" + "@sentry/bundler-plugin-core": "0.5.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3e0d9f86113e..a87e88e9107b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.5.0", + "version": "0.5.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.0" + "@sentry/bundler-plugin-core": "0.5.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.0", + "@sentry-internal/eslint-config": "0.5.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From f5db486be9fee66520e3c950bc6cf2d261876767 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 7 Apr 2023 13:47:39 +0200 Subject: [PATCH 153/640] feat(webpack): Add debug ID injection to the webpack plugin (#198) --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/debug-id.ts | 4 +- packages/bundler-plugin-core/src/index.ts | 64 ++++++++++++++++++++ packages/bundler-plugin-core/src/types.ts | 2 +- yarn.lock | 10 +-- 5 files changed, 74 insertions(+), 9 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 02d2d977f61d..4a99e8156cef 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -42,7 +42,8 @@ "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", - "unplugin": "1.0.1" + "unplugin": "1.0.1", + "webpack-sources": "3.2.3" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/bundler-plugin-core/src/debug-id.ts b/packages/bundler-plugin-core/src/debug-id.ts index 5a9a1d4a9ea2..16a9c0415d3b 100644 --- a/packages/bundler-plugin-core/src/debug-id.ts +++ b/packages/bundler-plugin-core/src/debug-id.ts @@ -9,9 +9,9 @@ import { stringToUUID } from "./utils"; const DEBUG_ID_INJECTOR_SNIPPET = ';!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="__SENTRY_DEBUG_ID__",e._sentryDebugIdIdentifier="sentry-dbid-__SENTRY_DEBUG_ID__")}catch(e){}}();'; -export function injectDebugIdSnippetIntoChunk(code: string) { +export function injectDebugIdSnippetIntoChunk(code: string, filename?: string) { const debugId = stringToUUID(code); // generate a deterministic debug ID - const ms = new MagicString(code); + const ms = new MagicString(code, { filename }); const codeToInject = DEBUG_ID_INJECTOR_SNIPPET.replace(/__SENTRY_DEBUG_ID__/g, debugId); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index dc5588c759a1..7622971007d8 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -30,6 +30,8 @@ import util from "util"; import { getDependencies, getPackageJson, parseMajorVersion } from "./utils"; import { glob } from "glob"; import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; +import { SourceMapSource } from "webpack-sources"; +import type { sources } from "webpack"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; @@ -389,6 +391,68 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { } }, }, + webpack(compiler) { + if (options._experiments?.debugIdUpload) { + // Cache inspired by https://github.com/webpack/webpack/pull/15454 + const cache = new WeakMap(); + + compiler.hooks.compilation.tap("sentry-plugin", (compilation) => { + compilation.hooks.optimizeChunkAssets.tap("sentry-plugin", (chunks) => { + chunks.forEach((chunk) => { + const fileNames = chunk.files; + fileNames.forEach((fileName) => { + const source = compilation.assets[fileName]; + + if (!source) { + logger.warn( + "Unable to access compilation assets. If you see this warning, it is likely a bug in the Sentry webpack plugin. Feel free to open an issue at https://github.com/getsentry/sentry-javascript-bundler-plugins with reproduction steps." + ); + return; + } + + compilation.updateAsset(fileName, (oldSource) => { + const cached = cache.get(oldSource); + if (cached) { + return cached; + } + + const originalCode = source.source().toString(); + + // The source map type is very annoying :( + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const originalSourceMap = source.map() as any; + + const { code: newCode, map: newSourceMap } = injectDebugIdSnippetIntoChunk( + originalCode, + fileName + ); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + newSourceMap.sources = originalSourceMap.sources as string[]; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + newSourceMap.sourcesContent = originalSourceMap.sourcesContent as string[]; + + const newSource = new SourceMapSource( + newCode, + fileName, + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + originalSourceMap, + originalCode, + newSourceMap, + false + ) as sources.Source; + + cache.set(oldSource, newSource); + + return newSource; + }); + }); + }); + }); + }); + } + }, }; }); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index b6272a3687c1..5cb11e3be20e 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -228,7 +228,7 @@ export type Options = Omit & { /** * Configuration for debug ID upload. * - * Note: Currently only functional for Vite and Rollup. + * Note: Currently only functional for Vite, Webpack and Rollup. */ debugIdUpload?: { /** diff --git a/yarn.lock b/yarn.lock index a95c7b0e6acf..846b9c087694 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11752,6 +11752,11 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webpack-sources@3.2.3, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -11760,11 +11765,6 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - webpack-virtual-modules@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" From 421ee294afd1964d0e2163f07f1a1a54693504d7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 7 Apr 2023 14:54:11 +0200 Subject: [PATCH 154/640] ref(core): Don't interact with Sentry in watch-mode (#199) --- packages/bundler-plugin-core/src/index.ts | 68 ++++++++++++----------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7622971007d8..4567511eec85 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -307,40 +307,42 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let tmpUploadFolder: string | undefined; try { - if (internalOptions._experiments.debugIdUpload) { - const debugIdChunkFilePaths = ( - await glob(internalOptions._experiments.debugIdUpload.include, { - absolute: true, - nodir: true, - ignore: internalOptions._experiments.debugIdUpload.ignore, - }) - ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs")); - - const sourceFileUploadFolderPromise = util.promisify(fs.mkdtemp)( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - - await Promise.all( - debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - await sourceFileUploadFolderPromise, - String(chunkIndex), - logger - ); - }) - ); - - tmpUploadFolder = await sourceFileUploadFolderPromise; - await uploadDebugIdSourcemaps(internalOptions, ctx, tmpUploadFolder, releaseName); - } + if (!unpluginMetaContext.watchMode) { + if (internalOptions._experiments.debugIdUpload) { + const debugIdChunkFilePaths = ( + await glob(internalOptions._experiments.debugIdUpload.include, { + absolute: true, + nodir: true, + ignore: internalOptions._experiments.debugIdUpload.ignore, + }) + ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs")); + + const sourceFileUploadFolderPromise = util.promisify(fs.mkdtemp)( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + + await Promise.all( + debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + await sourceFileUploadFolderPromise, + String(chunkIndex), + logger + ); + }) + ); + + tmpUploadFolder = await sourceFileUploadFolderPromise; + await uploadDebugIdSourcemaps(internalOptions, ctx, tmpUploadFolder, releaseName); + } - await createNewRelease(internalOptions, ctx, releaseName); - await cleanArtifacts(internalOptions, ctx, releaseName); - await uploadSourceMaps(internalOptions, ctx, releaseName); - await setCommits(internalOptions, ctx, releaseName); - await finalizeRelease(internalOptions, ctx, releaseName); - await addDeploy(internalOptions, ctx, releaseName); + await createNewRelease(internalOptions, ctx, releaseName); + await cleanArtifacts(internalOptions, ctx, releaseName); + await uploadSourceMaps(internalOptions, ctx, releaseName); + await setCommits(internalOptions, ctx, releaseName); + await finalizeRelease(internalOptions, ctx, releaseName); + await addDeploy(internalOptions, ctx, releaseName); + } transaction?.setStatus("ok"); } catch (e: unknown) { transaction?.setStatus("cancelled"); From 846e9edff10ae9c539f124430385939fb7492fe0 Mon Sep 17 00:00:00 2001 From: Jakub Olek Date: Sat, 8 Apr 2023 06:24:48 +0200 Subject: [PATCH 155/640] fix(core): Don't exclude release injection module (#200) --- packages/bundler-plugin-core/src/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 4567511eec85..3064dc4f0321 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -193,6 +193,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { transformInclude(id) { logger.debug('Called "transformInclude":', { id }); + if (id.includes("sentry-release-injection-file")) { + return true; + } + if (id.match(/\\node_modules\\|\/node_modules\//)) { return false; // never transform 3rd party modules } @@ -201,10 +205,6 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); - if (id.includes("sentry-release-injection-file")) { - return true; - } - if (internalOptions.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. if (typeof internalOptions.releaseInjectionTargets === "function") { From b4b9aa16f59482fb888338d832d076c4b3891560 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 11 Apr 2023 08:34:39 +0200 Subject: [PATCH 156/640] meta: Add changelog entry for 0.6.0 (#201) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0b8a55b0510..76c78de286ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.6.0 + +- feat(webpack): Add debug ID injection to the webpack plugin (#198) +- fix(core): Don't exclude release injection module (#200) +- ref(core): Don't interact with Sentry in watch-mode (#199) + +Work in this release contributed by @hakubo. Thank you for your contribution! + ## 0.5.1 - fix(core): Skip all transformations for 3rd party modules From fb947255ae160c058a1000c2fe41f7488e14ad4c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 11 Apr 2023 08:13:27 +0000 Subject: [PATCH 157/640] release: 0.6.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 73a242e66704..57208ebbda16 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.5.1", + "version": "0.6.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4a99e8156cef..0f72efff93d4 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.5.1", + "version": "0.6.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -54,8 +54,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 68441df35cc2..513eaddedc9c 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.5.1", - "@sentry/rollup-plugin": "0.5.1", - "@sentry/vite-plugin": "0.5.1", - "@sentry/webpack-plugin": "0.5.1", + "@sentry/esbuild-plugin": "0.6.0", + "@sentry/rollup-plugin": "0.6.0", + "@sentry/vite-plugin": "0.6.0", + "@sentry/webpack-plugin": "0.6.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 4871dbd9ea4e..1a3c4665abf9 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.5.1", + "version": "0.6.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.1" + "@sentry/bundler-plugin-core": "0.6.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 04081d791dff..7a162592ec96 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8eef15613896..8dbaba84338b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", - "@sentry/bundler-plugin-core": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry/bundler-plugin-core": "0.6.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 57f79fa734d6..ba5973647d58 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.1", + "@sentry/bundler-plugin-core": "0.6.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 10dabe05e863..5ee902010b05 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.5.1", + "version": "0.6.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.1" + "@sentry/bundler-plugin-core": "0.6.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 88a24486222a..a14c2315c379 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c60734b510d6..2904605bc9d0 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.5.1", + "version": "0.6.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.1" + "@sentry/bundler-plugin-core": "0.6.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index a87e88e9107b..e8fa611c010e 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.5.1", + "version": "0.6.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -46,7 +46,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.5.1" + "@sentry/bundler-plugin-core": "0.6.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -56,8 +56,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.5.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.5.1", + "@sentry-internal/eslint-config": "0.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1a61872d46629f773fd837c94bb5ecc8948bff18 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 13 Apr 2023 11:02:43 +0200 Subject: [PATCH 158/640] fix(core): Also do debug ID injection for `.cjs` files (#203) --- packages/bundler-plugin-core/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 3064dc4f0321..d2ee60888f99 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -315,7 +315,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { nodir: true, ignore: internalOptions._experiments.debugIdUpload.ignore, }) - ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs")); + ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); const sourceFileUploadFolderPromise = util.promisify(fs.mkdtemp)( path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") @@ -373,7 +373,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { renderChunk(code, chunk) { if ( options._experiments?.debugIdUpload && - [".js", ".mjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) ) { return injectDebugIdSnippetIntoChunk(code); } else { @@ -385,7 +385,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { renderChunk(code, chunk) { if ( options._experiments?.debugIdUpload && - [".js", ".mjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) ) { return injectDebugIdSnippetIntoChunk(code); } else { From 7ffe4a0332cf14a0a491fae94fbcb5fcd9a5a489 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 13 Apr 2023 11:52:41 +0200 Subject: [PATCH 159/640] feat(esbuild): Add debug ID injection for esbuild (#202) --- packages/bundler-plugin-core/.eslintrc.js | 1 + packages/bundler-plugin-core/package.json | 9 ++- .../sentry-esbuild-debugid-injection-file.js | 18 ++++++ packages/bundler-plugin-core/src/index.ts | 60 ++++++++++++++++--- 4 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index ede7139e1aeb..34addfe7dbc4 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -11,6 +11,7 @@ module.exports = { "rollup.config.js", "test/fixtures/**/*", "sentry-release-injection-file.js", + "sentry-esbuild-debugid-injection-file.js", ], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 0f72efff93d4..8242724a8a2f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -11,7 +11,8 @@ }, "files": [ "dist", - "sentry-release-injection-file.js" + "sentry-release-injection-file.js", + "sentry-esbuild-debugid-injection-file.js" ], "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", @@ -71,5 +72,9 @@ }, "engines": { "node": ">= 10" - } + }, + "sideEffects": [ + "./sentry-release-injection-file.js", + "./sentry-esbuild-debugid-injection-file.js" + ] } diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js new file mode 100644 index 000000000000..b3cdf857dc09 --- /dev/null +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -0,0 +1,18 @@ +try { + var globalObject = + "undefined" != typeof window + ? window + : "undefined" != typeof global + ? global + : "undefined" != typeof self + ? self + : {}; + + var stack = new Error().stack; + + if (stack) { + globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; + globalObject._sentryDebugIds[stack] = "__SENTRY_DEBUG_ID__"; + globalObject._sentryDebugIdIdentifier = "sentry-dbid-__SENTRY_DEBUG_ID__"; + } +} catch (e) {} diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d2ee60888f99..8f2875e14cc4 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,4 +1,4 @@ -import { createUnplugin } from "unplugin"; +import { createUnplugin, UnpluginOptions } from "unplugin"; import MagicString from "magic-string"; import { Options, BuildContext } from "./types"; import { @@ -26,8 +26,8 @@ import { makeMain } from "@sentry/node"; import os from "os"; import path from "path"; import fs from "fs"; -import util from "util"; -import { getDependencies, getPackageJson, parseMajorVersion } from "./utils"; +import { promisify } from "util"; +import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "./utils"; import { glob } from "glob"; import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; import { SourceMapSource } from "webpack-sources"; @@ -39,6 +39,10 @@ const releaseInjectionFilePath = require.resolve( "@sentry/bundler-plugin-core/sentry-release-injection-file" ); +const esbuildDebugIdInjectionFilePath = require.resolve( + "@sentry/bundler-plugin-core/sentry-esbuild-debugid-injection-file" +); + /** * The sentry bundler plugin concerns itself with two things: * - Release injection @@ -66,7 +70,7 @@ const releaseInjectionFilePath = require.resolve( * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ -const unplugin = createUnplugin((options, unpluginMetaContext) => { +const unplugin = createUnplugin((options, unpluginMetaContext) => { const internalOptions = normalizeUserOptions(options); const allowedToSendTelemetryPromise = shouldSendTelemetry(internalOptions); @@ -113,7 +117,9 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; - return { + const plugins: UnpluginOptions[] = []; + + plugins.push({ name: "sentry-plugin", enforce: "pre", // needed for Vite to call resolveId hook @@ -317,7 +323,31 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }) ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); - const sourceFileUploadFolderPromise = util.promisify(fs.mkdtemp)( + if (unpluginMetaContext.framework === "esbuild") { + await Promise.all( + debugIdChunkFilePaths.map(async (debugIdChunkFilePath) => { + const chunkFileContents = await promisify(fs.readFile)( + debugIdChunkFilePath, + "utf-8" + ); + + const debugId = stringToUUID(chunkFileContents); + + const newChunkFileContents = chunkFileContents.replace( + /__SENTRY_DEBUG_ID__/g, + debugId + ); + + await promisify(fs.writeFile)( + debugIdChunkFilePath, + newChunkFileContents, + "utf-8" + ); + }) + ); + } + + const sourceFileUploadFolderPromise = promisify(fs.mkdtemp)( path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") ); @@ -455,7 +485,23 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => { }); } }, - }; + }); + + if (unpluginMetaContext.framework === "esbuild") { + if (internalOptions._experiments.debugIdUpload) { + plugins.push({ + name: "sentry-esbuild-debug-id-plugin", + esbuild: { + setup({ initialOptions }) { + initialOptions.inject = initialOptions.inject || []; + initialOptions.inject.push(esbuildDebugIdInjectionFilePath); + }, + }, + }); + } + } + + return plugins; }); function handleError( From 86414acd4156c2169f1ac3d0db2b8fe814e948ce Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 14 Apr 2023 14:17:05 +0200 Subject: [PATCH 160/640] feat: Promote debug ID uploading to stable via `sourcemaps` option (#204) Co-authored-by: Abhijeet Prasad --- packages/bundler-plugin-core/src/index.ts | 78 +++++++++---------- .../src/options-mapping.ts | 12 ++- .../bundler-plugin-core/src/sentry/cli.ts | 4 +- .../src/sentry/releasePipeline.ts | 16 ++-- .../src/sentry/telemetry.ts | 10 +-- packages/bundler-plugin-core/src/types.ts | 50 +++++++----- .../test/option-mappings.test.ts | 28 +++---- .../test/sentry/releasePipeline.test.ts | 20 ++--- .../test/sentry/telemetry.test.ts | 6 +- packages/esbuild-plugin/README.md | 4 +- packages/rollup-plugin/README.md | 4 +- packages/vite-plugin/README.md | 74 +++++++++--------- packages/webpack-plugin/README.md | 4 +- 13 files changed, 167 insertions(+), 143 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 8f2875e14cc4..083d1c50e5f8 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -20,7 +20,7 @@ import { } from "./sentry/telemetry"; import { Span, Transaction } from "@sentry/types"; import { createLogger, Logger } from "./sentry/logger"; -import { InternalOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; +import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; import { getSentryCli } from "./sentry/cli"; import { makeMain } from "@sentry/node"; import os from "os"; @@ -70,18 +70,18 @@ const esbuildDebugIdInjectionFilePath = require.resolve( * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ -const unplugin = createUnplugin((options, unpluginMetaContext) => { - const internalOptions = normalizeUserOptions(options); +const unplugin = createUnplugin((userOptions, unpluginMetaContext) => { + const options = normalizeUserOptions(userOptions); - const allowedToSendTelemetryPromise = shouldSendTelemetry(internalOptions); + const allowedToSendTelemetryPromise = shouldSendTelemetry(options); const { sentryHub, sentryClient } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", allowedToSendTelemetryPromise, - internalOptions.project + options.project ); - addPluginOptionInformationToHub(internalOptions, sentryHub, unpluginMetaContext.framework); + addPluginOptionInformationToHub(options, sentryHub, unpluginMetaContext.framework); //TODO: This call is problematic because as soon as we set our hub as the current hub // we might interfere with other plugins that use Sentry. However, for now, we'll @@ -92,23 +92,23 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => const logger = createLogger({ prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, - silent: internalOptions.silent, - debug: internalOptions.debug, + silent: options.silent, + debug: options.debug, }); - if (!validateOptions(internalOptions, logger)) { + if (!validateOptions(options, logger)) { handleError( new Error("Options were not set correctly. See output above for more details."), logger, - internalOptions.errorHandler + options.errorHandler ); } - const cli = getSentryCli(internalOptions, logger); + const cli = getSentryCli(options, logger); const releaseNamePromise = new Promise((resolve) => { - if (options.release) { - resolve(options.release); + if (userOptions.release) { + resolve(userOptions.release); } else { resolve(cli.releases.proposeVersion()); } @@ -156,7 +156,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" ), logger, - internalOptions.errorHandler + options.errorHandler ); } @@ -211,13 +211,13 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => // a windows style path to `releaseInjectionTargets` const normalizedId = path.normalize(id); - if (internalOptions.releaseInjectionTargets) { + if (options.releaseInjectionTargets) { // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. - if (typeof internalOptions.releaseInjectionTargets === "function") { - return internalOptions.releaseInjectionTargets(normalizedId); + if (typeof options.releaseInjectionTargets === "function") { + return options.releaseInjectionTargets(normalizedId); } - return internalOptions.releaseInjectionTargets.some((entry) => { + return options.releaseInjectionTargets.some((entry) => { if (entry instanceof RegExp) { return entry.test(normalizedId); } else { @@ -247,7 +247,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => async transform(code, id) { logger.debug('Called "transform":', { id }); - if (!internalOptions.injectRelease) { + if (!options.injectRelease) { return; } @@ -259,10 +259,10 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => ms.append( generateGlobalInjectorCode({ release: await releaseNamePromise, - injectReleasesMap: internalOptions.injectReleasesMap, - injectBuildInformation: internalOptions._experiments.injectBuildInformation || false, - org: internalOptions.org, - project: internalOptions.project, + injectReleasesMap: options.injectReleasesMap, + injectBuildInformation: options._experiments.injectBuildInformation || false, + org: options.org, + project: options.project, }) ); } else { @@ -314,12 +314,12 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => try { if (!unpluginMetaContext.watchMode) { - if (internalOptions._experiments.debugIdUpload) { + if (options.sourcemaps?.assets) { const debugIdChunkFilePaths = ( - await glob(internalOptions._experiments.debugIdUpload.include, { + await glob(options.sourcemaps.assets, { absolute: true, nodir: true, - ignore: internalOptions._experiments.debugIdUpload.ignore, + ignore: options.sourcemaps.ignore, }) ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); @@ -363,15 +363,15 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => ); tmpUploadFolder = await sourceFileUploadFolderPromise; - await uploadDebugIdSourcemaps(internalOptions, ctx, tmpUploadFolder, releaseName); + await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName); } - await createNewRelease(internalOptions, ctx, releaseName); - await cleanArtifacts(internalOptions, ctx, releaseName); - await uploadSourceMaps(internalOptions, ctx, releaseName); - await setCommits(internalOptions, ctx, releaseName); - await finalizeRelease(internalOptions, ctx, releaseName); - await addDeploy(internalOptions, ctx, releaseName); + await createNewRelease(options, ctx, releaseName); + await cleanArtifacts(options, ctx, releaseName); + await uploadSourceMaps(options, ctx, releaseName); + await setCommits(options, ctx, releaseName); + await finalizeRelease(options, ctx, releaseName); + await addDeploy(options, ctx, releaseName); } transaction?.setStatus("ok"); } catch (e: unknown) { @@ -380,7 +380,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => level: "error", message: "Error during writeBundle", }); - handleError(e, logger, internalOptions.errorHandler); + handleError(e, logger, options.errorHandler); } finally { if (tmpUploadFolder) { fs.rm(tmpUploadFolder, { recursive: true, force: true }, () => { @@ -402,7 +402,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => rollup: { renderChunk(code, chunk) { if ( - options._experiments?.debugIdUpload && + options.sourcemaps?.assets && [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) ) { return injectDebugIdSnippetIntoChunk(code); @@ -414,7 +414,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => vite: { renderChunk(code, chunk) { if ( - options._experiments?.debugIdUpload && + options.sourcemaps?.assets && [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) ) { return injectDebugIdSnippetIntoChunk(code); @@ -424,7 +424,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => }, }, webpack(compiler) { - if (options._experiments?.debugIdUpload) { + if (options.sourcemaps?.assets) { // Cache inspired by https://github.com/webpack/webpack/pull/15454 const cache = new WeakMap(); @@ -488,7 +488,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => }); if (unpluginMetaContext.framework === "esbuild") { - if (internalOptions._experiments.debugIdUpload) { + if (options.sourcemaps?.assets) { plugins.push({ name: "sentry-esbuild-debug-id-plugin", esbuild: { @@ -507,7 +507,7 @@ const unplugin = createUnplugin((options, unpluginMetaContext) => function handleError( unknownError: unknown, logger: Logger, - errorHandler: InternalOptions["errorHandler"] + errorHandler: NormalizedOptions["errorHandler"] ) { if (unknownError instanceof Error) { logger.error(unknownError.message); diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 6dc37d4bfa7c..78567b3fde01 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -32,6 +32,7 @@ type OptionalInternalOptions = Partial< | "deploy" | "configFile" | "headers" + | "sourcemaps" > >; @@ -40,7 +41,7 @@ type NormalizedInternalOptions = { include: InternalIncludeEntry[]; }; -export type InternalOptions = RequiredInternalOptions & +export type NormalizedOptions = RequiredInternalOptions & OptionalInternalOptions & NormalizedInternalOptions; @@ -62,7 +63,7 @@ export type InternalIncludeEntry = RequiredInternalIncludeEntry & export const SENTRY_SAAS_URL = "https://sentry.io"; -export function normalizeUserOptions(userOptions: UserOptions): InternalOptions { +export function normalizeUserOptions(userOptions: UserOptions) { const options = { // include is the only strictly required option // (normalizeInclude needs all userOptions to access top-level include options) @@ -94,6 +95,7 @@ export function normalizeUserOptions(userOptions: UserOptions): InternalOptions injectReleasesMap: userOptions.injectReleasesMap ?? false, injectRelease: userOptions.injectRelease ?? true, uploadSourceMaps: userOptions.uploadSourceMaps ?? true, + sourcemaps: userOptions.sourcemaps, _experiments: userOptions._experiments ?? {}, // These options and can also be set via env variables or the config file. @@ -149,6 +151,10 @@ function normalizeReleaseInjectionTargets( * @return an array of `InternalIncludeEntry` objects. */ function normalizeInclude(userOptions: UserOptions): InternalIncludeEntry[] { + if (!userOptions.include) { + return []; + } + return arrayify(userOptions.include) .map((includeItem) => typeof includeItem === "string" ? { paths: [includeItem] } : includeItem @@ -198,7 +204,7 @@ function normalizeIncludeEntry( * * @returns `true` if the options are valid, `false` otherwise */ -export function validateOptions(options: InternalOptions, logger: Logger): boolean { +export function validateOptions(options: NormalizedOptions, logger: Logger): boolean { if (options.injectReleasesMap && !options.org) { logger.error( "The `injectReleasesMap` option was set but it is only supported when the `org` option is also specified.", diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts index 329cb699f330..2e67ca51c211 100644 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ b/packages/bundler-plugin-core/src/sentry/cli.ts @@ -1,5 +1,5 @@ import SentryCli, { SentryCliReleases } from "@sentry/cli"; -import { InternalOptions } from "../options-mapping"; +import { NormalizedOptions } from "../options-mapping"; import { Logger } from "./logger"; type SentryDryRunCLI = { @@ -14,7 +14,7 @@ export type SentryCLILike = SentryCli | SentryDryRunCLI; * In case, users selected the `dryRun` options, this returns a stub * that makes no-ops out of most CLI operations */ -export function getSentryCli(internalOptions: InternalOptions, logger: Logger): SentryCLILike { +export function getSentryCli(internalOptions: NormalizedOptions, logger: Logger): SentryCLILike { const { silent, org, project, authToken, url, vcsRemote, headers } = internalOptions; const cli = new SentryCli(internalOptions.configFile, { url, diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 89d225a1289f..7df141f9886d 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -7,12 +7,12 @@ // - unnecessary functionality import { logger } from "@sentry/utils"; -import { InternalOptions } from "../options-mapping"; +import { NormalizedOptions } from "../options-mapping"; import { BuildContext } from "../types"; import { addSpanToTransaction } from "./telemetry"; export async function createNewRelease( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { @@ -32,7 +32,7 @@ export async function createNewRelease( } export async function cleanArtifacts( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { @@ -57,7 +57,7 @@ export async function cleanArtifacts( } export async function uploadSourceMaps( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { @@ -88,7 +88,7 @@ export async function uploadSourceMaps( } export async function uploadDebugIdSourcemaps( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, folderPathToUpload: string, releaseName: string @@ -121,7 +121,7 @@ export async function uploadDebugIdSourcemaps( } export async function setCommits( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { @@ -154,7 +154,7 @@ export async function setCommits( } export async function finalizeRelease( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { @@ -180,7 +180,7 @@ export async function finalizeRelease( } export async function addDeploy( - options: InternalOptions, + options: NormalizedOptions, ctx: BuildContext, releaseName: string ): Promise { diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index e63b30eff98e..9193f35295ca 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -1,6 +1,6 @@ import SentryCli from "@sentry/cli"; import { defaultStackParser, Hub, makeNodeTransport, NodeClient, Span } from "@sentry/node"; -import { InternalOptions, SENTRY_SAAS_URL } from "../options-mapping"; +import { NormalizedOptions, SENTRY_SAAS_URL } from "../options-mapping"; import { BuildContext } from "../types"; const SENTRY_SAAS_HOSTNAME = "sentry.io"; @@ -81,7 +81,7 @@ export function addSpanToTransaction( } export function addPluginOptionInformationToHub( - options: InternalOptions, + options: NormalizedOptions, hub: Hub, bundler: "rollup" | "webpack" | "vite" | "esbuild" ) { @@ -96,7 +96,7 @@ export function addPluginOptionInformationToHub( errorHandler, deploy, include, - _experiments, + sourcemaps, } = options; hub.setTag("include", include.length > 1 ? "multiple-entries" : "single-entry"); @@ -125,7 +125,7 @@ export function addPluginOptionInformationToHub( if (errorHandler) { hub.setTag("error-handler", "custom"); } - if (_experiments.debugIdUpload) { + if (sourcemaps?.assets) { hub.setTag("debug-id-upload", true); } @@ -140,7 +140,7 @@ export function addPluginOptionInformationToHub( hub.setUser({ id: org }); } -export async function shouldSendTelemetry(options: InternalOptions): Promise { +export async function shouldSendTelemetry(options: NormalizedOptions): Promise { const { silent, org, project, authToken, url, vcsRemote, headers, telemetry, dryRun } = options; // `options.telemetry` defaults to true diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 5cb11e3be20e..29858c17cb56 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -92,9 +92,9 @@ export type Options = Omit & { * types can be uploaded by using the `ext` option. * Each path can be given as a string or an object with path-specific options * - * This is a required field. + * @deprecated Use the `sourcemaps` option instead. */ - include: string | IncludeEntry | Array; + include?: string | IncludeEntry | Array; /* --- other properties: */ @@ -213,8 +213,36 @@ export type Options = Omit & { */ uploadSourceMaps?: boolean; + /** + * Options for source maps uploading. + */ + sourcemaps?: { + /** + * A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. + * Leave this option undefined if you do not want to upload source maps to Sentry. + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being uploaded. + */ + assets: string | string[]; + + /** + * A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. + * + * Default: `[]` + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being uploaded. + */ + ignore?: string | string[]; + }; + /** * Options that are considered experimental and subject to change. + * + * @experimental API may change in any release */ _experiments?: { /** @@ -224,24 +252,6 @@ export type Options = Omit & { * Defaults to `false`. */ injectBuildInformation?: boolean; - - /** - * Configuration for debug ID upload. - * - * Note: Currently only functional for Vite, Webpack and Rollup. - */ - debugIdUpload?: { - /** - * Glob paths to files that should get be injected with a debug ID and uploaded. - */ - include: string | string[]; - /** - * Glob paths to files that should be ignored for debug ID injection and upload. - * - * Default: `[]` - */ - ignore?: string | string[]; - }; }; }; diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 21d44e099857..b69e5fbafbe4 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -1,5 +1,5 @@ import { Options } from "../src"; -import { InternalOptions, normalizeUserOptions, validateOptions } from "../src/options-mapping"; +import { NormalizedOptions, normalizeUserOptions, validateOptions } from "../src/options-mapping"; describe("normalizeUserOptions()", () => { test("should return correct value for default input", () => { @@ -113,9 +113,9 @@ describe("validateOptions", () => { }); it("should return `false` if `injectRelease` is `true` but org is not provided", () => { - const options = { injectReleasesMap: true } as Partial; + const options = { injectReleasesMap: true } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); expect(mockedLogger.error).toHaveBeenCalledWith( expect.stringMatching(/injectReleasesMap.*org/), expect.stringMatching(/set.*org.*injectReleasesMap/) @@ -123,16 +123,16 @@ describe("validateOptions", () => { }); it("should return `true` if `injectRelease` is `true` and org is provided", () => { - const options = { injectReleasesMap: true, org: "my-org" } as Partial; + const options = { injectReleasesMap: true, org: "my-org" } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); }); it("should return `false` if `setCommits` is set but neither auto nor manual options are set", () => { - const options = { setCommits: {} } as Partial; + const options = { setCommits: {} } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); expect(mockedLogger.error).toHaveBeenCalledWith( expect.stringMatching(/setCommits.*missing.*properties/), expect.stringMatching(/set.*either.*auto.*repo.*commit/) @@ -142,7 +142,7 @@ describe("validateOptions", () => { it("should return `true` but warn if `setCommits` is set and both auto nor manual options are set", () => { const options = { setCommits: { auto: true, repo: "myRepo", commit: "myCommit" } }; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); expect(mockedLogger.warn).toHaveBeenCalledWith( expect.stringMatching(/setCommits.*auto.*repo.*commit/), @@ -152,9 +152,9 @@ describe("validateOptions", () => { }); it("should return `false` if `deploy`is set but `env` is not provided", () => { - const options = { deploy: {} } as Partial; + const options = { deploy: {} } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(false); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); expect(mockedLogger.error).toHaveBeenCalledWith( expect.stringMatching(/deploy.*missing.*property/), expect.stringMatching(/set.*env/) @@ -162,9 +162,9 @@ describe("validateOptions", () => { }); it("should return `true` if `deploy`is set and `env` is provided", () => { - const options = { deploy: { env: "my-env" } } as Partial; + const options = { deploy: { env: "my-env" } } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); }); @@ -175,9 +175,9 @@ describe("validateOptions", () => { authToken: "my-auth-token", include: [{}], finalize: true, - } as Partial; + } as Partial; - expect(validateOptions(options as unknown as InternalOptions, mockedLogger)).toBe(true); + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); }); }); diff --git a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts index 2cbff27bbf25..05f0e4fa7ee5 100644 --- a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts +++ b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts @@ -1,4 +1,4 @@ -import { InternalOptions, normalizeUserOptions } from "../../src/options-mapping"; +import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; import { addDeploy, cleanArtifacts, @@ -59,7 +59,7 @@ describe("Release Pipeline", () => { describe("createNewRelease", () => { it("makes a call to Sentry CLI's releases creation command", async () => { - await createNewRelease({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); + await createNewRelease({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.new).toHaveBeenCalledWith("1.0.0"); expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.create_release"); @@ -69,7 +69,7 @@ describe("Release Pipeline", () => { describe("cleanArtifacts", () => { it("doest do anything if cleanArtifacts is not true", async () => { - await cleanArtifacts({} as InternalOptions, ctx as unknown as BuildContext, "my-release"); + await cleanArtifacts({} as NormalizedOptions, ctx as unknown as BuildContext, "my-release"); expect(mockedCLI.releases.execute).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -78,7 +78,7 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI's artifact removal command if `cleanArtifacts` is set", async () => { await cleanArtifacts( - { cleanArtifacts: true } as InternalOptions, + { cleanArtifacts: true } as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0" ); @@ -126,7 +126,7 @@ describe("Release Pipeline", () => { describe("setCommits", () => { it("doesn't do anything if `setCommits` option is not specified", async () => { - await setCommits({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); + await setCommits({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -135,7 +135,7 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI if the correct options are specified", async () => { await setCommits( - { setCommits: { auto: true } } as InternalOptions, + { setCommits: { auto: true } } as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0" ); @@ -148,7 +148,7 @@ describe("Release Pipeline", () => { describe("finalizeRelease", () => { it("doesn't do anything if `finalize` is not set", async () => { - await finalizeRelease({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); + await finalizeRelease({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.finalize).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -157,7 +157,7 @@ describe("Release Pipeline", () => { it("makes a call to Sentry CLI's release finalization command if `finalize` is true", async () => { await finalizeRelease( - { finalize: true } as InternalOptions, + { finalize: true } as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0" ); @@ -170,7 +170,7 @@ describe("Release Pipeline", () => { describe("addDeploy", () => { it("doesn't do anything if `deploy` option is not specified", async () => { - await addDeploy({} as InternalOptions, ctx as unknown as BuildContext, "1.0.0"); + await addDeploy({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); @@ -187,7 +187,7 @@ describe("Release Pipeline", () => { }; await addDeploy( - { deploy: deployOptions } as InternalOptions, + { deploy: deployOptions } as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0" ); diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 2178d5be25cc..33faa5d45a00 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,5 +1,5 @@ import { Hub } from "@sentry/node"; -import { InternalOptions, normalizeUserOptions } from "../../src/options-mapping"; +import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; import { addPluginOptionInformationToHub, shouldSendTelemetry } from "../../src/sentry/telemetry"; const mockCliExecute = jest.fn(); @@ -20,14 +20,14 @@ describe("shouldSendTelemetry", () => { mockCliExecute.mockImplementation( () => "Sentry Server: https://selfhostedSentry.io \nsomeotherstuff\netc" ); - expect(await shouldSendTelemetry({} as InternalOptions)).toBe(false); + expect(await shouldSendTelemetry({} as NormalizedOptions)).toBe(false); }); it("should return true if CLI returns sentry.io as a URL", async () => { mockCliExecute.mockImplementation( () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" ); - expect(await shouldSendTelemetry({} as InternalOptions)).toBe(true); + expect(await shouldSendTelemetry({} as NormalizedOptions)).toBe(true); }); }); diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index da422ecec5fe..a81f429c3e4a 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -54,10 +54,11 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | Option | Type | Required | Description | | ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | | org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | +| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | | headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | @@ -87,6 +88,7 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 2041ef1211d9..030bacdcfb14 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -54,10 +54,11 @@ The Sentry Rollup Plugin takes an options argument with the following properties | Option | Type | Required | Description | | ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | | org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | +| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | | headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | @@ -87,6 +88,7 @@ The Sentry Rollup Plugin takes an options argument with the following properties | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 639e8606b1be..6cd604487d76 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -52,42 +52,44 @@ As an alternative to passing options explicitly, you can also use a `.sentryclir The Sentry Vite Plugin takes an options argument with the following properties: -| Option | Type | Required | Description | -| ----------------------------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| entries | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the bundle. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | -| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | -| \_experimentsinjectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | +| Option | Type | Required | Description | +| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | +| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | +| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | +| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | +| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | +| headers | `Record` | optional | Headers added to every outgoing network request. | +| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | +| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | +| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | +| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | +| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | +| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | +| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | +| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | +| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | +| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | +| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | +| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | +| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | +| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | +| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | +| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | +| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | +| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | +| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | +| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | +| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | +| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | +| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | +| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | +| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | +| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 7f894b15ce27..36cdc584595a 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -54,10 +54,11 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | Option | Type | Required | Description | | ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. | | org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | | project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | | authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | +| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | +| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | | url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | | headers | `Record` | optional | Headers added to every outgoing network request. | | vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | @@ -87,6 +88,7 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | +| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | | \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | #### options.include: From a5d322d1788c8e3f4c34a55edb3a429c5a91f071 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 14 Apr 2023 15:15:47 +0200 Subject: [PATCH 161/640] meta: Add changelog entry for 0.7.0 (#205) --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76c78de286ed..3fb3384a17ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,31 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.7.0 + +This release introduces the `sourcemaps` option. This option switches to a new system of handling source maps in Sentry. + +While the old system is still available via the `include` option, the recommended way forward is the `sourcemaps` option. + +You can configure the `sourcemaps` option as follows: + +```js +plugin({ + org: "Your organization", + project: "Your project", + authToken: "Your auth token", + + sourcemaps: { + // Specify the directory containing build artifacts + assets: "./dist/**", + }, +}); +``` + +- feat(esbuild): Add debug ID injection for esbuild (#202) +- feat: Promote debug ID uploading to stable via `sourcemaps` option (#204) +- fix(core): Also do debug ID injection for `.cjs` files (#203) + ## 0.6.0 - feat(webpack): Add debug ID injection to the webpack plugin (#198) From 259018857f1fd58b29a8fa92fa573953a9c30fca Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 17 Apr 2023 12:03:24 +0200 Subject: [PATCH 162/640] fix: Add typing exports to packages (#208) --- CHANGELOG.md | 1 + packages/bundler-plugin-core/package.json | 15 +++++++++++++++ packages/esbuild-plugin/package.json | 3 ++- packages/rollup-plugin/package.json | 3 ++- packages/vite-plugin/package.json | 3 ++- packages/webpack-plugin/package.json | 3 ++- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fb3384a17ad..a38ecf0f4d48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ plugin({ - feat(esbuild): Add debug ID injection for esbuild (#202) - feat: Promote debug ID uploading to stable via `sourcemaps` option (#204) - fix(core): Also do debug ID injection for `.cjs` files (#203) +- fix: Add typing exports to packages (#208) ## 0.6.0 diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8242724a8a2f..969e18c7dc06 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -14,6 +14,21 @@ "sentry-release-injection-file.js", "sentry-esbuild-debugid-injection-file.js" ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" + }, + "./sentry-release-injection-file": { + "import": "./sentry-release-injection-file.js", + "require": "./sentry-release-injection-file.js" + }, + "./sentry-esbuild-debugid-injection-file": { + "import": "./sentry-esbuild-debugid-injection-file.js", + "require": "./sentry-esbuild-debugid-injection-file.js" + } + }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1a3c4665abf9..1df11f0fdc51 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -21,7 +21,8 @@ "exports": { ".": { "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" } }, "main": "dist/cjs/index.js", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 5ee902010b05..ffdd83feb8e6 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -22,7 +22,8 @@ "exports": { ".": { "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" } }, "main": "dist/cjs/index.js", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 2904605bc9d0..b0280cc65c74 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -21,7 +21,8 @@ "exports": { ".": { "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" } }, "main": "dist/cjs/index.js", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e8fa611c010e..b86c32051e9c 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -22,7 +22,8 @@ "exports": { ".": { "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js" + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" } }, "main": "dist/cjs/index.js", From f21340ee56883710f70872334cd34f0e14e96179 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 17 Apr 2023 10:04:48 +0000 Subject: [PATCH 163/640] release: 0.7.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 57208ebbda16..f910f384058a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.6.0", + "version": "0.7.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 969e18c7dc06..d090b158e627 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.6.0", + "version": "0.7.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 513eaddedc9c..977b184b2549 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.6.0", + "version": "0.7.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.6.0", - "@sentry/rollup-plugin": "0.6.0", - "@sentry/vite-plugin": "0.6.0", - "@sentry/webpack-plugin": "0.6.0", + "@sentry/esbuild-plugin": "0.7.0", + "@sentry/rollup-plugin": "0.7.0", + "@sentry/vite-plugin": "0.7.0", + "@sentry/webpack-plugin": "0.7.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1df11f0fdc51..2305c62bc3cc 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.6.0", + "version": "0.7.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.6.0" + "@sentry/bundler-plugin-core": "0.7.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 7a162592ec96..5fde1362f18b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.6.0", + "version": "0.7.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8dbaba84338b..a08ea44ded6e 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.6.0", + "version": "0.7.0", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", - "@sentry/bundler-plugin-core": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry/bundler-plugin-core": "0.7.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index ba5973647d58..2b90b55fb200 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.6.0", + "version": "0.7.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.6.0", + "@sentry/bundler-plugin-core": "0.7.0", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ffdd83feb8e6..b3835a3ea4bf 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.6.0", + "version": "0.7.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -48,7 +48,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.6.0" + "@sentry/bundler-plugin-core": "0.7.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -58,8 +58,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index a14c2315c379..13cc973d785d 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.6.0", + "version": "0.7.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b0280cc65c74..06e28be87a72 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.6.0", + "version": "0.7.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.6.0" + "@sentry/bundler-plugin-core": "0.7.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b86c32051e9c..1de773bfbddd 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.6.0", + "version": "0.7.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.6.0" + "@sentry/bundler-plugin-core": "0.7.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.6.0", + "@sentry-internal/eslint-config": "0.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1b610f06e29f8bf347f795be79fb9d08e5296d6e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 17 Apr 2023 16:49:14 +0200 Subject: [PATCH 164/640] fix(core): Fix vite complaining about CJS import of `webpack-sources` (#210) --- CHANGELOG.md | 4 ++++ packages/bundler-plugin-core/src/index.ts | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a38ecf0f4d48..bea301605caa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.7.1 + +- fix(core): Fix vite complaining about CJS import of webpack-sources (#210) + ## 0.7.0 This release introduces the `sourcemaps` option. This option switches to a new system of handling source maps in Sentry. diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 083d1c50e5f8..756b78a47523 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -30,7 +30,7 @@ import { promisify } from "util"; import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "./utils"; import { glob } from "glob"; import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; -import { SourceMapSource } from "webpack-sources"; +import webpackSources from "webpack-sources"; import type { sources } from "webpack"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; @@ -465,7 +465,7 @@ const unplugin = createUnplugin((userOptions, unpluginMetaContext // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access newSourceMap.sourcesContent = originalSourceMap.sourcesContent as string[]; - const newSource = new SourceMapSource( + const newSource = new webpackSources.SourceMapSource( newCode, fileName, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument From 04c89c8c4e9ee38d7e02eaba7af39ba256e2dc64 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 17 Apr 2023 14:52:30 +0000 Subject: [PATCH 165/640] release: 0.7.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index f910f384058a..5e0b9d6327b5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.7.0", + "version": "0.7.1", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d090b158e627..3312fb01fa58 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.7.0", + "version": "0.7.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 977b184b2549..69bb7951aac2 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.7.0", - "@sentry/rollup-plugin": "0.7.0", - "@sentry/vite-plugin": "0.7.0", - "@sentry/webpack-plugin": "0.7.0", + "@sentry/esbuild-plugin": "0.7.1", + "@sentry/rollup-plugin": "0.7.1", + "@sentry/vite-plugin": "0.7.1", + "@sentry/webpack-plugin": "0.7.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 2305c62bc3cc..5b1d3cf3acfb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.7.0", + "version": "0.7.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.0" + "@sentry/bundler-plugin-core": "0.7.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 5fde1362f18b..435de869ebea 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index a08ea44ded6e..936d46051716 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", - "@sentry/bundler-plugin-core": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry/bundler-plugin-core": "0.7.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 2b90b55fb200..25039b5ed8aa 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.0", + "@sentry/bundler-plugin-core": "0.7.1", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index b3835a3ea4bf..e3a17b9da34c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.7.0", + "version": "0.7.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -48,7 +48,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.0" + "@sentry/bundler-plugin-core": "0.7.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -58,8 +58,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 13cc973d785d..385a631f791a 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 06e28be87a72..2be32f6545d3 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.7.0", + "version": "0.7.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.0" + "@sentry/bundler-plugin-core": "0.7.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 1de773bfbddd..4c5db61e06fa 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.7.0", + "version": "0.7.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.0" + "@sentry/bundler-plugin-core": "0.7.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.0", + "@sentry-internal/eslint-config": "0.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 537668775c43e6658291f8390b78fed2477a0424 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 17 Apr 2023 18:46:07 +0200 Subject: [PATCH 166/640] fix(core): Use `createRequire` to not use built-in `require` in ESM (#212) --- packages/bundler-plugin-core/rollup.config.js | 3 +++ packages/bundler-plugin-core/src/index.ts | 4 ++++ packages/bundler-plugin-core/src/tsconfig.json | 1 + 3 files changed, 8 insertions(+) diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 2e033ab1d1d3..2120b13c1675 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -13,6 +13,9 @@ const extensions = [".js", ".ts"]; export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, plugins: [ resolve({ extensions, preferBuiltins: true }), commonjs(), diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 756b78a47523..35ff1bef6e97 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -26,6 +26,7 @@ import { makeMain } from "@sentry/node"; import os from "os"; import path from "path"; import fs from "fs"; +import { createRequire } from "module"; import { promisify } from "util"; import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "./utils"; import { glob } from "glob"; @@ -35,6 +36,9 @@ import type { sources } from "webpack"; const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; +// Use createRequire because esm doesn't like built-in require.resolve +const require = createRequire(import.meta.url); + const releaseInjectionFilePath = require.resolve( "@sentry/bundler-plugin-core/sentry-release-injection-file" ); diff --git a/packages/bundler-plugin-core/src/tsconfig.json b/packages/bundler-plugin-core/src/tsconfig.json index 2dbce52c3887..52a91dac042a 100644 --- a/packages/bundler-plugin-core/src/tsconfig.json +++ b/packages/bundler-plugin-core/src/tsconfig.json @@ -7,6 +7,7 @@ "resolveJsonModule": true, // needed to import package.json "types": ["node"], "target": "ES6", // needed for some iterator features + "module": "es2020", "lib": ["ES2020", "DOM"] // es2020 needed for "new Set()", DOM needed for various bundler types } } From 379ffb0e9e30ffa1516b4b97c2a4618363c1acc9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 17 Apr 2023 18:49:32 +0200 Subject: [PATCH 167/640] meta: Add changelog entry for 0.7.2 (#213) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bea301605caa..fbc31c39b7df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 0.7.2 + +- fix(core): Use createRequire to not use built-in require in ESM (#212) + ## 0.7.1 - fix(core): Fix vite complaining about CJS import of webpack-sources (#210) From 7304dcb96d6ae8625a55e6b768fed3c463e81ae0 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 17 Apr 2023 16:50:59 +0000 Subject: [PATCH 168/640] release: 0.7.2 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 8 ++++---- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/lerna.json b/lerna.json index 5e0b9d6327b5..af800b220f52 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.7.1", + "version": "0.7.2", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3312fb01fa58..812f93dfa0dc 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.7.1", + "version": "0.7.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 69bb7951aac2..f50d649143ce 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.7.1", - "@sentry/rollup-plugin": "0.7.1", - "@sentry/vite-plugin": "0.7.1", - "@sentry/webpack-plugin": "0.7.1", + "@sentry/esbuild-plugin": "0.7.2", + "@sentry/rollup-plugin": "0.7.2", + "@sentry/vite-plugin": "0.7.2", + "@sentry/webpack-plugin": "0.7.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5b1d3cf3acfb..95be62b8090e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.7.1", + "version": "0.7.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.1" + "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 435de869ebea..3172175dad99 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 936d46051716..7111d7f90355 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "private": true, "scripts": { @@ -15,9 +15,9 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", - "@sentry/bundler-plugin-core": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry/bundler-plugin-core": "0.7.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 25039b5ed8aa..f17d36dbb84f 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.1", + "@sentry/bundler-plugin-core": "0.7.2", "@sentry/integrations": "^7.19.0", "@sentry/node": "^7.19.0", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e3a17b9da34c..d2e9eec3f0ea 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.7.1", + "version": "0.7.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -48,7 +48,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.1" + "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -58,8 +58,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 385a631f791a..0010b766ac96 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 2be32f6545d3..785ed9c81e2f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.7.1", + "version": "0.7.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.1" + "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 4c5db61e06fa..b03f1b1fff73 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.7.1", + "version": "0.7.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -47,7 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.1" + "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { "@babel/core": "7.18.5", @@ -57,8 +57,8 @@ "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.1", + "@sentry-internal/eslint-config": "0.7.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 3c0104dc5801aa17072fe31968dfba31203e9939 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 13:27:17 +0200 Subject: [PATCH 169/640] ref(core): Add new options type for future use (#216) --- packages/bundler-plugin-core/src/types.ts | 241 ++++++++++++++++++++++ 1 file changed, 241 insertions(+) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 29858c17cb56..f17605700999 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -255,6 +255,247 @@ export type Options = Omit & { }; }; +export interface NewOptions { + /** + * The slug of the Sentry organization associated with the app. + * + * This value can also be specified via the `SENTRY_ORG` environment variable. + */ + org?: string; + + /** + * The slug of the Sentry project associated with the app. + * + * This value can also be specified via the `SENTRY_PROJECT` environment variable. + */ + project?: string; + + /** + * The authentication token to use for all communication with Sentry. + * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. + * Required scopes: project:releases (and org:read if setCommits option is used). + * + * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. + */ + authToken?: string; + + /** + * The base URL of your Sentry instance. Use this if you are using a self-hosted + * or Sentry instance other than sentry.io. + * + * This value can also be set via the `SENTRY_URL` environment variable. + * + * Defaults to https://sentry.io/, which is the correct value for SaaS customers. + */ + url?: string; + + /** + * Headers added to every outgoing network request. + */ + headers?: Record; + + /** + * Print useful debug information. + * + * Defaults to `false`. + */ + debug?: boolean; + + /** + * Suppresses all logs. + * + * Defaults to `false`. + */ + silent?: boolean; + + /** + * When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. + * + * By default, the plugin will simply throw an error, thereby stopping the bundling process. + * If an `errorHandler` callback is provided, compilation will continue, unless an error is + * thrown in the provided callback. + * + * To allow compilation to continue but still emit a warning, set this option to the following: + * + * ```js + * (err) => { + * console.warn(err); + * } + * ``` + */ + errorHandler?: (err: Error) => void; + + /** + * If set to true, internal plugin errors and performance data will be sent to Sentry. + * + * At Sentry we like to use Sentry ourselves to deliver faster and more stable products. + * We're very careful of what we're sending. We won't collect anything other than error + * and high-level performance data. We will never collect your code or any details of the + * projects in which you're using this plugin. + * + * Defaults to `true`. + */ + telemetry?: boolean; + + /** + * Completely disables all functionality of the plugin. + * + * Defaults to `false`. + */ + disable?: boolean; + + /** + * Options for source maps uploading. + * Leave this option undefined if you do not want to upload source maps to Sentry. + */ + sourcemaps?: { + /** + * A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry. + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being uploaded. + */ + assets: string | string[]; + + /** + * A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry. + * + * Default: `[]` + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being uploaded. + */ + ignore?: string | string[]; + + /** + * Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. + * + * Defaults to making all sources relative to `process.cwd()` while building. + * + * @hidden Not yet implemented. + */ + rewriteSources?: (source: string, map: any) => string; + + /** + * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being deleted. + * + * @hidden Not yet implemented. + */ + deleteAfterUpload?: string | string[]; + }; + + /** + * Options related to managing the Sentry releases for a build. + * + * More info: https://docs.sentry.io/product/releases/ + */ + release?: { + /** + * Unique identifier for the release you want to create. + * + * This value can also be specified via the `SENTRY_RELEASE` environment variable. + * + * Defaults to automatically detecting a value for your environment. + * This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. + * (the latterrequires access to git CLI and for the root directory to be a valid repository) + * + * If you didn't provide a value and the plugin can't automatically detect one, no release will be created. + */ + name?: string; + + /** + * Whether the plugin should inject release information into the build for the SDK to pick it up when sending events. (recommended) + * + * Defaults to `true`. + */ + inject?: boolean; + + /** + * Whether the plugin should create a release on Sentry during the build. + * Note that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. + * (for example via the `inject` option) + * + * Defaults to `true`. + */ + create?: boolean; + + /** + * Whether the Sentry release should be automatically finalized (meaning an end timestamp is added) after the build ends. + * + * Defaults to `true`. + */ + finalize?: boolean; + + /** + * Unique identifier for the distribution, used to further segment your release. + * Usually your build number. + */ + dist?: string; + + /** + * Version control system remote name. + * + * This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. + * + * Defaults to 'origin'. + */ + vcsRemote?: string; + + /** + * Associates the release with its commits in Sentry. + */ + setCommits?: SetCommitsOptions; + + /** + * Adds deployment information to the release in Sentry. + */ + deploy?: DeployOptions; + + /** + * Legacy method of uploading source maps. (not recommended unless necessary) + * + * The modern version of doing source maps upload is more robust and way easier to get working but has to inject a very small snippet of JavaScript into your output bundles. + * In situations where this leads to problems (e.g subresource integrity) you can use this option as a fallback. + */ + legacySourcemaps?: { + /** + * One or more paths that should be scanned recursively for sources. + * + * Each path can be given as a string or an object with more specific options. + */ + include?: string | IncludeEntry | Array; + + /** + * Remove all the artifacts in the release before the upload. + * + * Defaults to `false`. + */ + cleanArtifacts?: boolean; + }; + }; + + /** + * Options that are considered experimental and subject to change. + * + * @experimental API that does not follow semantic versioning and may change in any release + */ + _experiments?: { + /** + * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. + * This contains information about the build, e.g. dependencies, node version and other useful data. + * + * Defaults to `false`. + */ + injectBuildInformation?: boolean; + }; +} + export type IncludeEntry = { /** * One or more paths to scan for files to upload. From 87ca5efd69752ac41cde6c48659a187b1cffe94b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 13:27:39 +0200 Subject: [PATCH 170/640] test: Disable E2E tests (#219) --- .github/workflows/checks.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 9bceb3de2daf..abfbe4800950 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -77,7 +77,8 @@ jobs: # Dependabot PRs sadly also don't have access to secrets, so we skip them as well if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && - github.actor != 'dependabot[bot]' + github.actor != 'dependabot[bot]' && + false # Debug ID backend changes broke the E2E tests, we need to revisit them needs: build name: E2E Tests runs-on: ubuntu-latest From b16c362820467cb1d7055f7ed75973d688b75997 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 13:40:15 +0200 Subject: [PATCH 171/640] ci: Use setup-node instead of volta (#220) --- .github/workflows/checks.yml | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index abfbe4800950..7eaa17124b01 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -13,7 +13,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - run: yarn build @@ -23,7 +25,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - run: yarn check:types @@ -32,7 +36,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - run: yarn check:formatting @@ -42,7 +48,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - run: yarn test:unit @@ -65,7 +73,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} # husky uses fs-extra which needs node >= 14 - we can ignore because its a dev dependency @@ -77,8 +85,7 @@ jobs: # Dependabot PRs sadly also don't have access to secrets, so we skip them as well if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && - github.actor != 'dependabot[bot]' && - false # Debug ID backend changes broke the E2E tests, we need to revisit them + github.actor != 'dependabot[bot]' needs: build name: E2E Tests runs-on: ubuntu-latest @@ -96,7 +103,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - run: yarn lint @@ -108,17 +117,9 @@ jobs: if: startsWith(github.ref, 'refs/heads/release/') steps: - uses: actions/checkout@v3 - - uses: volta-cli/action@v3 - # - name: Check dependency cache - # uses: actions/cache@v3 - # with: - # path: ${{ env.CACHED_DEPENDENCY_PATHS }} - # key: ${{ needs.job_build.outputs.dependency_cache_key }} - # - name: Check build cache - # uses: actions/cache@v3 - # with: - # path: ${{ env.CACHED_BUILD_PATHS }} - # key: ${{ env.BUILD_CACHE_KEY }} + - uses: actions/setup-node@v3 + with: + node-version-file: "package.json" - run: yarn --frozen-lockfile - name: pack run: yarn build:npm From 6870f2647146c0651493e2a5ade8d25adb7a3350 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 13:57:34 +0200 Subject: [PATCH 172/640] ci: Skip E2E tests (#222) --- .github/workflows/checks.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 7eaa17124b01..eda9741377f3 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -85,7 +85,8 @@ jobs: # Dependabot PRs sadly also don't have access to secrets, so we skip them as well if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && - github.actor != 'dependabot[bot]' + github.actor != 'dependabot[bot]' && + false # Debug ID backend changes broke the E2E tests, we need to revisit them needs: build name: E2E Tests runs-on: ubuntu-latest From 50e95a8028e362358750e62c351c7b9c88ce63ba Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 14:17:23 +0200 Subject: [PATCH 173/640] test: Remove tests that test deprecated features (#221) --- packages/bundler-plugin-core/src/types.ts | 2 + .../array-entries-option.test.ts | 83 ------------------- .../array-entries-option/input/entrypoint1.js | 2 - .../array-entries-option/input/entrypoint2.js | 2 - .../array-entries-option/input/entrypoint3.js | 2 - .../fixtures/array-entries-option/setup.ts | 19 ----- .../build-information-injection.test.ts | 2 +- .../function-entries-option.test.ts | 83 ------------------- .../input/entrypoint1.js | 2 - .../input/entrypoint2.js | 2 - .../input/entrypoint3.js | 2 - .../fixtures/function-entries-option/setup.ts | 20 ----- .../regex-entries-option/input/entrypoint1.js | 2 - .../regex-entries-option/input/entrypoint2.js | 2 - .../fixtures/regex-entries-option/setup.ts | 14 ---- .../string-entries-option.test.ts | 67 --------------- .../input/entrypoint1.js | 2 - .../input/entrypoint2.js | 2 - .../fixtures/string-entries-option/setup.ts | 14 ---- .../string-entries-option.test.ts | 67 --------------- packages/integration-tests/package.json | 2 +- .../utils/create-cjs-bundles.ts | 5 +- packages/integration-tests/utils/testIf.ts | 2 +- 23 files changed, 8 insertions(+), 392 deletions(-) delete mode 100644 packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts delete mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js delete mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js delete mode 100644 packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js delete mode 100644 packages/integration-tests/fixtures/array-entries-option/setup.ts delete mode 100644 packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts delete mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js delete mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js delete mode 100644 packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js delete mode 100644 packages/integration-tests/fixtures/function-entries-option/setup.ts delete mode 100644 packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js delete mode 100644 packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js delete mode 100644 packages/integration-tests/fixtures/regex-entries-option/setup.ts delete mode 100644 packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts delete mode 100644 packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js delete mode 100644 packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js delete mode 100644 packages/integration-tests/fixtures/string-entries-option/setup.ts delete mode 100644 packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index f17605700999..49759a49f882 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -73,6 +73,8 @@ export type Options = Omit & { * * By default, the release will be injected into all entrypoints. If release * injection should be disabled, provide an empty array here. + * + * @deprecated This option will be removed in the next major version. */ releaseInjectionTargets?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); diff --git a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts b/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts deleted file mode 100644 index eba6fde3e875..000000000000 --- a/packages/integration-tests/fixtures/array-entries-option/array-entries-option.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; - -function getBundleOutput(bundlePath: string): string { - return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); -} - -function getFileContents(bundlePath: string): string { - return fs.readFileSync(bundlePath, { encoding: "utf-8" }); -} - -describe("`releaseInjectionTargets` option should work as expected when given an array of RegEx and strings", () => { - test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect( - getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); - - test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect( - getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); -}); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint1.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint2.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js b/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/array-entries-option/input/entrypoint3.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/array-entries-option/setup.ts b/packages/integration-tests/fixtures/array-entries-option/setup.ts deleted file mode 100644 index 1be984e48888..000000000000 --- a/packages/integration-tests/fixtures/array-entries-option/setup.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); -const entryPoint3Path = path.resolve(__dirname, "input", "entrypoint3.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, - outputDir, - { - release: "I AM A RELEASE!", - include: outputDir, - releaseInjectionTargets: [/entrypoint1\.js/, entryPoint3Path], - dryRun: true, - } as Options -); 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 4e80c6a21dcb..154e0dee308a 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 @@ -31,7 +31,7 @@ function checkBundle(bundlePath: string): void { "webpack", "webpack4", ], - depsVersions: { rollup: 2, vite: 3, webpack: 5 }, + depsVersions: { rollup: 3, vite: 3, webpack: 5 }, // This will differ based on what env this is run on nodeVersion: expectedNodeVersion, }) diff --git a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts b/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts deleted file mode 100644 index 28bdc4da5604..000000000000 --- a/packages/integration-tests/fixtures/function-entries-option/function-entries-option.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; - -function getBundleOutput(bundlePath: string): string { - return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); -} - -function getFileContents(bundlePath: string): string { - return fs.readFileSync(bundlePath, { encoding: "utf-8" }); -} - -describe("`releaseInjectionTargets` option should work as expected when given a function", () => { - test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect( - getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); - - test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint3.js"))).toBe( - "I AM A RELEASE!" - ); - expect( - getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); -}); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint1.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint2.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js b/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/function-entries-option/input/entrypoint3.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/function-entries-option/setup.ts b/packages/integration-tests/fixtures/function-entries-option/setup.ts deleted file mode 100644 index 56c9dfb39054..000000000000 --- a/packages/integration-tests/fixtures/function-entries-option/setup.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); -const entryPoint3Path = path.resolve(__dirname, "input", "entrypoint3.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path, entrypoint3: entryPoint3Path }, - outputDir, - { - release: "I AM A RELEASE!", - include: outputDir, - releaseInjectionTargets: (entrypointPath) => - entrypointPath === entryPoint1Path || entrypointPath === entryPoint3Path, - dryRun: true, - } as Options -); diff --git a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint1.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/regex-entries-option/input/entrypoint2.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/regex-entries-option/setup.ts b/packages/integration-tests/fixtures/regex-entries-option/setup.ts deleted file mode 100644 index 2ee0b77fdf52..000000000000 --- a/packages/integration-tests/fixtures/regex-entries-option/setup.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { - release: "I AM A RELEASE!", - include: outputDir, - dryRun: true, - releaseInjectionTargets: /entrypoint1\.js/, -} as Options); diff --git a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts deleted file mode 100644 index 22f3efb7c1fb..000000000000 --- a/packages/integration-tests/fixtures/regex-entries-option/string-entries-option.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; - -function getBundleOutput(bundlePath: string): string { - return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); -} - -function getFileContents(bundlePath: string): string { - return fs.readFileSync(bundlePath, { encoding: "utf-8" }); -} - -describe("`releaseInjectionTargets` option should work as expected when given a regular expression", () => { - test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); - // eslint-disable-next-line jest/no-standalone-expect - expect( - getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); - - test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); - expect( - getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); -}); diff --git a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint1.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js b/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js deleted file mode 100644 index 53c3b7d56057..000000000000 --- a/packages/integration-tests/fixtures/string-entries-option/input/entrypoint2.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/string-entries-option/setup.ts b/packages/integration-tests/fixtures/string-entries-option/setup.ts deleted file mode 100644 index 9601b7a51fae..000000000000 --- a/packages/integration-tests/fixtures/string-entries-option/setup.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPoint1Path = path.resolve(__dirname, "input", "entrypoint1.js"); -const entryPoint2Path = path.resolve(__dirname, "input", "entrypoint2.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ entrypoint1: entryPoint1Path, entrypoint2: entryPoint2Path }, outputDir, { - release: "I AM A RELEASE!", - include: outputDir, - releaseInjectionTargets: entryPoint1Path, - dryRun: true, -} as Options); diff --git a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts b/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts deleted file mode 100644 index 33f29bb75bcd..000000000000 --- a/packages/integration-tests/fixtures/string-entries-option/string-entries-option.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; - -function getBundleOutput(bundlePath: string): string { - return childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); -} - -function getFileContents(bundlePath: string): string { - return fs.readFileSync(bundlePath, { encoding: "utf-8" }); -} - -describe("`releaseInjectionTargets` option should work as expected when given a string", () => { - test("esbuild bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "esbuild", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("rollup bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "rollup", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - test("vite bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "vite", "entrypoint2.js"))).toBe(""); - expect(getFileContents(path.join(__dirname, "out", "vite", "entrypoint2.js"))).not.toContain( - "I AM A RELEASE!" - ); - }); - - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - // eslint-disable-next-line jest/no-standalone-expect - expect(getBundleOutput(path.join(__dirname, "out", "webpack4", "entrypoint2.js"))).toBe(""); - // eslint-disable-next-line jest/no-standalone-expect - expect( - getFileContents(path.join(__dirname, "out", "webpack4", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); - - test("webpack 5 bundle", () => { - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint1.js"))).toBe( - "I AM A RELEASE!" - ); - expect(getBundleOutput(path.join(__dirname, "out", "webpack5", "entrypoint2.js"))).toBe(""); - expect( - getFileContents(path.join(__dirname, "out", "webpack5", "entrypoint2.js")) - ).not.toContain("I AM A RELEASE!"); - }); -}); diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 7111d7f90355..75237e7c95f2 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -24,7 +24,7 @@ "esbuild": "0.14.49", "eslint": "^8.18.0", "jest": "^28.1.3", - "rollup": "2.77.0", + "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", "webpack": "5.74.0", diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 16efaeaac5e2..0a8e8b641779 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -12,7 +12,8 @@ import { Options, } from "@sentry/bundler-plugin-core"; -const nodejsMajorversion = process.version.split(".")[0]; +// 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 }, @@ -57,7 +58,7 @@ export function createCjsBundles( }); // Webpack 4 doesn't work on Node.js versions >= 18 - if (!nodejsMajorversion || parseInt(nodejsMajorversion) < 18) { + if (parseInt(nodejsMajorversion) < 18) { webpack4( { mode: "production", diff --git a/packages/integration-tests/utils/testIf.ts b/packages/integration-tests/utils/testIf.ts index ef64737c490c..6c8ac66ad5fc 100644 --- a/packages/integration-tests/utils/testIf.ts +++ b/packages/integration-tests/utils/testIf.ts @@ -15,7 +15,7 @@ export function testIf(condition: boolean): jest.It { */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-undef, @typescript-eslint/no-unsafe-assignment export const testIfNodeMajorVersionIsLessThan18: jest.It = function () { - const nodejsMajorversion = process.version.split(".")[0]; + const nodejsMajorversion = process.version.split(".")[0]?.slice(1); return testIf(!nodejsMajorversion || parseInt(nodejsMajorversion) < 18); // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; From 302e81b2206feb09a7185f174efc6765e0bea2ad Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 14:26:08 +0200 Subject: [PATCH 174/640] meta: Disable TypeScript `noUnused` rules (#223) --- packages/tsconfigs/base-config.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json index 811e5b15f514..4b0c8664669f 100644 --- a/packages/tsconfigs/base-config.json +++ b/packages/tsconfigs/base-config.json @@ -12,6 +12,8 @@ "noPropertyAccessFromIndexSignature": true, "noUncheckedIndexedAccess": true, "noImplicitOverride": true, + "noUnusedLocals": false, + "noUnusedParameters": false, "exactOptionalPropertyTypes": false } } From 8940df82ee482cdabdac2a4c59723d5771f876a7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Apr 2023 20:14:31 +0200 Subject: [PATCH 175/640] build: Update Sentry SDK to `7.50.0` (#224) --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/index.ts | 1 - packages/bundler-plugin-core/src/types.ts | 3 +- packages/playground/package.json | 4 +- yarn.lock | 84 +++++++++++++---------- 5 files changed, 50 insertions(+), 45 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 812f93dfa0dc..42cd96d086f1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,8 +53,7 @@ }, "dependencies": { "@sentry/cli": "^2.17.0", - "@sentry/node": "^7.19.0", - "@sentry/tracing": "^7.19.0", + "@sentry/node": "7.50.0", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 35ff1bef6e97..a3279283b5ff 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -10,7 +10,6 @@ import { uploadSourceMaps, uploadDebugIdSourcemaps, } from "./sentry/releasePipeline"; -import "@sentry/tracing"; import SentryCli from "@sentry/cli"; import { addPluginOptionInformationToHub, diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 49759a49f882..2c218862e04e 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,5 +1,4 @@ -import { Hub } from "@sentry/core"; -import { Span } from "@sentry/tracing"; +import { Hub, Span } from "@sentry/node"; import { SentryCLILike } from "./sentry/cli"; import { createLogger } from "./sentry/logger"; diff --git a/packages/playground/package.json b/packages/playground/package.json index f17d36dbb84f..488e46206cb6 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -19,8 +19,8 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "0.7.2", - "@sentry/integrations": "^7.19.0", - "@sentry/node": "^7.19.0", + "@sentry/integrations": "7.50", + "@sentry/node": "7.50", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", "esbuild": "0.14.49", diff --git a/yarn.lock b/yarn.lock index 846b9c087694..9743d5bf4d3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2564,6 +2564,16 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sentry-internal/tracing@7.50.0": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" + integrity sha512-4TQ4vN0aMBWsUXfJWk2xbe4x7fKfwCXgXKTtHC/ocwwKM+0EefV5Iw9YFG8IrIQN4vMtuRzktqcs9q0/Sbv7tg== + dependencies: + "@sentry/core" "7.50.0" + "@sentry/types" "7.50.0" + "@sentry/utils" "7.50.0" + tslib "^1.9.3" + "@sentry/cli@^2.17.0": version "2.17.0" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.17.0.tgz#fc809ecd721eb5323502625fa904b786af28ad89" @@ -2575,59 +2585,50 @@ proxy-from-env "^1.1.0" which "^2.0.2" -"@sentry/core@7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.19.0.tgz#74e0eaf4b9f42bb0290f4b3f3b0ea3e272dd693e" - integrity sha512-YF9cTBcAnO4R44092BJi5Wa2/EO02xn2ziCtmNgAVTN2LD31a/YVGxGBt/FDr4Y6yeuVehaqijVVvtpSmXrGJw== +"@sentry/core@7.50.0": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" + integrity sha512-6oD1a3fYs4aiNK7tuJSd88LHjYJAetd7ZK/AfJniU7zWKj4jxIYfO8nhm0qdnhEDs81RcweVDmPhWm3Kwrzzsg== dependencies: - "@sentry/types" "7.19.0" - "@sentry/utils" "7.19.0" + "@sentry/types" "7.50.0" + "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/integrations@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.19.0.tgz#570b7ced7ef9de43a6a56f99f324936148adf6b9" - integrity sha512-0x5AGU7EBIzOTSqD7TFvD4S5eX6hbqbvb4YCzJt3SIZC3bO4FiBu2t0y+PIZUSsupnqafBIIWsCcGWeKrNHAyA== +"@sentry/integrations@7.50": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" + integrity sha512-HUmPN2sHNx37m+lOWIoCILHimILdI0Df9nGmWA13fIhny8mxJ6Dbazyis11AW4/lrZ1a6F1SQ2epLEq7ZesiRw== dependencies: - "@sentry/types" "7.19.0" - "@sentry/utils" "7.19.0" + "@sentry/types" "7.50.0" + "@sentry/utils" "7.50.0" localforage "^1.8.1" tslib "^1.9.3" -"@sentry/node@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.19.0.tgz#4c9494d6aaa15d7f22fe4e6c31d0358a365adb2f" - integrity sha512-yG7Tx32WqOkEHVotFLrumCcT9qlaSDTkFNZ+yLSvZXx74ifsE781DzBA9W7K7bBdYO3op+p2YdsOKzf3nPpAyQ== +"@sentry/node@7.50", "@sentry/node@7.50.0": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" + integrity sha512-11UJBKoQFMp7f8sbzeO2gENsKIUkVCNBTzuPRib7l2K1HMjSfacXmwwma7ZEs0mc3ofIZ1UYuyONAXmI1lK9cQ== dependencies: - "@sentry/core" "7.19.0" - "@sentry/types" "7.19.0" - "@sentry/utils" "7.19.0" + "@sentry-internal/tracing" "7.50.0" + "@sentry/core" "7.50.0" + "@sentry/types" "7.50.0" + "@sentry/utils" "7.50.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.19.0.tgz#d69ecea2c0b53d113c5100fc52d0a0acc5c8a129" - integrity sha512-SWY17M3TsgBePaGowUcSqBwaT0TJQzuNexVnLojuU0k6F57L9hubvP9zaoosoCfARXQ/3NypAFWnlJyf570rFQ== - dependencies: - "@sentry/core" "7.19.0" - "@sentry/types" "7.19.0" - "@sentry/utils" "7.19.0" - tslib "^1.9.3" - -"@sentry/types@7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.19.0.tgz#3ebb96670399b637a945fa499fa7436f7b930147" - integrity sha512-oGRAT6lfzoKrxO1mvxiSj0XHxWPd6Gd1wpPGuu6iJo03xgWDS+MIlD1h2unqL4N5fAzLjzmbC2D2lUw50Kn2pA== +"@sentry/types@7.50.0": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" + integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/utils@7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.19.0.tgz#0e039fe57056074c3a5e47bd50d9cb4ac9a6e909" - integrity sha512-2L6lq+c9Ol2uiRxQDdcgoapmHJp24MhMN0gIkn2alSfMJ+ls6bGXzQHx6JAIdoOiwFQXRZHKL9ecfAc8O+vItA== +"@sentry/utils@7.50.0": + version "7.50.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" + integrity sha512-iyPwwC6fwJsiPhH27ZbIiSsY5RaccHBqADS2zEjgKYhmP4P9WGgHRDrvLEnkOjqQyKNb6c0yfmv83n0uxYnolw== dependencies: - "@sentry/types" "7.19.0" + "@sentry/types" "7.50.0" tslib "^1.9.3" "@sinclair/typebox@^0.24.1": @@ -10383,6 +10384,13 @@ rollup@2.77.0: optionalDependencies: fsevents "~2.3.2" +rollup@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.0.tgz#a6f44074418e55217967c8eca622f9638d396388" + integrity sha512-0ZkFPyBNvx717KvC700NoxUD31aEEX675u6INJVAmBgKtQuCL8jmmJCj1b9B/qDSnILAvASVKa7UpGS+FLN6AQ== + optionalDependencies: + fsevents "~2.3.2" + rollup@^2.75.6: version "2.78.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" From 6384c5fba453acbcff732ec86ad8f7b544a7eb78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Tammerg=C3=A5rd?= <44197016+filiptammergard@users.noreply.github.com> Date: Tue, 2 May 2023 11:50:35 +0200 Subject: [PATCH 176/640] chore: Fix typo in readmes (#226) Co-authored-by: Luca Forstner --- packages/esbuild-plugin/README.md | 2 +- packages/rollup-plugin/README.md | 2 +- packages/vite-plugin/README.md | 2 +- packages/webpack-plugin/README.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index a81f429c3e4a..16dfbee2a370 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -81,7 +81,7 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | | silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | | cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 030bacdcfb14..0790bb41b86f 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -81,7 +81,7 @@ The Sentry Rollup Plugin takes an options argument with the following properties | debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | | silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | | cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index 6cd604487d76..e5df9f70197e 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -81,7 +81,7 @@ The Sentry Vite Plugin takes an options argument with the following properties: | debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | | silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | | cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 36cdc584595a..f08bfce1649d 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -81,7 +81,7 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | | silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | | cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | +| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | From 12d80229caf9839c185241e40dae7d96132a4f5e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 May 2023 15:34:02 +0200 Subject: [PATCH 177/640] ref(core): Use factory function to create individual plugins (#229) --- MIGRATION.md | 4 + packages/bundler-plugin-core/src/index.ts | 755 +++++++++--------- packages/esbuild-plugin/src/index.ts | 9 +- .../build-information-injection.test.ts | 17 +- packages/integration-tests/package.json | 4 + .../utils/create-cjs-bundles.ts | 12 +- packages/rollup-plugin/src/index.ts | 9 +- packages/vite-plugin/src/index.ts | 9 +- packages/webpack-plugin/src/index.ts | 9 +- 9 files changed, 423 insertions(+), 405 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 994259a98015..58864c225387 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -2,6 +2,10 @@ This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins. +## Unreleased + +- `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. + ## [Unreleased] Upgrading from 1.x to 2.x (Webpack Plugin Only) Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1, relying on bundler-agnostic code (based on [unjs/unplugin](https://github.com/unjs/unplugin)). While we tried to keep changes to v1 of the webpack plugin minimal, a adjustments are nevertheless necessary: diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a3279283b5ff..8d9fd3a08688 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -73,439 +73,441 @@ const esbuildDebugIdInjectionFilePath = require.resolve( * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ -const unplugin = createUnplugin((userOptions, unpluginMetaContext) => { - const options = normalizeUserOptions(userOptions); - - const allowedToSendTelemetryPromise = shouldSendTelemetry(options); - - const { sentryHub, sentryClient } = makeSentryClient( - "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - allowedToSendTelemetryPromise, - options.project - ); - - addPluginOptionInformationToHub(options, sentryHub, unpluginMetaContext.framework); - - //TODO: This call is problematic because as soon as we set our hub as the current hub - // we might interfere with other plugins that use Sentry. However, for now, we'll - // leave it in because without it, we can't get distributed traces (which are pretty nice) - // Let's keep it until someone complains about interference. - // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. - makeMain(sentryHub); - - const logger = createLogger({ - prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, - silent: options.silent, - debug: options.debug, - }); +export function sentryUnpluginFactory() { + return createUnplugin((userOptions, unpluginMetaContext) => { + const options = normalizeUserOptions(userOptions); - if (!validateOptions(options, logger)) { - handleError( - new Error("Options were not set correctly. See output above for more details."), - logger, - options.errorHandler - ); - } + const allowedToSendTelemetryPromise = shouldSendTelemetry(options); - const cli = getSentryCli(options, logger); + const { sentryHub, sentryClient } = makeSentryClient( + "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", + allowedToSendTelemetryPromise, + options.project + ); - const releaseNamePromise = new Promise((resolve) => { - if (userOptions.release) { - resolve(userOptions.release); - } else { - resolve(cli.releases.proposeVersion()); + addPluginOptionInformationToHub(options, sentryHub, unpluginMetaContext.framework); + + //TODO: This call is problematic because as soon as we set our hub as the current hub + // we might interfere with other plugins that use Sentry. However, for now, we'll + // leave it in because without it, we can't get distributed traces (which are pretty nice) + // Let's keep it until someone complains about interference. + // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. + makeMain(sentryHub); + + const logger = createLogger({ + prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, + silent: options.silent, + debug: options.debug, + }); + + if (!validateOptions(options, logger)) { + handleError( + new Error("Options were not set correctly. See output above for more details."), + logger, + options.errorHandler + ); } - }); - let transaction: Transaction | undefined; - let releaseInjectionSpan: Span | undefined; + const cli = getSentryCli(options, logger); - const plugins: UnpluginOptions[] = []; + const releaseNamePromise = new Promise((resolve) => { + if (userOptions.release) { + resolve(userOptions.release); + } else { + resolve(cli.releases.proposeVersion()); + } + }); - plugins.push({ - name: "sentry-plugin", - enforce: "pre", // needed for Vite to call resolveId hook + let transaction: Transaction | undefined; + let releaseInjectionSpan: Span | undefined; - /** - * Responsible for starting the plugin execution transaction and the release injection span - */ - async buildStart() { - logger.debug("Called 'buildStart'"); + const plugins: UnpluginOptions[] = []; - const isAllowedToSendToSendTelemetry = await allowedToSendTelemetryPromise; - if (isAllowedToSendToSendTelemetry) { - logger.info("Sending error and performance telemetry data to Sentry."); - logger.info("To disable telemetry, set `options.telemetry` to `false`."); - sentryHub.addBreadcrumb({ level: "info", message: "Telemetry enabled." }); - } else { - sentryHub.addBreadcrumb({ - level: "info", - message: "Telemetry disabled. This should never show up in a Sentry event.", - }); - } + plugins.push({ + name: "sentry-plugin", + enforce: "pre", // needed for Vite to call resolveId hook - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { - logger.warn( - "Running Sentry plugin from within a `node_modules` folder. Some features may not work." - ); - } + /** + * Responsible for starting the plugin execution transaction and the release injection span + */ + async buildStart() { + logger.debug("Called 'buildStart'"); - const releaseName = await releaseNamePromise; + const isAllowedToSendToSendTelemetry = await allowedToSendTelemetryPromise; + if (isAllowedToSendToSendTelemetry) { + logger.info("Sending error and performance telemetry data to Sentry."); + logger.info("To disable telemetry, set `options.telemetry` to `false`."); + sentryHub.addBreadcrumb({ level: "info", message: "Telemetry enabled." }); + } else { + sentryHub.addBreadcrumb({ + level: "info", + message: "Telemetry disabled. This should never show up in a Sentry event.", + }); + } - // At this point, we either have determined a release or we have to bail - if (!releaseName) { - handleError( - new Error( - "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" - ), - logger, - options.errorHandler - ); - } + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } - transaction = sentryHub.startTransaction({ - op: "function.plugin", - name: "Sentry Bundler Plugin execution", - }); + const releaseName = await releaseNamePromise; + + // At this point, we either have determined a release or we have to bail + if (!releaseName) { + handleError( + new Error( + "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" + ), + logger, + options.errorHandler + ); + } - releaseInjectionSpan = addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger, cli }, - "function.plugin.inject_release", - "Release injection" - ); - }, - - /** - * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is - * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. - * - * We also record the id (i.e. absolute path) of any non-entrypoint. - * - * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. - * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. - * @param options Additional information to use for making a resolving decision. - * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. - */ - resolveId(id, importer, { isEntry }) { - logger.debug('Called "resolveId":', { id, importer, isEntry }); - return undefined; - }, - - /** - * This hook determines whether we want to transform a module. In the sentry bundler plugin we want to transform every entrypoint - * unless configured otherwise with the `releaseInjectionTargets` option. - * - * @param id Always the absolute (fully resolved) path to the module. - * @returns `true` or `false` depending on whether we want to transform the module. For the sentry bundler plugin we only - * want to transform the release injector file. - */ - transformInclude(id) { - logger.debug('Called "transformInclude":', { id }); - - if (id.includes("sentry-release-injection-file")) { - return true; - } + transaction = sentryHub.startTransaction({ + op: "function.plugin", + name: "Sentry Bundler Plugin execution", + }); - if (id.match(/\\node_modules\\|\/node_modules\//)) { - return false; // never transform 3rd party modules - } + releaseInjectionSpan = addSpanToTransaction( + { hub: sentryHub, parentSpan: transaction, logger, cli }, + "function.plugin.inject_release", + "Release injection" + ); + }, - // We normalize the id because vite always passes `id` as a unix style path which causes problems when a user passes - // a windows style path to `releaseInjectionTargets` - const normalizedId = path.normalize(id); + /** + * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is + * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. + * + * We also record the id (i.e. absolute path) of any non-entrypoint. + * + * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. + * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. + * @param options Additional information to use for making a resolving decision. + * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. + */ + resolveId(id, importer, { isEntry }) { + logger.debug('Called "resolveId":', { id, importer, isEntry }); + return undefined; + }, - if (options.releaseInjectionTargets) { - // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. - if (typeof options.releaseInjectionTargets === "function") { - return options.releaseInjectionTargets(normalizedId); + /** + * This hook determines whether we want to transform a module. In the sentry bundler plugin we want to transform every entrypoint + * unless configured otherwise with the `releaseInjectionTargets` option. + * + * @param id Always the absolute (fully resolved) path to the module. + * @returns `true` or `false` depending on whether we want to transform the module. For the sentry bundler plugin we only + * want to transform the release injector file. + */ + transformInclude(id) { + logger.debug('Called "transformInclude":', { id }); + + if (id.includes("sentry-release-injection-file")) { + return true; } - return options.releaseInjectionTargets.some((entry) => { - if (entry instanceof RegExp) { - return entry.test(normalizedId); - } else { - const normalizedEntry = path.normalize(entry); - return normalizedId === normalizedEntry; + if (id.match(/\\node_modules\\|\/node_modules\//)) { + return false; // never transform 3rd party modules + } + + // We normalize the id because vite always passes `id` as a unix style path which causes problems when a user passes + // a windows style path to `releaseInjectionTargets` + const normalizedId = path.normalize(id); + + if (options.releaseInjectionTargets) { + // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. + if (typeof options.releaseInjectionTargets === "function") { + return options.releaseInjectionTargets(normalizedId); } - }); - } else { - const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); - const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( - (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) - ); + return options.releaseInjectionTargets.some((entry) => { + if (entry instanceof RegExp) { + return entry.test(normalizedId); + } else { + const normalizedEntry = path.normalize(entry); + return normalizedId === normalizedEntry; + } + }); + } else { + const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); - return pathIsOrdinary && pathHasAllowedFileEnding; - } - }, - - /** - * This hook is responsible for injecting the "sentry release injector" imoprt statement into each entrypoint unless - * configured otherwise with the `releaseInjectionTargets` option (logic for that is in the `transformInclude` hook). - * - * @param code Code of the file to transform. - * @param id Always the absolute (fully resolved) path to the module. - * @returns transformed code + source map - */ - async transform(code, id) { - logger.debug('Called "transform":', { id }); - - if (!options.injectRelease) { - return; - } + const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( + (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) + ); - // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. - const ms = new MagicString(code); - - if (code.includes("_sentry_release_injection_file")) { - // Appending instead of prepending has less probability of mucking with user's source maps. - ms.append( - generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: options.injectReleasesMap, - injectBuildInformation: options._experiments.injectBuildInformation || false, - org: options.org, - project: options.project, - }) - ); - } else { - // Appending instead of prepending has less probability of mucking with user's source maps. - // Luckily import statements get hoisted to the top anyways. - // The import needs to be an absolute path because Rollup doesn't bundle stuff in `node_modules` by default when bundling CJS (unless the import path is absolute or the node-resolve-plugin is used). - ms.append(`;\nimport "${releaseInjectionFilePath.replace(/\\/g, "\\\\")}";`); - } + return pathIsOrdinary && pathHasAllowedFileEnding; + } + }, - if (unpluginMetaContext.framework === "esbuild") { - // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. - // Currently just returning a string here seems to work and even correctly sourcemaps the code we generate. - // However, other bundlers need the `map` property - return ms.toString(); - } else { - return { - code: ms.toString(), - map: ms.generateMap(), - }; - } - }, - - /** - * Responsible for executing the sentry release creation pipeline (i.e. creating a release on - * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) - */ - async writeBundle() { - logger.debug('Called "writeBundle"'); - - releaseInjectionSpan?.finish(); - const releasePipelineSpan = - transaction && - addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger, cli }, - "function.plugin.release", - "Release pipeline" - ); + /** + * This hook is responsible for injecting the "sentry release injector" imoprt statement into each entrypoint unless + * configured otherwise with the `releaseInjectionTargets` option (logic for that is in the `transformInclude` hook). + * + * @param code Code of the file to transform. + * @param id Always the absolute (fully resolved) path to the module. + * @returns transformed code + source map + */ + async transform(code, id) { + logger.debug('Called "transform":', { id }); + + if (!options.injectRelease) { + return; + } - sentryHub.addBreadcrumb({ - category: "writeBundle:start", - level: "info", - }); + // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. + const ms = new MagicString(code); + + if (code.includes("_sentry_release_injection_file")) { + // Appending instead of prepending has less probability of mucking with user's source maps. + ms.append( + generateGlobalInjectorCode({ + release: await releaseNamePromise, + injectReleasesMap: options.injectReleasesMap, + injectBuildInformation: options._experiments.injectBuildInformation || false, + org: options.org, + project: options.project, + }) + ); + } else { + // Appending instead of prepending has less probability of mucking with user's source maps. + // Luckily import statements get hoisted to the top anyways. + // The import needs to be an absolute path because Rollup doesn't bundle stuff in `node_modules` by default when bundling CJS (unless the import path is absolute or the node-resolve-plugin is used). + ms.append(`;\nimport "${releaseInjectionFilePath.replace(/\\/g, "\\\\")}";`); + } - const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; + if (unpluginMetaContext.framework === "esbuild") { + // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. + // Currently just returning a string here seems to work and even correctly sourcemaps the code we generate. + // However, other bundlers need the `map` property + return ms.toString(); + } else { + return { + code: ms.toString(), + map: ms.generateMap(), + }; + } + }, - const releaseName = await releaseNamePromise; + /** + * Responsible for executing the sentry release creation pipeline (i.e. creating a release on + * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) + */ + async writeBundle() { + logger.debug('Called "writeBundle"'); + + releaseInjectionSpan?.finish(); + const releasePipelineSpan = + transaction && + addSpanToTransaction( + { hub: sentryHub, parentSpan: transaction, logger, cli }, + "function.plugin.release", + "Release pipeline" + ); - let tmpUploadFolder: string | undefined; + sentryHub.addBreadcrumb({ + category: "writeBundle:start", + level: "info", + }); - try { - if (!unpluginMetaContext.watchMode) { - if (options.sourcemaps?.assets) { - const debugIdChunkFilePaths = ( - await glob(options.sourcemaps.assets, { - absolute: true, - nodir: true, - ignore: options.sourcemaps.ignore, - }) - ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); + const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; - if (unpluginMetaContext.framework === "esbuild") { - await Promise.all( - debugIdChunkFilePaths.map(async (debugIdChunkFilePath) => { - const chunkFileContents = await promisify(fs.readFile)( - debugIdChunkFilePath, - "utf-8" - ); + const releaseName = await releaseNamePromise; - const debugId = stringToUUID(chunkFileContents); + let tmpUploadFolder: string | undefined; - const newChunkFileContents = chunkFileContents.replace( - /__SENTRY_DEBUG_ID__/g, - debugId - ); + try { + if (!unpluginMetaContext.watchMode) { + if (options.sourcemaps?.assets) { + const debugIdChunkFilePaths = ( + await glob(options.sourcemaps.assets, { + absolute: true, + nodir: true, + ignore: options.sourcemaps.ignore, + }) + ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); + + if (unpluginMetaContext.framework === "esbuild") { + await Promise.all( + debugIdChunkFilePaths.map(async (debugIdChunkFilePath) => { + const chunkFileContents = await promisify(fs.readFile)( + debugIdChunkFilePath, + "utf-8" + ); + + const debugId = stringToUUID(chunkFileContents); + + const newChunkFileContents = chunkFileContents.replace( + /__SENTRY_DEBUG_ID__/g, + debugId + ); + + await promisify(fs.writeFile)( + debugIdChunkFilePath, + newChunkFileContents, + "utf-8" + ); + }) + ); + } + + const sourceFileUploadFolderPromise = promisify(fs.mkdtemp)( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); - await promisify(fs.writeFile)( - debugIdChunkFilePath, - newChunkFileContents, - "utf-8" + await Promise.all( + debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + await sourceFileUploadFolderPromise, + String(chunkIndex), + logger ); }) ); - } - const sourceFileUploadFolderPromise = promisify(fs.mkdtemp)( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - - await Promise.all( - debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - await sourceFileUploadFolderPromise, - String(chunkIndex), - logger - ); - }) - ); + tmpUploadFolder = await sourceFileUploadFolderPromise; + await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName); + } - tmpUploadFolder = await sourceFileUploadFolderPromise; - await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName); + await createNewRelease(options, ctx, releaseName); + await cleanArtifacts(options, ctx, releaseName); + await uploadSourceMaps(options, ctx, releaseName); + await setCommits(options, ctx, releaseName); + await finalizeRelease(options, ctx, releaseName); + await addDeploy(options, ctx, releaseName); } - - await createNewRelease(options, ctx, releaseName); - await cleanArtifacts(options, ctx, releaseName); - await uploadSourceMaps(options, ctx, releaseName); - await setCommits(options, ctx, releaseName); - await finalizeRelease(options, ctx, releaseName); - await addDeploy(options, ctx, releaseName); - } - transaction?.setStatus("ok"); - } catch (e: unknown) { - transaction?.setStatus("cancelled"); - sentryHub.addBreadcrumb({ - level: "error", - message: "Error during writeBundle", - }); - handleError(e, logger, options.errorHandler); - } finally { - if (tmpUploadFolder) { - fs.rm(tmpUploadFolder, { recursive: true, force: true }, () => { - // We don't care if this errors + transaction?.setStatus("ok"); + } catch (e: unknown) { + transaction?.setStatus("cancelled"); + sentryHub.addBreadcrumb({ + level: "error", + message: "Error during writeBundle", + }); + handleError(e, logger, options.errorHandler); + } finally { + if (tmpUploadFolder) { + fs.rm(tmpUploadFolder, { recursive: true, force: true }, () => { + // We don't care if this errors + }); + } + releasePipelineSpan?.finish(); + transaction?.finish(); + await sentryClient.flush().then(null, () => { + logger.warn("Sending of telemetry failed"); }); } - releasePipelineSpan?.finish(); - transaction?.finish(); - await sentryClient.flush().then(null, () => { - logger.warn("Sending of telemetry failed"); - }); - } - sentryHub.addBreadcrumb({ - category: "writeBundle:finish", - level: "info", - }); - }, - rollup: { - renderChunk(code, chunk) { - if ( - options.sourcemaps?.assets && - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) - ) { - return injectDebugIdSnippetIntoChunk(code); - } else { - return null; // returning null means not modifying the chunk at all - } + sentryHub.addBreadcrumb({ + category: "writeBundle:finish", + level: "info", + }); }, - }, - vite: { - renderChunk(code, chunk) { - if ( - options.sourcemaps?.assets && - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) - ) { - return injectDebugIdSnippetIntoChunk(code); - } else { - return null; // returning null means not modifying the chunk at all - } + rollup: { + renderChunk(code, chunk) { + if ( + options.sourcemaps?.assets && + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + return injectDebugIdSnippetIntoChunk(code); + } else { + return null; // returning null means not modifying the chunk at all + } + }, }, - }, - webpack(compiler) { - if (options.sourcemaps?.assets) { - // Cache inspired by https://github.com/webpack/webpack/pull/15454 - const cache = new WeakMap(); - - compiler.hooks.compilation.tap("sentry-plugin", (compilation) => { - compilation.hooks.optimizeChunkAssets.tap("sentry-plugin", (chunks) => { - chunks.forEach((chunk) => { - const fileNames = chunk.files; - fileNames.forEach((fileName) => { - const source = compilation.assets[fileName]; - - if (!source) { - logger.warn( - "Unable to access compilation assets. If you see this warning, it is likely a bug in the Sentry webpack plugin. Feel free to open an issue at https://github.com/getsentry/sentry-javascript-bundler-plugins with reproduction steps." - ); - return; - } - - compilation.updateAsset(fileName, (oldSource) => { - const cached = cache.get(oldSource); - if (cached) { - return cached; + vite: { + renderChunk(code, chunk) { + if ( + options.sourcemaps?.assets && + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + return injectDebugIdSnippetIntoChunk(code); + } else { + return null; // returning null means not modifying the chunk at all + } + }, + }, + webpack(compiler) { + if (options.sourcemaps?.assets) { + // Cache inspired by https://github.com/webpack/webpack/pull/15454 + const cache = new WeakMap(); + + compiler.hooks.compilation.tap("sentry-plugin", (compilation) => { + compilation.hooks.optimizeChunkAssets.tap("sentry-plugin", (chunks) => { + chunks.forEach((chunk) => { + const fileNames = chunk.files; + fileNames.forEach((fileName) => { + const source = compilation.assets[fileName]; + + if (!source) { + logger.warn( + "Unable to access compilation assets. If you see this warning, it is likely a bug in the Sentry webpack plugin. Feel free to open an issue at https://github.com/getsentry/sentry-javascript-bundler-plugins with reproduction steps." + ); + return; } - const originalCode = source.source().toString(); + compilation.updateAsset(fileName, (oldSource) => { + const cached = cache.get(oldSource); + if (cached) { + return cached; + } - // The source map type is very annoying :( - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const originalSourceMap = source.map() as any; + const originalCode = source.source().toString(); - const { code: newCode, map: newSourceMap } = injectDebugIdSnippetIntoChunk( - originalCode, - fileName - ); + // The source map type is very annoying :( + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const originalSourceMap = source.map() as any; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - newSourceMap.sources = originalSourceMap.sources as string[]; + const { code: newCode, map: newSourceMap } = injectDebugIdSnippetIntoChunk( + originalCode, + fileName + ); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - newSourceMap.sourcesContent = originalSourceMap.sourcesContent as string[]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + newSourceMap.sources = originalSourceMap.sources as string[]; - const newSource = new webpackSources.SourceMapSource( - newCode, - fileName, - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - originalSourceMap, - originalCode, - newSourceMap, - false - ) as sources.Source; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + newSourceMap.sourcesContent = originalSourceMap.sourcesContent as string[]; - cache.set(oldSource, newSource); + const newSource = new webpackSources.SourceMapSource( + newCode, + fileName, + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + originalSourceMap, + originalCode, + newSourceMap, + false + ) as sources.Source; - return newSource; + cache.set(oldSource, newSource); + + return newSource; + }); }); }); }); }); - }); - } - }, - }); + } + }, + }); - if (unpluginMetaContext.framework === "esbuild") { - if (options.sourcemaps?.assets) { - plugins.push({ - name: "sentry-esbuild-debug-id-plugin", - esbuild: { - setup({ initialOptions }) { - initialOptions.inject = initialOptions.inject || []; - initialOptions.inject.push(esbuildDebugIdInjectionFilePath); + if (unpluginMetaContext.framework === "esbuild") { + if (options.sourcemaps?.assets) { + plugins.push({ + name: "sentry-esbuild-debug-id-plugin", + esbuild: { + setup({ initialOptions }) { + initialOptions.inject = initialOptions.inject || []; + initialOptions.inject.push(esbuildDebugIdInjectionFilePath); + }, }, - }, - }); + }); + } } - } - return plugins; -}); + return plugins; + }); +} function handleError( unknownError: unknown, @@ -600,13 +602,4 @@ export function sentryCliBinaryExists(): boolean { return fs.existsSync(SentryCli.getPath()); } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryVitePlugin: (options: Options) => any = unplugin.vite; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryRollupPlugin: (options: Options) => any = unplugin.rollup; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options: Options) => any = unplugin.webpack; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryEsbuildPlugin: (options: Options) => any = unplugin.esbuild; - export type { Options } from "./types"; diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index b5d964d7f784..b99463cb3526 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,2 +1,9 @@ -export { sentryEsbuildPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; + +const sentryUnplugin = sentryUnpluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryEsbuildPlugin: (options: Options) => any = sentryUnplugin.esbuild; + export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; +export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; 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 154e0dee308a..f05f382213cc 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 @@ -13,24 +13,15 @@ function checkBundle(bundlePath: string): void { const expectedNodeVersion = parseInt(process.versions.node); - expect(processOutput).toBe( - JSON.stringify({ - deps: [ - "@sentry-internal/eslint-config", - "@sentry-internal/sentry-bundler-plugin-tsconfig", - "@sentry/bundler-plugin-core", - "@swc/jest", - "@types/jest", - "@types/webpack4", + expect(JSON.parse(processOutput)).toEqual( + expect.objectContaining({ + deps: expect.arrayContaining([ "esbuild", - "eslint", - "jest", "rollup", - "ts-node", "vite", "webpack", "webpack4", - ], + ]) as string[], depsVersions: { rollup: 3, vite: 3, webpack: 5 }, // This will differ based on what env this is run on nodeVersion: expectedNodeVersion, diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 75237e7c95f2..f4bae920b775 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -18,6 +18,10 @@ "@sentry-internal/eslint-config": "0.7.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/vite-plugin": "0.7.2", + "@sentry/webpack-plugin": "0.7.2", + "@sentry/esbuild-plugin": "0.7.2", + "@sentry/rollup-plugin": "0.7.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 0a8e8b641779..a00a22cb6731 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -4,13 +4,11 @@ import * as rollup from "rollup"; import { default as webpack4 } from "webpack4"; import { webpack as webpack5 } from "webpack"; import * as esbuild from "esbuild"; -import { - sentryEsbuildPlugin, - sentryRollupPlugin, - sentryVitePlugin, - sentryWebpackPlugin, - Options, -} from "@sentry/bundler-plugin-core"; +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); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index ee9c1f4fac2d..7026404b06e7 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,2 +1,9 @@ -export { sentryRollupPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; + +const sentryUnplugin = sentryUnpluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryRollupPlugin: (options: Options) => any = sentryUnplugin.rollup; + export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; +export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 5341d28939f4..c848353416e1 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,2 +1,9 @@ -export { sentryVitePlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; + +const sentryUnplugin = sentryUnpluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryVitePlugin: (options: Options) => any = sentryUnplugin.vite; + export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; +export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 1c683c591a1f..334597a41951 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,2 +1,9 @@ -export { sentryWebpackPlugin, sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; + +const sentryUnplugin = sentryUnpluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryWebpackPlugin: (options: Options) => any = sentryUnplugin.webpack; + export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; +export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; From b99096c4d071a1bb0108c798d13077af8fd44ccd Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 May 2023 15:39:35 +0200 Subject: [PATCH 178/640] build: Clean up rollup configs (#225) --- packages/bundler-plugin-core/package.json | 1 - packages/bundler-plugin-core/rollup.config.js | 17 ++++++------- .../src/sentry/releasePipeline.ts | 11 ++++----- packages/esbuild-plugin/package.json | 2 -- packages/esbuild-plugin/rollup.config.js | 9 ++++++- packages/rollup-plugin/package.json | 2 -- packages/rollup-plugin/rollup.config.js | 9 ++++++- packages/vite-plugin/package.json | 2 -- packages/vite-plugin/rollup.config.js | 9 ++++++- packages/webpack-plugin/package.json | 2 -- packages/webpack-plugin/rollup.config.js | 9 ++++++- yarn.lock | 24 +++++++++++++++---- 12 files changed, 66 insertions(+), 31 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 42cd96d086f1..c4cf9341a9ad 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -65,7 +65,6 @@ "@babel/preset-env": "7.18.2", "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.1", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 2120b13c1675..7996f6bcd72f 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -1,14 +1,12 @@ -import commonjs from "@rollup/plugin-commonjs"; -import resolve from "@rollup/plugin-node-resolve"; -import replace from "@rollup/plugin-replace"; import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; import json from "@rollup/plugin-json"; +import resolve from "@rollup/plugin-node-resolve"; +import replace from "@rollup/plugin-replace"; import modulePackage from "module"; +import packageJson from "./package.json"; const input = ["src/index.ts"]; - -const extensions = [".js", ".ts"]; +const extensions = [".ts"]; export default { input, @@ -17,8 +15,11 @@ export default { throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them }, plugins: [ - resolve({ extensions, preferBuiltins: true }), - commonjs(), + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), json(), replace({ preventAssignment: true, diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 7df141f9886d..6fd5b21647ec 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -6,7 +6,6 @@ // - huge download // - unnecessary functionality -import { logger } from "@sentry/utils"; import { NormalizedOptions } from "../options-mapping"; import { BuildContext } from "../types"; import { addSpanToTransaction } from "./telemetry"; @@ -37,7 +36,7 @@ export async function cleanArtifacts( releaseName: string ): Promise { if (!options.cleanArtifacts) { - logger.debug("Skipping artifact cleanup."); + ctx.logger.debug("Skipping artifact cleanup."); return; } @@ -62,7 +61,7 @@ export async function uploadSourceMaps( releaseName: string ): Promise { if (!options.uploadSourceMaps) { - logger.debug("Skipping source maps upload."); + ctx.logger.debug("Skipping source maps upload."); return; } @@ -126,7 +125,7 @@ export async function setCommits( releaseName: string ): Promise { if (!options.setCommits) { - logger.debug("Skipping setting commits to release."); + ctx.logger.debug("Skipping setting commits to release."); return; } @@ -160,7 +159,7 @@ export async function finalizeRelease( ): Promise { if (!options.finalize) { ctx.hub.addBreadcrumb({ level: "info", message: "Skipping release finalization." }); - logger.debug("Skipping release finalization."); + ctx.logger.debug("Skipping release finalization."); return; } @@ -186,7 +185,7 @@ export async function addDeploy( ): Promise { if (!options.deploy) { ctx.hub.addBreadcrumb({ level: "info", message: "Skipping adding deploy info to release." }); - logger.debug("Skipping adding deploy info to release."); + ctx.logger.debug("Skipping adding deploy info to release."); return; } diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 95be62b8090e..ad22879845eb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -54,8 +54,6 @@ "@babel/preset-env": "7.18.2", "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.1", - "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.7.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", diff --git a/packages/esbuild-plugin/rollup.config.js b/packages/esbuild-plugin/rollup.config.js index eb423e78ca7b..95b1158525af 100644 --- a/packages/esbuild-plugin/rollup.config.js +++ b/packages/esbuild-plugin/rollup.config.js @@ -10,8 +10,15 @@ const extensions = [".ts"]; export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, plugins: [ - resolve({ extensions, preferBuiltins: true }), + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), babel({ extensions, babelHelpers: "bundled", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d2e9eec3f0ea..5816205cd47b 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -55,8 +55,6 @@ "@babel/preset-env": "7.18.2", "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.1", - "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.7.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", diff --git a/packages/rollup-plugin/rollup.config.js b/packages/rollup-plugin/rollup.config.js index eb423e78ca7b..95b1158525af 100644 --- a/packages/rollup-plugin/rollup.config.js +++ b/packages/rollup-plugin/rollup.config.js @@ -10,8 +10,15 @@ const extensions = [".ts"]; export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, plugins: [ - resolve({ extensions, preferBuiltins: true }), + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), babel({ extensions, babelHelpers: "bundled", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 785ed9c81e2f..446e061d77ab 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -54,8 +54,6 @@ "@babel/preset-env": "7.18.2", "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.1", - "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.7.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", diff --git a/packages/vite-plugin/rollup.config.js b/packages/vite-plugin/rollup.config.js index eb423e78ca7b..95b1158525af 100644 --- a/packages/vite-plugin/rollup.config.js +++ b/packages/vite-plugin/rollup.config.js @@ -10,8 +10,15 @@ const extensions = [".ts"]; export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, plugins: [ - resolve({ extensions, preferBuiltins: true }), + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), babel({ extensions, babelHelpers: "bundled", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b03f1b1fff73..477323d93776 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -55,8 +55,6 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@rollup/plugin-json": "4.1.0", - "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "0.7.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", "@swc/core": "^1.2.205", diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index eb423e78ca7b..95b1158525af 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -10,8 +10,15 @@ const extensions = [".ts"]; export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, plugins: [ - resolve({ extensions, preferBuiltins: true }), + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), babel({ extensions, babelHelpers: "bundled", diff --git a/yarn.lock b/yarn.lock index 9743d5bf4d3b..22f34040bb22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6980,9 +6980,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" - integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: builtin-modules "^3.3.0" @@ -6998,6 +6998,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -10307,7 +10314,7 @@ resolve.exports@1.1.0, resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -10316,6 +10323,15 @@ resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.2 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.19.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" From d868960933f5ca93beb1fc87b86f83fea6687d3c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 May 2023 17:14:18 +0200 Subject: [PATCH 179/640] ref(core): Extract release injection into separate plugins (#218) --- MIGRATION.md | 2 + packages/bundler-plugin-core/src/index.ts | 305 ++++++------------ .../src/options-mapping.ts | 3 +- packages/bundler-plugin-core/src/utils.ts | 98 ++++++ packages/esbuild-plugin/package.json | 1 + packages/esbuild-plugin/src/index.ts | 37 ++- packages/playground/build-esbuild.js | 2 +- packages/playground/build-webpack4.js | 2 +- packages/playground/build-webpack5.js | 2 +- packages/playground/package.json | 4 +- .../{rollup.config.js => rollup.config.mjs} | 8 +- packages/playground/vite.config.js | 2 +- packages/rollup-plugin/package.json | 4 + packages/rollup-plugin/src/index.ts | 21 +- packages/vite-plugin/package.json | 1 + packages/vite-plugin/src/index.ts | 19 +- packages/webpack-plugin/package.json | 4 +- packages/webpack-plugin/src/index.ts | 38 ++- yarn.lock | 38 +-- 19 files changed, 347 insertions(+), 244 deletions(-) rename packages/playground/{rollup.config.js => rollup.config.mjs} (57%) diff --git a/MIGRATION.md b/MIGRATION.md index 58864c225387..fc691fe80e21 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -4,6 +4,8 @@ This document serves as a migration guide, documenting all breaking changes betw ## Unreleased +- The minimum compatible version of rollup is version `3.2.0`. +- Removed functionality for the `releaseInjectionTargets` option. - `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. ## [Unreleased] Upgrading from 1.x to 2.x (Webpack Plugin Only) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 8d9fd3a08688..06bfaeb896cd 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,5 +1,4 @@ import { createUnplugin, UnpluginOptions } from "unplugin"; -import MagicString from "magic-string"; import { Options, BuildContext } from "./types"; import { createNewRelease, @@ -27,25 +26,31 @@ import path from "path"; import fs from "fs"; import { createRequire } from "module"; import { promisify } from "util"; -import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "./utils"; +import { + determineReleaseName, + generateGlobalInjectorCode, + getDependencies, + getPackageJson, + parseMajorVersion, + stringToUUID, +} from "./utils"; import { glob } from "glob"; import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; import webpackSources from "webpack-sources"; import type { sources } from "webpack"; - -const ALLOWED_TRANSFORMATION_FILE_ENDINGS = [".js", ".ts", ".jsx", ".tsx", ".mjs"]; +import type { Plugin } from "rollup"; +import MagicString from "magic-string"; // Use createRequire because esm doesn't like built-in require.resolve const require = createRequire(import.meta.url); -const releaseInjectionFilePath = require.resolve( - "@sentry/bundler-plugin-core/sentry-release-injection-file" -); - const esbuildDebugIdInjectionFilePath = require.resolve( "@sentry/bundler-plugin-core/sentry-esbuild-debugid-injection-file" ); +interface SentryUnpluginFactoryOptions { + releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; +} /** * The sentry bundler plugin concerns itself with two things: * - Release injection @@ -73,7 +78,7 @@ const esbuildDebugIdInjectionFilePath = require.resolve( * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ -export function sentryUnpluginFactory() { +export function sentryUnpluginFactory({ releaseInjectionPlugin }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions, unpluginMetaContext) => { const options = normalizeUserOptions(userOptions); @@ -110,17 +115,18 @@ export function sentryUnpluginFactory() { const cli = getSentryCli(options, logger); - const releaseNamePromise = new Promise((resolve) => { - if (userOptions.release) { - resolve(userOptions.release); - } else { - resolve(cli.releases.proposeVersion()); - } - }); - let transaction: Transaction | undefined; let releaseInjectionSpan: Span | undefined; + const releaseName = options.release ?? determineReleaseName(); + if (!releaseName) { + handleError( + new Error("Unable to determine a release name. Please set the `release` option."), + logger, + options.errorHandler + ); + } + const plugins: UnpluginOptions[] = []; plugins.push({ @@ -151,142 +157,10 @@ export function sentryUnpluginFactory() { ); } - const releaseName = await releaseNamePromise; - - // At this point, we either have determined a release or we have to bail - if (!releaseName) { - handleError( - new Error( - "Unable to determine a release name. Make sure to set the `release` option or use an environment that supports auto-detection https://docs.sentry.io/cli/releases/#creating-releases`" - ), - logger, - options.errorHandler - ); - } - transaction = sentryHub.startTransaction({ op: "function.plugin", name: "Sentry Bundler Plugin execution", }); - - releaseInjectionSpan = addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger, cli }, - "function.plugin.inject_release", - "Release injection" - ); - }, - - /** - * Responsible for returning the "sentry-release-injector" ID when we encounter it. We return the ID so load is - * called and we can "virtually" load the module. See `load` hook for more info on why it's virtual. - * - * We also record the id (i.e. absolute path) of any non-entrypoint. - * - * @param id For imports: The absolute path of the module to be imported. For entrypoints: The path the user defined as entrypoint - may also be relative. - * @param importer For imports: The absolute path of the module that imported this module. For entrypoints: `undefined`. - * @param options Additional information to use for making a resolving decision. - * @returns `"sentry-release-injector"` when the imported file is called `"sentry-release-injector"`. Otherwise returns `undefined`. - */ - resolveId(id, importer, { isEntry }) { - logger.debug('Called "resolveId":', { id, importer, isEntry }); - return undefined; - }, - - /** - * This hook determines whether we want to transform a module. In the sentry bundler plugin we want to transform every entrypoint - * unless configured otherwise with the `releaseInjectionTargets` option. - * - * @param id Always the absolute (fully resolved) path to the module. - * @returns `true` or `false` depending on whether we want to transform the module. For the sentry bundler plugin we only - * want to transform the release injector file. - */ - transformInclude(id) { - logger.debug('Called "transformInclude":', { id }); - - if (id.includes("sentry-release-injection-file")) { - return true; - } - - if (id.match(/\\node_modules\\|\/node_modules\//)) { - return false; // never transform 3rd party modules - } - - // We normalize the id because vite always passes `id` as a unix style path which causes problems when a user passes - // a windows style path to `releaseInjectionTargets` - const normalizedId = path.normalize(id); - - if (options.releaseInjectionTargets) { - // If there's an `releaseInjectionTargets` option transform (ie. inject the release varible) when the file path matches the option. - if (typeof options.releaseInjectionTargets === "function") { - return options.releaseInjectionTargets(normalizedId); - } - - return options.releaseInjectionTargets.some((entry) => { - if (entry instanceof RegExp) { - return entry.test(normalizedId); - } else { - const normalizedEntry = path.normalize(entry); - return normalizedId === normalizedEntry; - } - }); - } else { - const pathIsOrdinary = !normalizedId.includes("?") && !normalizedId.includes("#"); - - const pathHasAllowedFileEnding = ALLOWED_TRANSFORMATION_FILE_ENDINGS.some( - (allowedFileEnding) => normalizedId.endsWith(allowedFileEnding) - ); - - return pathIsOrdinary && pathHasAllowedFileEnding; - } - }, - - /** - * This hook is responsible for injecting the "sentry release injector" imoprt statement into each entrypoint unless - * configured otherwise with the `releaseInjectionTargets` option (logic for that is in the `transformInclude` hook). - * - * @param code Code of the file to transform. - * @param id Always the absolute (fully resolved) path to the module. - * @returns transformed code + source map - */ - async transform(code, id) { - logger.debug('Called "transform":', { id }); - - if (!options.injectRelease) { - return; - } - - // The MagicString library allows us to generate sourcemaps for the changes we make to the user code. - const ms = new MagicString(code); - - if (code.includes("_sentry_release_injection_file")) { - // Appending instead of prepending has less probability of mucking with user's source maps. - ms.append( - generateGlobalInjectorCode({ - release: await releaseNamePromise, - injectReleasesMap: options.injectReleasesMap, - injectBuildInformation: options._experiments.injectBuildInformation || false, - org: options.org, - project: options.project, - }) - ); - } else { - // Appending instead of prepending has less probability of mucking with user's source maps. - // Luckily import statements get hoisted to the top anyways. - // The import needs to be an absolute path because Rollup doesn't bundle stuff in `node_modules` by default when bundling CJS (unless the import path is absolute or the node-resolve-plugin is used). - ms.append(`;\nimport "${releaseInjectionFilePath.replace(/\\/g, "\\\\")}";`); - } - - if (unpluginMetaContext.framework === "esbuild") { - // esbuild + unplugin is buggy at the moment when we return an object with a `map` (sourcemap) property. - // Currently just returning a string here seems to work and even correctly sourcemaps the code we generate. - // However, other bundlers need the `map` property - return ms.toString(); - } else { - return { - code: ms.toString(), - map: ms.generateMap(), - }; - } }, /** @@ -312,8 +186,6 @@ export function sentryUnpluginFactory() { const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; - const releaseName = await releaseNamePromise; - let tmpUploadFolder: string | undefined; try { @@ -367,15 +239,19 @@ export function sentryUnpluginFactory() { ); tmpUploadFolder = await sourceFileUploadFolderPromise; - await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName); + await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName ?? ""); } - await createNewRelease(options, ctx, releaseName); - await cleanArtifacts(options, ctx, releaseName); - await uploadSourceMaps(options, ctx, releaseName); - await setCommits(options, ctx, releaseName); - await finalizeRelease(options, ctx, releaseName); - await addDeploy(options, ctx, releaseName); + if (releaseName) { + await createNewRelease(options, ctx, releaseName); + await cleanArtifacts(options, ctx, releaseName); + await uploadSourceMaps(options, ctx, releaseName); + await setCommits(options, ctx, releaseName); + await finalizeRelease(options, ctx, releaseName); + await addDeploy(options, ctx, releaseName); + } else { + logger.warn("No release value provided. Will not upload source maps."); + } } transaction?.setStatus("ok"); } catch (e: unknown) { @@ -505,6 +381,18 @@ export function sentryUnpluginFactory() { } } + if (options.injectRelease && releaseName) { + const injectionCode = generateGlobalInjectorCode({ + release: releaseName, + injectReleasesMap: options.injectReleasesMap, + injectBuildInformation: options._experiments.injectBuildInformation || false, + org: options.org, + project: options.project, + }); + + plugins.push(releaseInjectionPlugin(injectionCode)); + } + return plugins; }); } @@ -531,54 +419,6 @@ function handleError( } } -/** - * Generates code for the global injector which is responsible for setting the global - * `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables. - */ -function generateGlobalInjectorCode({ - release, - injectReleasesMap, - injectBuildInformation, - org, - project, -}: { - release: string; - injectReleasesMap: boolean; - injectBuildInformation: boolean; - org?: string; - project?: string; -}) { - // The code below is mostly ternary operators because it saves bundle size. - // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = ` - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:"${release}"};`; - - if (injectReleasesMap && project) { - const key = org ? `${project}@${org}` : project; - code += ` - _global.SENTRY_RELEASES=_global.SENTRY_RELEASES || {}; - _global.SENTRY_RELEASES["${key}"]={id:"${release}"};`; - } - - if (injectBuildInformation) { - const buildInfo = getBuildInformation(); - - code += ` - _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; - } - - return code; -} - export function getBuildInformation() { const packageJson = getPackageJson(); @@ -602,4 +442,57 @@ export function sentryCliBinaryExists(): boolean { return fs.existsSync(SentryCli.getPath()); } +export function createRollupReleaseInjectionHooks( + injectionCode: string +): Pick { + const virtualReleaseInjectionFileId = "\0sentry-release-injection-file"; + + return { + resolveId(id) { + if (id === virtualReleaseInjectionFileId) { + return { + id: virtualReleaseInjectionFileId, + external: false, + moduleSideEffects: true, + }; + } else { + return null; + } + }, + + load(id) { + if (id === virtualReleaseInjectionFileId) { + return injectionCode; + } else { + return null; + } + }, + + transform(code, id) { + if (id === virtualReleaseInjectionFileId) { + return null; + } + + if (id.match(/\\node_modules\\|\/node_modules\//)) { + return null; + } + + if (![".js", ".ts", ".jsx", ".tsx", ".mjs"].some((ending) => id.endsWith(ending))) { + return null; + } + + const ms = new MagicString(code); + + // Appending instead of prepending has less probability of mucking with user's source maps. + // Luckily import statements get hoisted to the top anyways. + ms.append(`\n\n;import "${virtualReleaseInjectionFileId}";`); + + return { + code: ms.toString(), + map: ms.generateMap(), + }; + }, + }; +} + export type { Options } from "./types"; diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 78567b3fde01..6ba83f0de578 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -33,6 +33,7 @@ type OptionalInternalOptions = Partial< | "configFile" | "headers" | "sourcemaps" + | "release" > >; @@ -79,7 +80,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { // Falling back to the empty string here b/c at a later point, we use // Sentry CLI to determine a release if none was specified via options // or env vars. In case we don't find one, we'll bail at that point. - release: userOptions.release ?? process.env["SENTRY_RELEASE"] ?? "", + release: userOptions.release ?? process.env["SENTRY_RELEASE"], // We technically don't need the URL for anything release-specific // but we want to make sure that we're only sending Sentry data // of SaaS customers. Hence we want to read it anyway. diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 2516cd4201b9..2b9b73c1c428 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -3,6 +3,7 @@ import path from "path"; import fs from "fs"; import os from "os"; import crypto from "crypto"; +import childProcess from "child_process"; /** * Checks whether the given input is already an array, and if it isn't, wraps it in one. @@ -186,3 +187,100 @@ export function stringToUUID(str: string): string { md5Hash.substring(20) ).toLowerCase(); } + +/** + * Tries to guess a release name based on environmental data. + */ +export function determineReleaseName(): string | undefined { + let gitRevision: string | undefined; + try { + gitRevision = childProcess.execSync("git rev-parse --short HEAD").toString().trim(); + } catch (e) { + // noop + } + + return ( + // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables + process.env["GITHUB_SHA"] || + // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata + process.env["COMMIT_REF"] || + // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables + process.env["CF_PAGES_COMMIT_SHA"] || + // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html + process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] || + // CircleCI - https://circleci.com/docs/2.0/env-vars/ + process.env["CIRCLE_SHA1"] || + // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables + process.env["VERCEL_GIT_COMMIT_SHA"] || + process.env["VERCEL_GITHUB_COMMIT_SHA"] || + process.env["VERCEL_GITLAB_COMMIT_SHA"] || + process.env["VERCEL_BITBUCKET_COMMIT_SHA"] || + // Zeit (now known as Vercel) + process.env["ZEIT_GITHUB_COMMIT_SHA"] || + process.env["ZEIT_GITLAB_COMMIT_SHA"] || + process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || + gitRevision + ); +} + +/** + * Generates code for the global injector which is responsible for setting the global + * `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables. + */ +export function generateGlobalInjectorCode({ + release, + injectReleasesMap, + injectBuildInformation, + org, + project, +}: { + release: string; + injectReleasesMap: boolean; + injectBuildInformation: boolean; + org?: string; + project?: string; +}) { + // The code below is mostly ternary operators because it saves bundle size. + // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) + let code = ` + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:"${release}"};`; + + if (injectReleasesMap && project) { + const key = org ? `${project}@${org}` : project; + code += ` + _global.SENTRY_RELEASES=_global.SENTRY_RELEASES || {}; + _global.SENTRY_RELEASES["${key}"]={id:"${release}"};`; + } + + if (injectBuildInformation) { + const buildInfo = getBuildInformation(); + + code += ` + _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; + } + + return code; +} + +function getBuildInformation() { + const packageJson = getPackageJson(); + + const { deps, depsVersions } = packageJson + ? getDependencies(packageJson) + : { deps: [], depsVersions: {} }; + + return { + deps, + depsVersions, + nodeVersion: parseMajorVersion(process.version), + }; +} diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index ad22879845eb..af0fc0f1c212 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -47,6 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { + "unplugin": "1.0.1", "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index b99463cb3526..c0c4a60c8b0e 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,6 +1,41 @@ import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import type { UnpluginOptions } from "unplugin"; -const sentryUnplugin = sentryUnpluginFactory(); +/** + * Esbuild specific plugin to inject release values. + */ +function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { + const pluginName = "sentry-esbuild-release-injection-plugin"; + const virtualReleaseInjectionFilePath = "_sentry-release-injection-file"; + + return { + name: pluginName, + + esbuild: { + setup({ initialOptions, onLoad }) { + initialOptions.inject = initialOptions.inject || []; + initialOptions.inject.push(virtualReleaseInjectionFilePath); + + onLoad( + { + filter: /_sentry-release-injection-file$/, + }, + () => { + return { + loader: "js", + pluginName, + contents: injectionCode, + }; + } + ); + }, + }, + }; +} + +const sentryUnplugin = sentryUnpluginFactory({ + releaseInjectionPlugin: esbuildReleaseInjectionPlugin, +}); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryEsbuildPlugin: (options: Options) => any = sentryUnplugin.esbuild; diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index a8d5283cfde1..48f1d7d4f0f1 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -1,4 +1,4 @@ -const { sentryEsbuildPlugin } = require("@sentry/bundler-plugin-core"); +const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); const { build } = require("esbuild"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index e87386d8933d..670858ddbee5 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack4 = require("webpack4"); -const { sentryWebpackPlugin } = require("@sentry/bundler-plugin-core"); +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 9aed03207cb3..c9e2cebf9683 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -1,7 +1,7 @@ // @ts-check const path = require("path"); const webpack5 = require("webpack"); -const { sentryWebpackPlugin } = require("@sentry/bundler-plugin-core"); +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); const placeHolderOptions = require("./config.json"); diff --git a/packages/playground/package.json b/packages/playground/package.json index 488e46206cb6..c67ec9371015 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "build:playground": "run-p build:rollup build:vite build:webpack4 build:webpack5 build:esbuild", - "build:rollup": "rollup --config rollup.config.js", + "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", @@ -26,7 +26,7 @@ "esbuild": "0.14.49", "express": "^4.18.1", "http-proxy": "^1.18.1", - "rollup": "2.77.0", + "rollup": "3.2.0", "vite": "3.0.0", "webpack": "5.74.0", "webpack4": "npm:webpack@4.46.0" diff --git a/packages/playground/rollup.config.js b/packages/playground/rollup.config.mjs similarity index 57% rename from packages/playground/rollup.config.js rename to packages/playground/rollup.config.mjs index 982688126bc4..0be8cac35e05 100644 --- a/packages/playground/rollup.config.js +++ b/packages/playground/rollup.config.mjs @@ -1,16 +1,14 @@ // @ts-check -import { sentryRollupPlugin } from "@sentry/bundler-plugin-core"; -import placeHolderOptions from "./config.json"; +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import fs from "fs"; const input = ["src/entrypoint1.js"]; -const extensions = [".js"]; - export default { input, plugins: [ sentryRollupPlugin({ - ...placeHolderOptions, + ...JSON.parse(fs.readFileSync("./config.json", "utf-8")), }), ], output: { diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index 2254398e3212..25e32a6bdbc2 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/bundler-plugin-core"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; import { defineConfig } from "vite"; import * as path from "path"; import placeHolderOptions from "./config.json"; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 5816205cd47b..7d75b51d4d2d 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -48,8 +48,12 @@ "lint": "eslint ./src ./test" }, "dependencies": { + "unplugin": "1.0.1", "@sentry/bundler-plugin-core": "0.7.2" }, + "peerDependencies": { + "rollup": ">=3.2.0" + }, "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-env": "7.18.2", diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 7026404b06e7..4824545d5719 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,6 +1,23 @@ -import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import { + sentryUnpluginFactory, + Options, + createRollupReleaseInjectionHooks, +} from "@sentry/bundler-plugin-core"; +import type { UnpluginOptions } from "unplugin"; -const sentryUnplugin = sentryUnpluginFactory(); +/** + * Rollup specific plugin to inject release values. + */ +function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { + return { + name: "sentry-rollup-release-injection-plugin", + rollup: createRollupReleaseInjectionHooks(injectionCode), + }; +} + +const sentryUnplugin = sentryUnpluginFactory({ + releaseInjectionPlugin: rollupReleaseInjectionPlugin, +}); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryRollupPlugin: (options: Options) => any = sentryUnplugin.rollup; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 446e061d77ab..ccd57f99c47f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -47,6 +47,7 @@ "lint": "eslint ./src ./test" }, "dependencies": { + "unplugin": "1.0.1", "@sentry/bundler-plugin-core": "0.7.2" }, "devDependencies": { diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index c848353416e1..76b98fa0fbd6 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,6 +1,21 @@ -import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import { + sentryUnpluginFactory, + Options, + createRollupReleaseInjectionHooks, +} from "@sentry/bundler-plugin-core"; +import { UnpluginOptions } from "unplugin"; -const sentryUnplugin = sentryUnpluginFactory(); +function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { + return { + name: "sentry-vite-release-injection-plugin", + enforce: "pre" as const, // need this so that vite runs the resolveId hook + vite: createRollupReleaseInjectionHooks(injectionCode), + }; +} + +const sentryUnplugin = sentryUnpluginFactory({ + releaseInjectionPlugin: viteReleaseInjectionPlugin, +}); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryVitePlugin: (options: Options) => any = sentryUnplugin.vite; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 477323d93776..5aa739049a19 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -47,7 +47,9 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2" + "unplugin": "1.0.1", + "@sentry/bundler-plugin-core": "0.7.2", + "webpack-4": "npm:webpack@^4" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 334597a41951..19ba9f9a9885 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,6 +1,42 @@ import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import { UnpluginOptions } from "unplugin"; -const sentryUnplugin = sentryUnpluginFactory(); +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore No typedefs for webpack 4 +import { BannerPlugin as Webpack4BannerPlugin } from "webpack-4"; + +function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { + const pluginName = "sentry-webpack-release-injection-plugin"; + + return { + name: pluginName, + + webpack(compiler) { + if (compiler?.webpack?.BannerPlugin) { + compiler.options.plugins.push( + new compiler.webpack.BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: injectionCode, + }) + ); + } else { + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new Webpack4BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: injectionCode, + }) + ); + } + }, + }; +} + +const sentryUnplugin = sentryUnpluginFactory({ + releaseInjectionPlugin: webpackReleaseInjectionPlugin, +}); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryWebpackPlugin: (options: Options) => any = sentryUnplugin.webpack; diff --git a/yarn.lock b/yarn.lock index 22f34040bb22..9706b1d9b294 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11776,25 +11776,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-sources@3.2.3, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== - -"webpack4@npm:webpack@4.46.0": +"webpack-4@npm:webpack@^4", "webpack4@npm:webpack@4.46.0": version "4.46.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== @@ -11823,6 +11805,24 @@ webpack-virtual-modules@^0.5.0: watchpack "^1.7.4" webpack-sources "^1.4.1" +webpack-sources@3.2.3, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + webpack@5.74.0: version "5.74.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" From 66f7971e80e3e1a89fd0d8ad29a1d4490f08fcc1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 11:14:09 +0200 Subject: [PATCH 180/640] ref(core): Extract debug ID injection into separate plugins (#230) --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/debug-id.ts | 33 --- packages/bundler-plugin-core/src/index.ts | 207 +++++++------------ packages/esbuild-plugin/jest.config.js | 3 + packages/esbuild-plugin/package.json | 4 +- packages/esbuild-plugin/src/index.ts | 39 +++- packages/rollup-plugin/src/index.ts | 12 +- packages/vite-plugin/src/index.ts | 9 + packages/webpack-plugin/jest.config.js | 3 + packages/webpack-plugin/package.json | 4 +- packages/webpack-plugin/src/index.ts | 36 +++- yarn.lock | 20 +- 12 files changed, 187 insertions(+), 186 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index c4cf9341a9ad..1f109f26429d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -57,8 +57,7 @@ "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", - "unplugin": "1.0.1", - "webpack-sources": "3.2.3" + "unplugin": "1.0.1" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/bundler-plugin-core/src/debug-id.ts b/packages/bundler-plugin-core/src/debug-id.ts index 16a9c0415d3b..1d6d4df70534 100644 --- a/packages/bundler-plugin-core/src/debug-id.ts +++ b/packages/bundler-plugin-core/src/debug-id.ts @@ -1,40 +1,7 @@ import * as fs from "fs"; -import MagicString from "magic-string"; import * as path from "path"; import * as util from "util"; import { Logger } from "./sentry/logger"; -import { stringToUUID } from "./utils"; - -// TODO: Find a more elaborate process to generate this. (Maybe with type checking and built-in minification) -const DEBUG_ID_INJECTOR_SNIPPET = - ';!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="__SENTRY_DEBUG_ID__",e._sentryDebugIdIdentifier="sentry-dbid-__SENTRY_DEBUG_ID__")}catch(e){}}();'; - -export function injectDebugIdSnippetIntoChunk(code: string, filename?: string) { - const debugId = stringToUUID(code); // generate a deterministic debug ID - const ms = new MagicString(code, { filename }); - - const codeToInject = DEBUG_ID_INJECTOR_SNIPPET.replace(/__SENTRY_DEBUG_ID__/g, debugId); - - // We need to be careful not to inject the snippet before any `"use strict";`s. - // As an additional complication `"use strict";`s may come after any number of comments. - const commentUseStrictRegex = - /^(?:\s*|\/\*(.|\r|\n)*?\*\/|\/\/.*?[\n\r])*(?:"use strict";|'use strict';)?/; - - if (code.match(commentUseStrictRegex)?.[0]) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.replace(commentUseStrictRegex, (match) => `${match}${codeToInject}`); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(codeToInject); - } - - return { - code: ms.toString(), - map: ms.generateMap(), - }; -} export async function prepareBundleForDebugIdUpload( bundleFilePath: string, diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 06bfaeb896cd..a6c3bbca114f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,31 +1,33 @@ +import SentryCli from "@sentry/cli"; +import { makeMain } from "@sentry/node"; +import { Span, Transaction } from "@sentry/types"; +import fs from "fs"; +import { glob } from "glob"; +import MagicString from "magic-string"; +import os from "os"; +import path from "path"; import { createUnplugin, UnpluginOptions } from "unplugin"; -import { Options, BuildContext } from "./types"; +import { promisify } from "util"; +import { prepareBundleForDebugIdUpload } from "./debug-id"; +import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; +import { getSentryCli } from "./sentry/cli"; +import { createLogger, Logger } from "./sentry/logger"; import { - createNewRelease, - cleanArtifacts, addDeploy, + cleanArtifacts, + createNewRelease, finalizeRelease, setCommits, - uploadSourceMaps, uploadDebugIdSourcemaps, + uploadSourceMaps, } from "./sentry/releasePipeline"; -import SentryCli from "@sentry/cli"; import { addPluginOptionInformationToHub, addSpanToTransaction, makeSentryClient, shouldSendTelemetry, } from "./sentry/telemetry"; -import { Span, Transaction } from "@sentry/types"; -import { createLogger, Logger } from "./sentry/logger"; -import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; -import { getSentryCli } from "./sentry/cli"; -import { makeMain } from "@sentry/node"; -import os from "os"; -import path from "path"; -import fs from "fs"; -import { createRequire } from "module"; -import { promisify } from "util"; +import { BuildContext, Options } from "./types"; import { determineReleaseName, generateGlobalInjectorCode, @@ -34,22 +36,10 @@ import { parseMajorVersion, stringToUUID, } from "./utils"; -import { glob } from "glob"; -import { injectDebugIdSnippetIntoChunk, prepareBundleForDebugIdUpload } from "./debug-id"; -import webpackSources from "webpack-sources"; -import type { sources } from "webpack"; -import type { Plugin } from "rollup"; -import MagicString from "magic-string"; - -// Use createRequire because esm doesn't like built-in require.resolve -const require = createRequire(import.meta.url); - -const esbuildDebugIdInjectionFilePath = require.resolve( - "@sentry/bundler-plugin-core/sentry-esbuild-debugid-injection-file" -); interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; + debugIdInjectionPlugin: () => UnpluginOptions; } /** * The sentry bundler plugin concerns itself with two things: @@ -78,7 +68,10 @@ interface SentryUnpluginFactoryOptions { * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ -export function sentryUnpluginFactory({ releaseInjectionPlugin }: SentryUnpluginFactoryOptions) { +export function sentryUnpluginFactory({ + releaseInjectionPlugin, + debugIdInjectionPlugin, +}: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions, unpluginMetaContext) => { const options = normalizeUserOptions(userOptions); @@ -279,108 +272,8 @@ export function sentryUnpluginFactory({ releaseInjectionPlugin }: SentryUnplugin level: "info", }); }, - rollup: { - renderChunk(code, chunk) { - if ( - options.sourcemaps?.assets && - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) - ) { - return injectDebugIdSnippetIntoChunk(code); - } else { - return null; // returning null means not modifying the chunk at all - } - }, - }, - vite: { - renderChunk(code, chunk) { - if ( - options.sourcemaps?.assets && - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) - ) { - return injectDebugIdSnippetIntoChunk(code); - } else { - return null; // returning null means not modifying the chunk at all - } - }, - }, - webpack(compiler) { - if (options.sourcemaps?.assets) { - // Cache inspired by https://github.com/webpack/webpack/pull/15454 - const cache = new WeakMap(); - - compiler.hooks.compilation.tap("sentry-plugin", (compilation) => { - compilation.hooks.optimizeChunkAssets.tap("sentry-plugin", (chunks) => { - chunks.forEach((chunk) => { - const fileNames = chunk.files; - fileNames.forEach((fileName) => { - const source = compilation.assets[fileName]; - - if (!source) { - logger.warn( - "Unable to access compilation assets. If you see this warning, it is likely a bug in the Sentry webpack plugin. Feel free to open an issue at https://github.com/getsentry/sentry-javascript-bundler-plugins with reproduction steps." - ); - return; - } - - compilation.updateAsset(fileName, (oldSource) => { - const cached = cache.get(oldSource); - if (cached) { - return cached; - } - - const originalCode = source.source().toString(); - - // The source map type is very annoying :( - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const originalSourceMap = source.map() as any; - - const { code: newCode, map: newSourceMap } = injectDebugIdSnippetIntoChunk( - originalCode, - fileName - ); - - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - newSourceMap.sources = originalSourceMap.sources as string[]; - - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - newSourceMap.sourcesContent = originalSourceMap.sourcesContent as string[]; - - const newSource = new webpackSources.SourceMapSource( - newCode, - fileName, - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - originalSourceMap, - originalCode, - newSourceMap, - false - ) as sources.Source; - - cache.set(oldSource, newSource); - - return newSource; - }); - }); - }); - }); - }); - } - }, }); - if (unpluginMetaContext.framework === "esbuild") { - if (options.sourcemaps?.assets) { - plugins.push({ - name: "sentry-esbuild-debug-id-plugin", - esbuild: { - setup({ initialOptions }) { - initialOptions.inject = initialOptions.inject || []; - initialOptions.inject.push(esbuildDebugIdInjectionFilePath); - }, - }, - }); - } - } - if (options.injectRelease && releaseName) { const injectionCode = generateGlobalInjectorCode({ release: releaseName, @@ -393,6 +286,10 @@ export function sentryUnpluginFactory({ releaseInjectionPlugin }: SentryUnplugin plugins.push(releaseInjectionPlugin(injectionCode)); } + if (options.sourcemaps?.assets) { + plugins.push(debugIdInjectionPlugin()); + } + return plugins; }); } @@ -442,13 +339,11 @@ export function sentryCliBinaryExists(): boolean { return fs.existsSync(SentryCli.getPath()); } -export function createRollupReleaseInjectionHooks( - injectionCode: string -): Pick { +export function createRollupReleaseInjectionHooks(injectionCode: string) { const virtualReleaseInjectionFileId = "\0sentry-release-injection-file"; return { - resolveId(id) { + resolveId(id: string) { if (id === virtualReleaseInjectionFileId) { return { id: virtualReleaseInjectionFileId, @@ -460,7 +355,7 @@ export function createRollupReleaseInjectionHooks( } }, - load(id) { + load(id: string) { if (id === virtualReleaseInjectionFileId) { return injectionCode; } else { @@ -468,7 +363,7 @@ export function createRollupReleaseInjectionHooks( } }, - transform(code, id) { + transform(code: string, id: string) { if (id === virtualReleaseInjectionFileId) { return null; } @@ -495,4 +390,46 @@ export function createRollupReleaseInjectionHooks( }; } +export function createRollupDebugIdInjectionHooks() { + return { + renderChunk(code: string, chunk: { fileName: string }) { + if ( + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + const debugId = stringToUUID(code); // generate a deterministic debug ID + const codeToInject = getDebugIdSnippet(debugId); + + const ms = new MagicString(code, { filename: chunk.fileName }); + + // We need to be careful not to inject the snippet before any `"use strict";`s. + // As an additional complication `"use strict";`s may come after any number of comments. + const commentUseStrictRegex = + // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. + /^(?:\s*|\/\*(?:.|\r|\n)*\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; + + if (code.match(commentUseStrictRegex)?.[0]) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.replace(commentUseStrictRegex, (match) => `${match}${codeToInject}`); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(codeToInject); + } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName }), + }; + } else { + return null; // returning null means not modifying the chunk at all + } + }, + }; +} + +export function getDebugIdSnippet(debugId: string): string { + return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; +} + export type { Options } from "./types"; diff --git a/packages/esbuild-plugin/jest.config.js b/packages/esbuild-plugin/jest.config.js index 160178bbd22f..a04cbd13b5c1 100644 --- a/packages/esbuild-plugin/jest.config.js +++ b/packages/esbuild-plugin/jest.config.js @@ -3,4 +3,7 @@ module.exports = { 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 af0fc0f1c212..4c83bb53f096 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -47,8 +47,9 @@ "lint": "eslint ./src ./test" }, "dependencies": { + "@sentry/bundler-plugin-core": "0.7.2", "unplugin": "1.0.1", - "@sentry/bundler-plugin-core": "0.7.2" + "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -62,6 +63,7 @@ "@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", "rimraf": "^3.0.2", diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index c0c4a60c8b0e..7ecb0f330253 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,9 +1,8 @@ -import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import { sentryUnpluginFactory, Options, getDebugIdSnippet } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; -/** - * Esbuild specific plugin to inject release values. - */ +import { v4 as uuidv4 } from "uuid"; + function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { const pluginName = "sentry-esbuild-release-injection-plugin"; const virtualReleaseInjectionFilePath = "_sentry-release-injection-file"; @@ -33,8 +32,40 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function esbuildDebugIdInjectionPlugin(): UnpluginOptions { + const pluginName = "sentry-esbuild-debug-id-injection-plugin"; + const virtualReleaseInjectionFilePath = "_sentry-debug-id-injection-file"; + + const debugIdSnippet = getDebugIdSnippet(uuidv4()); + + return { + name: pluginName, + + esbuild: { + setup({ initialOptions, onLoad }) { + initialOptions.inject = initialOptions.inject || []; + initialOptions.inject.push(virtualReleaseInjectionFilePath); + + onLoad( + { + filter: /_sentry-debug-id-injection-file$/, + }, + () => { + return { + loader: "js", + pluginName, + contents: debugIdSnippet, + }; + } + ); + }, + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: esbuildReleaseInjectionPlugin, + debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 4824545d5719..8e6da892eeef 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -2,12 +2,10 @@ import { sentryUnpluginFactory, Options, createRollupReleaseInjectionHooks, + createRollupDebugIdInjectionHooks, } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; -/** - * Rollup specific plugin to inject release values. - */ function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { return { name: "sentry-rollup-release-injection-plugin", @@ -15,8 +13,16 @@ function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function rollupDebugIdInjectionPlugin(): UnpluginOptions { + return { + name: "sentry-rollup-debug-id-injection-plugin", + rollup: createRollupDebugIdInjectionHooks(), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: rollupReleaseInjectionPlugin, + debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 76b98fa0fbd6..d956aef73353 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -2,6 +2,7 @@ import { sentryUnpluginFactory, Options, createRollupReleaseInjectionHooks, + createRollupDebugIdInjectionHooks, } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; @@ -13,8 +14,16 @@ function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function viteDebugIdInjectionPlugin(): UnpluginOptions { + return { + name: "sentry-vite-debug-id-injection-plugin", + vite: createRollupDebugIdInjectionHooks(), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: viteReleaseInjectionPlugin, + debugIdInjectionPlugin: viteDebugIdInjectionPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/webpack-plugin/jest.config.js b/packages/webpack-plugin/jest.config.js index 160178bbd22f..a04cbd13b5c1 100644 --- a/packages/webpack-plugin/jest.config.js +++ b/packages/webpack-plugin/jest.config.js @@ -3,4 +3,7 @@ module.exports = { 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 5aa739049a19..72e886b38010 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -47,8 +47,9 @@ "lint": "eslint ./src ./test" }, "dependencies": { - "unplugin": "1.0.1", "@sentry/bundler-plugin-core": "0.7.2", + "unplugin": "1.0.1", + "uuid": "^9.0.0", "webpack-4": "npm:webpack@^4" }, "devDependencies": { @@ -63,6 +64,7 @@ "@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", "rimraf": "^3.0.2", diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 19ba9f9a9885..6e942daeab2a 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,5 +1,6 @@ -import { sentryUnpluginFactory, Options } from "@sentry/bundler-plugin-core"; +import { getDebugIdSnippet, Options, sentryUnpluginFactory } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; +import { v4 as uuidv4 } from "uuid"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore No typedefs for webpack 4 @@ -34,12 +35,43 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function webpackDebugIdInjectionPlugin(): UnpluginOptions { + const pluginName = "sentry-webpack-debug-id-injection-plugin"; + const debugIdSnippet = getDebugIdSnippet(uuidv4()); + + return { + name: pluginName, + + webpack(compiler) { + if (compiler?.webpack?.BannerPlugin) { + compiler.options.plugins.push( + new compiler.webpack.BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: debugIdSnippet, + }) + ); + } else { + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new Webpack4BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: debugIdSnippet, + }) + ); + } + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: webpackReleaseInjectionPlugin, + debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryWebpackPlugin: (options: Options) => any = sentryUnplugin.webpack; -export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/yarn.lock b/yarn.lock index 9706b1d9b294..5eeac389641d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3051,6 +3051,11 @@ dependencies: source-map "^0.6.1" +"@types/uuid@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.1.tgz#98586dc36aee8dacc98cc396dbca8d0429647aa6" + integrity sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA== + "@types/webpack-sources@*": version "3.2.0" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" @@ -11630,6 +11635,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -11805,11 +11815,6 @@ webidl-conversions@^6.1.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack-sources@3.2.3, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -11818,6 +11823,11 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + webpack-virtual-modules@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" From cc7ad7d4e74c4f06f5647a644ff76936b9acba17 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 16:59:14 +0200 Subject: [PATCH 181/640] ref(core): Extract debug ID sourcemap upload into a separate plugin (#231) --- packages/bundler-plugin-core/src/index.ts | 72 ++++------------- .../debug-id-upload.ts} | 81 +++++++++++++++++-- .../src/sentry/releasePipeline.ts | 33 -------- 3 files changed, 90 insertions(+), 96 deletions(-) rename packages/bundler-plugin-core/src/{debug-id.ts => plugins/debug-id-upload.ts} (63%) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a6c3bbca114f..0231a66159b3 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -2,14 +2,10 @@ import SentryCli from "@sentry/cli"; import { makeMain } from "@sentry/node"; import { Span, Transaction } from "@sentry/types"; import fs from "fs"; -import { glob } from "glob"; import MagicString from "magic-string"; -import os from "os"; -import path from "path"; import { createUnplugin, UnpluginOptions } from "unplugin"; -import { promisify } from "util"; -import { prepareBundleForDebugIdUpload } from "./debug-id"; import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; +import { debugIdUploadPlugin } from "./plugins/debug-id-upload"; import { getSentryCli } from "./sentry/cli"; import { createLogger, Logger } from "./sentry/logger"; import { @@ -18,7 +14,6 @@ import { createNewRelease, finalizeRelease, setCommits, - uploadDebugIdSourcemaps, uploadSourceMaps, } from "./sentry/releasePipeline"; import { @@ -183,58 +178,6 @@ export function sentryUnpluginFactory({ try { if (!unpluginMetaContext.watchMode) { - if (options.sourcemaps?.assets) { - const debugIdChunkFilePaths = ( - await glob(options.sourcemaps.assets, { - absolute: true, - nodir: true, - ignore: options.sourcemaps.ignore, - }) - ).filter((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); - - if (unpluginMetaContext.framework === "esbuild") { - await Promise.all( - debugIdChunkFilePaths.map(async (debugIdChunkFilePath) => { - const chunkFileContents = await promisify(fs.readFile)( - debugIdChunkFilePath, - "utf-8" - ); - - const debugId = stringToUUID(chunkFileContents); - - const newChunkFileContents = chunkFileContents.replace( - /__SENTRY_DEBUG_ID__/g, - debugId - ); - - await promisify(fs.writeFile)( - debugIdChunkFilePath, - newChunkFileContents, - "utf-8" - ); - }) - ); - } - - const sourceFileUploadFolderPromise = promisify(fs.mkdtemp)( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - - await Promise.all( - debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - await sourceFileUploadFolderPromise, - String(chunkIndex), - logger - ); - }) - ); - - tmpUploadFolder = await sourceFileUploadFolderPromise; - await uploadDebugIdSourcemaps(options, ctx, tmpUploadFolder, releaseName ?? ""); - } - if (releaseName) { await createNewRelease(options, ctx, releaseName); await cleanArtifacts(options, ctx, releaseName); @@ -286,6 +229,19 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } + if (!unpluginMetaContext.watchMode && options.sourcemaps?.assets !== undefined) { + plugins.push( + debugIdUploadPlugin({ + assets: options.sourcemaps.assets, + ignore: options.sourcemaps.ignore, + dist: options.dist, + releaseName: releaseName, + logger: logger, + cliInstance: cli, + }) + ); + } + if (options.sourcemaps?.assets) { plugins.push(debugIdInjectionPlugin()); } diff --git a/packages/bundler-plugin-core/src/debug-id.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts similarity index 63% rename from packages/bundler-plugin-core/src/debug-id.ts rename to packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index 1d6d4df70534..add95273447a 100644 --- a/packages/bundler-plugin-core/src/debug-id.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -1,7 +1,78 @@ -import * as fs from "fs"; -import * as path from "path"; +import fs from "fs"; +import { glob } from "glob"; +import os from "os"; +import path from "path"; import * as util from "util"; -import { Logger } from "./sentry/logger"; +import { UnpluginOptions } from "unplugin"; +import { Logger } from "../sentry/logger"; +import { promisify } from "util"; +import { SentryCLILike } from "../sentry/cli"; + +interface DebugIdUploadPluginOptions { + logger: Logger; + cliInstance: SentryCLILike; + assets: string | string[]; + ignore?: string | string[]; + releaseName?: string; + dist?: string; +} + +export function debugIdUploadPlugin({ + assets, + ignore, + logger, + cliInstance, + releaseName, + dist, +}: DebugIdUploadPluginOptions): UnpluginOptions { + return { + name: "sentry-debug-id-upload-plugin", + async writeBundle() { + const tmpUploadFolder = await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + + try { + const debugIdChunkFilePaths = ( + await glob(assets, { + absolute: true, + nodir: true, + ignore: ignore, + }) + ).filter( + (debugIdChunkFilePath) => + debugIdChunkFilePath.endsWith(".js") || + debugIdChunkFilePath.endsWith(".mjs") || + debugIdChunkFilePath.endsWith(".cjs") + ); + + await Promise.all( + debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + tmpUploadFolder, + String(chunkIndex), + logger + ); + }) + ); + + await cliInstance.releases.uploadSourceMaps(releaseName ?? "", { + include: [ + { + paths: [tmpUploadFolder], + rewrite: false, + dist: dist, + }, + ], + useArtifactBundle: true, + }); + } finally { + void fs.promises.rm(tmpUploadFolder, { recursive: true, force: true }); + } + }, + }; +} export async function prepareBundleForDebugIdUpload( bundleFilePath: string, @@ -11,7 +82,7 @@ export async function prepareBundleForDebugIdUpload( ) { let bundleContent; try { - bundleContent = await util.promisify(fs.readFile)(bundleFilePath, "utf8"); + bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); } catch (e) { logger.warn(`Could not read bundle to determine debug ID and source map: ${bundleFilePath}`); return; @@ -24,7 +95,7 @@ export async function prepareBundleForDebugIdUpload( } bundleContent += `\n//# debugId=${debugId}`; - const writeSourceFilePromise = util.promisify(fs.writeFile)( + const writeSourceFilePromise = fs.promises.writeFile( path.join(uploadFolder, `${uniqueUploadName}.js`), bundleContent, "utf-8" diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts index 6fd5b21647ec..e5544d15add8 100644 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts @@ -86,39 +86,6 @@ export async function uploadSourceMaps( ctx.logger.info("Successfully uploaded source maps."); } -export async function uploadDebugIdSourcemaps( - options: NormalizedOptions, - ctx: BuildContext, - folderPathToUpload: string, - releaseName: string -): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.upload_debug_id_sourcemaps"); - ctx.logger.info("Uploading debug ID Sourcemaps."); - - // Since our internal include entries contain all top-level sourcemaps options, - // we only need to pass the include option here. - try { - await ctx.cli.releases.uploadSourceMaps(releaseName, { - include: [ - { - paths: [folderPathToUpload], - rewrite: false, - dist: options.dist, - }, - ], - useArtifactBundle: true, - }); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Uploading debug ID source maps failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully uploaded debug ID source maps." }); - ctx.logger.info("Successfully uploaded debug ID source maps."); -} - export async function setCommits( options: NormalizedOptions, ctx: BuildContext, From 18ba04586dace3217d1c9212c7fe6c1cbfd1a551 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 4 May 2023 12:31:54 +0200 Subject: [PATCH 182/640] ref(core): Extract release management into a separate plugin (#232) --- packages/bundler-plugin-core/src/index.ts | 160 ++++---------- .../src/plugins/release-management.ts | 66 ++++++ .../src/sentry/releasePipeline.ts | 181 ---------------- .../test/sentry/releasePipeline.test.ts | 200 ------------------ 4 files changed, 109 insertions(+), 498 deletions(-) create mode 100644 packages/bundler-plugin-core/src/plugins/release-management.ts delete mode 100644 packages/bundler-plugin-core/src/sentry/releasePipeline.ts delete mode 100644 packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0231a66159b3..946ce70aaa59 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,28 +1,19 @@ import SentryCli from "@sentry/cli"; import { makeMain } from "@sentry/node"; -import { Span, Transaction } from "@sentry/types"; import fs from "fs"; import MagicString from "magic-string"; import { createUnplugin, UnpluginOptions } from "unplugin"; -import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; +import { normalizeUserOptions, validateOptions } from "./options-mapping"; import { debugIdUploadPlugin } from "./plugins/debug-id-upload"; +import { releaseManagementPlugin } from "./plugins/release-management"; import { getSentryCli } from "./sentry/cli"; -import { createLogger, Logger } from "./sentry/logger"; -import { - addDeploy, - cleanArtifacts, - createNewRelease, - finalizeRelease, - setCommits, - uploadSourceMaps, -} from "./sentry/releasePipeline"; +import { createLogger } from "./sentry/logger"; import { addPluginOptionInformationToHub, - addSpanToTransaction, makeSentryClient, shouldSendTelemetry, } from "./sentry/telemetry"; -import { BuildContext, Options } from "./types"; +import { Options } from "./types"; import { determineReleaseName, generateGlobalInjectorCode, @@ -72,7 +63,7 @@ export function sentryUnpluginFactory({ const allowedToSendTelemetryPromise = shouldSendTelemetry(options); - const { sentryHub, sentryClient } = makeSentryClient( + const { sentryHub } = makeSentryClient( "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", allowedToSendTelemetryPromise, options.project @@ -93,25 +84,34 @@ export function sentryUnpluginFactory({ debug: options.debug, }); + function handleError(unknownError: unknown) { + if (unknownError instanceof Error) { + logger.error(unknownError.message); + } else { + logger.error(String(unknownError)); + } + + if (options.errorHandler) { + if (unknownError instanceof Error) { + options.errorHandler(unknownError); + } else { + options.errorHandler(new Error("An unknown error occured")); + } + } else { + throw unknownError; + } + } + if (!validateOptions(options, logger)) { - handleError( - new Error("Options were not set correctly. See output above for more details."), - logger, - options.errorHandler - ); + handleError(new Error("Options were not set correctly. See output above for more details.")); } const cli = getSentryCli(options, logger); - let transaction: Transaction | undefined; - let releaseInjectionSpan: Span | undefined; - const releaseName = options.release ?? determineReleaseName(); if (!releaseName) { handleError( - new Error("Unable to determine a release name. Please set the `release` option."), - logger, - options.errorHandler + new Error("Unable to determine a release name. Please set the `release` option.") ); } @@ -144,79 +144,27 @@ export function sentryUnpluginFactory({ "Running Sentry plugin from within a `node_modules` folder. Some features may not work." ); } - - transaction = sentryHub.startTransaction({ - op: "function.plugin", - name: "Sentry Bundler Plugin execution", - }); - }, - - /** - * Responsible for executing the sentry release creation pipeline (i.e. creating a release on - * Sentry.io, uploading sourcemaps, associating commits and deploys and finalizing the release) - */ - async writeBundle() { - logger.debug('Called "writeBundle"'); - - releaseInjectionSpan?.finish(); - const releasePipelineSpan = - transaction && - addSpanToTransaction( - { hub: sentryHub, parentSpan: transaction, logger, cli }, - "function.plugin.release", - "Release pipeline" - ); - - sentryHub.addBreadcrumb({ - category: "writeBundle:start", - level: "info", - }); - - const ctx: BuildContext = { hub: sentryHub, parentSpan: releasePipelineSpan, logger, cli }; - - let tmpUploadFolder: string | undefined; - - try { - if (!unpluginMetaContext.watchMode) { - if (releaseName) { - await createNewRelease(options, ctx, releaseName); - await cleanArtifacts(options, ctx, releaseName); - await uploadSourceMaps(options, ctx, releaseName); - await setCommits(options, ctx, releaseName); - await finalizeRelease(options, ctx, releaseName); - await addDeploy(options, ctx, releaseName); - } else { - logger.warn("No release value provided. Will not upload source maps."); - } - } - transaction?.setStatus("ok"); - } catch (e: unknown) { - transaction?.setStatus("cancelled"); - sentryHub.addBreadcrumb({ - level: "error", - message: "Error during writeBundle", - }); - handleError(e, logger, options.errorHandler); - } finally { - if (tmpUploadFolder) { - fs.rm(tmpUploadFolder, { recursive: true, force: true }, () => { - // We don't care if this errors - }); - } - releasePipelineSpan?.finish(); - transaction?.finish(); - await sentryClient.flush().then(null, () => { - logger.warn("Sending of telemetry failed"); - }); - } - - sentryHub.addBreadcrumb({ - category: "writeBundle:finish", - level: "info", - }); }, }); + if (releaseName) { + plugins.push( + releaseManagementPlugin({ + logger, + cliInstance: cli, + releaseName: releaseName, + shouldCleanArtifacts: options.cleanArtifacts, + shouldUploadSourceMaps: options.uploadSourceMaps, + shouldFinalizeRelease: options.finalize, + include: options.include, + setCommitsOption: options.setCommits, + deployOptions: options.deploy, + dist: options.dist, + handleError, + }) + ); + } + if (options.injectRelease && releaseName) { const injectionCode = generateGlobalInjectorCode({ release: releaseName, @@ -250,28 +198,6 @@ export function sentryUnpluginFactory({ }); } -function handleError( - unknownError: unknown, - logger: Logger, - errorHandler: NormalizedOptions["errorHandler"] -) { - if (unknownError instanceof Error) { - logger.error(unknownError.message); - } else { - logger.error(String(unknownError)); - } - - if (errorHandler) { - if (unknownError instanceof Error) { - errorHandler(unknownError); - } else { - errorHandler(new Error("An unknown error occured")); - } - } else { - throw unknownError; - } -} - export function getBuildInformation() { const packageJson = getPackageJson(); diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts new file mode 100644 index 000000000000..e95c4e19217e --- /dev/null +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -0,0 +1,66 @@ +import { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; +import { UnpluginOptions } from "unplugin"; +import { InternalIncludeEntry } from "../options-mapping"; +import { SentryCLILike } from "../sentry/cli"; +import { Logger } from "../sentry/logger"; + +interface DebugIdUploadPluginOptions { + logger: Logger; + cliInstance: SentryCLILike; + releaseName: string; + shouldCleanArtifacts: boolean; + shouldUploadSourceMaps: boolean; + shouldFinalizeRelease: boolean; + include: InternalIncludeEntry[]; + setCommitsOption?: SentryCliCommitsOptions; + deployOptions?: SentryCliNewDeployOptions; + dist?: string; + handleError: (error: unknown) => void; +} + +export function releaseManagementPlugin({ + cliInstance, + releaseName, + include, + dist, + setCommitsOption, + shouldCleanArtifacts, + shouldUploadSourceMaps, + shouldFinalizeRelease, + deployOptions, + handleError, +}: DebugIdUploadPluginOptions): UnpluginOptions { + return { + name: "sentry-debug-id-upload-plugin", + async writeBundle() { + try { + await cliInstance.releases.new(releaseName); + + if (shouldCleanArtifacts) { + await cliInstance.releases.execute( + ["releases", "files", releaseName, "delete", "--all"], + true + ); + } + + if (shouldUploadSourceMaps) { + await cliInstance.releases.uploadSourceMaps(releaseName, { include, dist }); + } + + if (setCommitsOption) { + await cliInstance.releases.setCommits(releaseName, setCommitsOption); + } + + if (shouldFinalizeRelease) { + await cliInstance.releases.finalize(releaseName); + } + + if (deployOptions) { + await cliInstance.releases.newDeploy(releaseName, deployOptions); + } + } catch (e) { + handleError(e); + } + }, + }; +} diff --git a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts b/packages/bundler-plugin-core/src/sentry/releasePipeline.ts deleted file mode 100644 index e5544d15add8..000000000000 --- a/packages/bundler-plugin-core/src/sentry/releasePipeline.ts +++ /dev/null @@ -1,181 +0,0 @@ -// Build a facade that exposes necessary sentry functionality -// Idea: We start out with Sentry-CLI and replace the cli-commands one by one afterwards. -// Goal: eventually replace everything sentry-cli does with "native" code here -// Reason: We don't want to depend on a binary that gets downloaded in a postinstall hook -// - no fixed version -// - huge download -// - unnecessary functionality - -import { NormalizedOptions } from "../options-mapping"; -import { BuildContext } from "../types"; -import { addSpanToTransaction } from "./telemetry"; - -export async function createNewRelease( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - const span = addSpanToTransaction(ctx, "function.plugin.create_release"); - - try { - await ctx.cli.releases.new(releaseName); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Creating new release failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully created release." }); - ctx.logger.info("Successfully created release."); -} - -export async function cleanArtifacts( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - if (!options.cleanArtifacts) { - ctx.logger.debug("Skipping artifact cleanup."); - return; - } - - const span = addSpanToTransaction(ctx, "function.plugin.clean_artifacts"); - - try { - await ctx.cli.releases.execute(["releases", "files", releaseName, "delete", "--all"], true); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Deleting release files failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully cleaned previous artifacts." }); - ctx.logger.info("Successfully cleaned previous artifacts."); -} - -export async function uploadSourceMaps( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - if (!options.uploadSourceMaps) { - ctx.logger.debug("Skipping source maps upload."); - return; - } - - const span = addSpanToTransaction(ctx, "function.plugin.upload_sourcemaps"); - ctx.logger.info("Uploading Sourcemaps."); - - // Since our internal include entries contain all top-level sourcemaps options, - // we only need to pass the include option here. - try { - await ctx.cli.releases.uploadSourceMaps(releaseName, { - include: options.include, - dist: options.dist, - }); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Uploading source maps failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully uploaded source maps." }); - ctx.logger.info("Successfully uploaded source maps."); -} - -export async function setCommits( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - if (!options.setCommits) { - ctx.logger.debug("Skipping setting commits to release."); - return; - } - - const span = addSpanToTransaction(ctx, "function.plugin.set_commits"); - - const { auto, repo, commit, previousCommit, ignoreMissing, ignoreEmpty } = options.setCommits; - - try { - await ctx.cli.releases.setCommits(releaseName, { - commit, - previousCommit, - repo, - auto, - ignoreMissing, - ignoreEmpty, - }); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Setting commits failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.logger.info("Successfully set commits."); -} - -export async function finalizeRelease( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - if (!options.finalize) { - ctx.hub.addBreadcrumb({ level: "info", message: "Skipping release finalization." }); - ctx.logger.debug("Skipping release finalization."); - return; - } - - const span = addSpanToTransaction(ctx, "function.plugin.finalize_release"); - - try { - await ctx.cli.releases.finalize(releaseName); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Finalizing release failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully finalized release." }); - ctx.logger.info("Successfully finalized release."); -} - -export async function addDeploy( - options: NormalizedOptions, - ctx: BuildContext, - releaseName: string -): Promise { - if (!options.deploy) { - ctx.hub.addBreadcrumb({ level: "info", message: "Skipping adding deploy info to release." }); - ctx.logger.debug("Skipping adding deploy info to release."); - return; - } - - const span = addSpanToTransaction(ctx, "function.plugin.deploy"); - - const { env, started, finished, time, name, url } = options.deploy; - - try { - await ctx.cli.releases.newDeploy(releaseName, { - env, - started, - finished, - time, - name, - url, - }); - } catch (e) { - ctx.hub.captureException(new Error("CLI Error: Adding deploy info failed")); - throw e; - } finally { - span?.finish(); - } - - ctx.hub.addBreadcrumb({ level: "info", message: "Successfully added deploy." }); - ctx.logger.info("Successfully added deploy."); -} diff --git a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts b/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts deleted file mode 100644 index 05f0e4fa7ee5..000000000000 --- a/packages/bundler-plugin-core/test/sentry/releasePipeline.test.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; -import { - addDeploy, - cleanArtifacts, - createNewRelease, - finalizeRelease, - setCommits, - uploadSourceMaps, -} from "../../src/sentry/releasePipeline"; -import { BuildContext } from "../../src/types"; - -const mockedAddSpanToTxn = jest.fn(); - -jest.mock("../../src/sentry/telemetry", () => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const original = jest.requireActual("../../src/sentry/telemetry"); - - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return { - ...original, - addSpanToTransaction: (ctx: unknown, op: string) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return mockedAddSpanToTxn(ctx, op); - }, - }; -}); - -describe("Release Pipeline", () => { - const mockedLogger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - }; - - const mockedHub = { - addBreadcrumb: jest.fn(), - }; - - const mockedCLI = { - releases: { - new: jest.fn(), - execute: jest.fn(), - uploadSourceMaps: jest.fn(), - setCommits: jest.fn(), - finalize: jest.fn(), - newDeploy: jest.fn(), - }, - }; - - const mockedChildSpan = { finish: jest.fn() }; - mockedAddSpanToTxn.mockImplementation(() => mockedChildSpan); - - const ctx = { cli: mockedCLI, logger: mockedLogger, hub: mockedHub }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - describe("createNewRelease", () => { - it("makes a call to Sentry CLI's releases creation command", async () => { - await createNewRelease({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.new).toHaveBeenCalledWith("1.0.0"); - expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.create_release"); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); - - describe("cleanArtifacts", () => { - it("doest do anything if cleanArtifacts is not true", async () => { - await cleanArtifacts({} as NormalizedOptions, ctx as unknown as BuildContext, "my-release"); - - expect(mockedCLI.releases.execute).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); - expect(mockedChildSpan.finish).not.toHaveBeenCalled(); - }); - - it("makes a call to Sentry CLI's artifact removal command if `cleanArtifacts` is set", async () => { - await cleanArtifacts( - { cleanArtifacts: true } as NormalizedOptions, - ctx as unknown as BuildContext, - "1.0.0" - ); - - expect(mockedCLI.releases.execute).toHaveBeenCalledWith( - ["releases", "files", "1.0.0", "delete", "--all"], - true - ); - expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.clean_artifacts"); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); - - describe("uploadSourceMaps", () => { - it("doesn't do anything if uploadSourceMaps option is `false`", async () => { - const options = normalizeUserOptions({ - uploadSourceMaps: false, - include: [{ paths: ["dist"] }], - }); - - await uploadSourceMaps(options, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.uploadSourceMaps).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); - expect(mockedChildSpan.finish).not.toHaveBeenCalled(); - }); - - it("makes a call to Sentry CLI's sourcemaps upload command", async () => { - const options = normalizeUserOptions({ - include: [{ paths: ["dist"] }], - }); - - await uploadSourceMaps(options, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.uploadSourceMaps).toHaveBeenCalledWith( - "1.0.0", - expect.objectContaining({ - include: [expect.objectContaining({ paths: ["dist"] })], - }) - ); - expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.upload_sourcemaps"); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); - - describe("setCommits", () => { - it("doesn't do anything if `setCommits` option is not specified", async () => { - await setCommits({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.setCommits).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); - expect(mockedChildSpan.finish).not.toHaveBeenCalled(); - }); - - it("makes a call to Sentry CLI if the correct options are specified", async () => { - await setCommits( - { setCommits: { auto: true } } as NormalizedOptions, - ctx as unknown as BuildContext, - "1.0.0" - ); - - expect(mockedCLI.releases.setCommits).toHaveBeenCalledWith("1.0.0", { auto: true }); - expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.set_commits"); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); - - describe("finalizeRelease", () => { - it("doesn't do anything if `finalize` is not set", async () => { - await finalizeRelease({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.finalize).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); - expect(mockedChildSpan.finish).not.toHaveBeenCalled(); - }); - - it("makes a call to Sentry CLI's release finalization command if `finalize` is true", async () => { - await finalizeRelease( - { finalize: true } as NormalizedOptions, - ctx as unknown as BuildContext, - "1.0.0" - ); - - expect(mockedCLI.releases.finalize).toHaveBeenCalledWith("1.0.0"); - expect(mockedAddSpanToTxn).toHaveBeenCalledWith(ctx, "function.plugin.finalize_release"); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); - - describe("addDeploy", () => { - it("doesn't do anything if `deploy` option is not specified", async () => { - await addDeploy({} as NormalizedOptions, ctx as unknown as BuildContext, "1.0.0"); - - expect(mockedCLI.releases.newDeploy).not.toHaveBeenCalled(); - expect(mockedAddSpanToTxn).not.toHaveBeenCalled(); - expect(mockedChildSpan.finish).not.toHaveBeenCalled(); - }); - - it("makes a call to Sentry CLI if the correct options are specified", async () => { - const deployOptions = { - env: "production", - started: 0, - finished: 10, - name: "myDeployment", - url: "https://my-deploy-server.com", - }; - - await addDeploy( - { deploy: deployOptions } as NormalizedOptions, - ctx as unknown as BuildContext, - "1.0.0" - ); - - expect(mockedCLI.releases.newDeploy).toHaveBeenCalledWith("1.0.0", deployOptions); - expect(mockedAddSpanToTxn).toHaveBeenCalled(); - expect(mockedChildSpan.finish).toHaveBeenCalled(); - }); - }); -}); From f8af9629081b1a496669506300ebf342b23474e2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 4 May 2023 16:26:54 +0200 Subject: [PATCH 183/640] ref(core): Extract telemetry into a separate plugin (#234) --- packages/bundler-plugin-core/src/index.ts | 127 ++++++++---------- .../src/plugins/debug-id-upload.ts | 26 +++- .../src/plugins/release-management.ts | 13 +- .../src/plugins/telemetry.ts | 33 +++++ .../src/sentry/telemetry.ts | 53 ++------ .../test/sentry/telemetry.test.ts | 20 +-- 6 files changed, 140 insertions(+), 132 deletions(-) create mode 100644 packages/bundler-plugin-core/src/plugins/telemetry.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 946ce70aaa59..a450cb2e3064 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,18 +1,14 @@ import SentryCli from "@sentry/cli"; -import { makeMain } from "@sentry/node"; import fs from "fs"; import MagicString from "magic-string"; import { createUnplugin, UnpluginOptions } from "unplugin"; import { normalizeUserOptions, validateOptions } from "./options-mapping"; import { debugIdUploadPlugin } from "./plugins/debug-id-upload"; import { releaseManagementPlugin } from "./plugins/release-management"; +import { telemetryPlugin } from "./plugins/telemetry"; import { getSentryCli } from "./sentry/cli"; import { createLogger } from "./sentry/logger"; -import { - addPluginOptionInformationToHub, - makeSentryClient, - shouldSendTelemetry, -} from "./sentry/telemetry"; +import { createSentryInstance, allowedToSendTelemetry } from "./sentry/telemetry"; import { Options } from "./types"; import { determineReleaseName, @@ -27,6 +23,7 @@ interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: () => UnpluginOptions; } + /** * The sentry bundler plugin concerns itself with two things: * - Release injection @@ -61,22 +58,16 @@ export function sentryUnpluginFactory({ return createUnplugin((userOptions, unpluginMetaContext) => { const options = normalizeUserOptions(userOptions); - const allowedToSendTelemetryPromise = shouldSendTelemetry(options); - - const { sentryHub } = makeSentryClient( - "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", - allowedToSendTelemetryPromise, - options.project + const shouldSendTelemetry = allowedToSendTelemetry(options); + const { sentryHub, sentryClient } = createSentryInstance( + options, + shouldSendTelemetry, + unpluginMetaContext.framework ); - - addPluginOptionInformationToHub(options, sentryHub, unpluginMetaContext.framework); - - //TODO: This call is problematic because as soon as we set our hub as the current hub - // we might interfere with other plugins that use Sentry. However, for now, we'll - // leave it in because without it, we can't get distributed traces (which are pretty nice) - // Let's keep it until someone complains about interference. - // The ideal solution would be a code change in the JS SDK but it's not a straight-forward fix. - makeMain(sentryHub); + const pluginExecutionTransaction = sentryHub.startTransaction({ + name: "Sentry Bundler Plugin execution", + }); + sentryHub.getScope().setSpan(pluginExecutionTransaction); const logger = createLogger({ prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, @@ -84,12 +75,8 @@ export function sentryUnpluginFactory({ debug: options.debug, }); - function handleError(unknownError: unknown) { - if (unknownError instanceof Error) { - logger.error(unknownError.message); - } else { - logger.error(String(unknownError)); - } + function handleRecoverableError(unknownError: unknown) { + pluginExecutionTransaction.setStatus("internal_error"); if (options.errorHandler) { if (unknownError instanceof Error) { @@ -103,49 +90,52 @@ export function sentryUnpluginFactory({ } if (!validateOptions(options, logger)) { - handleError(new Error("Options were not set correctly. See output above for more details.")); + handleRecoverableError( + new Error("Options were not set correctly. See output above for more details.") + ); } const cli = getSentryCli(options, logger); const releaseName = options.release ?? determineReleaseName(); if (!releaseName) { - handleError( + handleRecoverableError( new Error("Unable to determine a release name. Please set the `release` option.") ); } + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + const plugins: UnpluginOptions[] = []; - plugins.push({ - name: "sentry-plugin", - enforce: "pre", // needed for Vite to call resolveId hook - - /** - * Responsible for starting the plugin execution transaction and the release injection span - */ - async buildStart() { - logger.debug("Called 'buildStart'"); - - const isAllowedToSendToSendTelemetry = await allowedToSendTelemetryPromise; - if (isAllowedToSendToSendTelemetry) { - logger.info("Sending error and performance telemetry data to Sentry."); - logger.info("To disable telemetry, set `options.telemetry` to `false`."); - sentryHub.addBreadcrumb({ level: "info", message: "Telemetry enabled." }); - } else { - sentryHub.addBreadcrumb({ - level: "info", - message: "Telemetry disabled. This should never show up in a Sentry event.", - }); - } + plugins.push( + telemetryPlugin({ + pluginExecutionTransaction, + logger, + shouldSendTelemetry, + sentryClient, + }) + ); - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { - logger.warn( - "Running Sentry plugin from within a `node_modules` folder. Some features may not work." - ); - } - }, - }); + if (options.injectRelease && releaseName) { + const injectionCode = generateGlobalInjectorCode({ + release: releaseName, + injectReleasesMap: options.injectReleasesMap, + injectBuildInformation: options._experiments.injectBuildInformation || false, + org: options.org, + project: options.project, + }); + + plugins.push(releaseInjectionPlugin(injectionCode)); + } + + if (options.sourcemaps?.assets) { + plugins.push(debugIdInjectionPlugin()); + } if (releaseName) { plugins.push( @@ -160,23 +150,13 @@ export function sentryUnpluginFactory({ setCommitsOption: options.setCommits, deployOptions: options.deploy, dist: options.dist, - handleError, + handleRecoverableError: handleRecoverableError, + sentryHub, + sentryClient, }) ); } - if (options.injectRelease && releaseName) { - const injectionCode = generateGlobalInjectorCode({ - release: releaseName, - injectReleasesMap: options.injectReleasesMap, - injectBuildInformation: options._experiments.injectBuildInformation || false, - org: options.org, - project: options.project, - }); - - plugins.push(releaseInjectionPlugin(injectionCode)); - } - if (!unpluginMetaContext.watchMode && options.sourcemaps?.assets !== undefined) { plugins.push( debugIdUploadPlugin({ @@ -186,14 +166,13 @@ export function sentryUnpluginFactory({ releaseName: releaseName, logger: logger, cliInstance: cli, + handleRecoverableError: handleRecoverableError, + sentryHub, + sentryClient, }) ); } - if (options.sourcemaps?.assets) { - plugins.push(debugIdInjectionPlugin()); - } - return plugins; }); } diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index add95273447a..e7524404c685 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -7,6 +7,7 @@ import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { promisify } from "util"; import { SentryCLILike } from "../sentry/cli"; +import { Hub, NodeClient } from "@sentry/node"; interface DebugIdUploadPluginOptions { logger: Logger; @@ -15,6 +16,9 @@ interface DebugIdUploadPluginOptions { ignore?: string | string[]; releaseName?: string; dist?: string; + handleRecoverableError: (error: unknown) => void; + sentryHub: Hub; + sentryClient: NodeClient; } export function debugIdUploadPlugin({ @@ -24,15 +28,21 @@ export function debugIdUploadPlugin({ cliInstance, releaseName, dist, + handleRecoverableError, + sentryHub, + sentryClient, }: DebugIdUploadPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", async writeBundle() { - const tmpUploadFolder = await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - + let folderToCleanUp: string | undefined; try { + const tmpUploadFolder = await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + + folderToCleanUp = tmpUploadFolder; + const debugIdChunkFilePaths = ( await glob(assets, { absolute: true, @@ -67,8 +77,14 @@ export function debugIdUploadPlugin({ ], useArtifactBundle: true, }); + } catch (e) { + sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); + await sentryClient.flush(); + handleRecoverableError(e); } finally { - void fs.promises.rm(tmpUploadFolder, { recursive: true, force: true }); + if (folderToCleanUp) { + void fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); + } } }, }; diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index e95c4e19217e..e6525467863c 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -1,4 +1,5 @@ import { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; +import { Hub, NodeClient } from "@sentry/node"; import { UnpluginOptions } from "unplugin"; import { InternalIncludeEntry } from "../options-mapping"; import { SentryCLILike } from "../sentry/cli"; @@ -15,7 +16,9 @@ interface DebugIdUploadPluginOptions { setCommitsOption?: SentryCliCommitsOptions; deployOptions?: SentryCliNewDeployOptions; dist?: string; - handleError: (error: unknown) => void; + handleRecoverableError: (error: unknown) => void; + sentryHub: Hub; + sentryClient: NodeClient; } export function releaseManagementPlugin({ @@ -28,7 +31,9 @@ export function releaseManagementPlugin({ shouldUploadSourceMaps, shouldFinalizeRelease, deployOptions, - handleError, + handleRecoverableError, + sentryHub, + sentryClient, }: DebugIdUploadPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", @@ -59,7 +64,9 @@ export function releaseManagementPlugin({ await cliInstance.releases.newDeploy(releaseName, deployOptions); } } catch (e) { - handleError(e); + sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook'); + await sentryClient.flush(); + handleRecoverableError(e); } }, }; diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts new file mode 100644 index 000000000000..bd0403395a28 --- /dev/null +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -0,0 +1,33 @@ +import { NodeClient, Transaction } from "@sentry/node"; +import { UnpluginOptions } from "unplugin"; +import { Logger } from "../sentry/logger"; + +interface TelemetryPluginOptions { + sentryClient: NodeClient; + pluginExecutionTransaction: Transaction; + shouldSendTelemetry: Promise; + logger: Logger; +} + +export function telemetryPlugin({ + sentryClient, + pluginExecutionTransaction, + shouldSendTelemetry, + logger, +}: TelemetryPluginOptions): UnpluginOptions { + return { + name: "sentry-telemetry-plugin", + buildStart() { + void shouldSendTelemetry.then(() => { + logger.info( + "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." + ); + }); + pluginExecutionTransaction.startTimestamp = Date.now() / 1000; + }, + async writeBundle() { + pluginExecutionTransaction.finish(); + await sentryClient.flush(); + }, + }; +} diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 9193f35295ca..543e0c50e06d 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -1,26 +1,20 @@ import SentryCli from "@sentry/cli"; -import { defaultStackParser, Hub, makeNodeTransport, NodeClient, Span } from "@sentry/node"; +import { defaultStackParser, Hub, makeNodeTransport, NodeClient } from "@sentry/node"; import { NormalizedOptions, SENTRY_SAAS_URL } from "../options-mapping"; -import { BuildContext } from "../types"; const SENTRY_SAAS_HOSTNAME = "sentry.io"; -export function makeSentryClient( - dsn: string, - allowedToSendTelemetryPromise: Promise, - userProject: string | undefined -): { sentryHub: Hub; sentryClient: NodeClient } { +export function createSentryInstance( + options: NormalizedOptions, + shouldSendTelemetry: Promise, + bundler: string +) { const client = new NodeClient({ - dsn, + dsn: "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", tracesSampleRate: 1, sampleRate: 1, - // We're also sending the user project in dist because it is an indexed fieldso we can use this data effectively in - // a dashboard. - // Yes, this is slightly abusing the purpose of this field. - dist: userProject, - release: __PACKAGE_VERSION__, integrations: [], tracePropagationTargets: ["sentry.io/api"], @@ -48,8 +42,7 @@ export function makeSentryClient( return { flush: (timeout) => nodeTransport.flush(timeout), send: async (request) => { - const isAllowedToSend = await allowedToSendTelemetryPromise; - if (isAllowedToSend) { + if (await shouldSendTelemetry) { return nodeTransport.send(request); } else { return undefined; @@ -61,30 +54,12 @@ export function makeSentryClient( const hub = new Hub(client); - return { sentryClient: client, sentryHub: hub }; -} + setTelemetryDataOnHub(options, hub, bundler); -/** - * Adds a span to the passed parentSpan or to the current transaction that's on the passed hub's scope. - */ -export function addSpanToTransaction( - ctx: BuildContext, - op?: string, - description?: string -): Span | undefined { - const { hub, parentSpan } = ctx; - const actualSpan = parentSpan || hub.getScope()?.getTransaction(); - const span = actualSpan?.startChild({ op, description }); - hub.configureScope((scope) => scope.setSpan(span)); - - return span; + return { sentryHub: hub, sentryClient: client }; } -export function addPluginOptionInformationToHub( - options: NormalizedOptions, - hub: Hub, - bundler: "rollup" | "webpack" | "vite" | "esbuild" -) { +export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bundler: string) { const { org, project, @@ -140,7 +115,7 @@ export function addPluginOptionInformationToHub( hub.setUser({ id: org }); } -export async function shouldSendTelemetry(options: NormalizedOptions): Promise { +export async function allowedToSendTelemetry(options: NormalizedOptions): Promise { const { silent, org, project, authToken, url, vcsRemote, headers, telemetry, dryRun } = options; // `options.telemetry` defaults to true @@ -174,9 +149,7 @@ export async function shouldSendTelemetry(options: NormalizedOptions): Promise { mockCliExecute.mockImplementation( () => "Sentry Server: https://selfhostedSentry.io \nsomeotherstuff\netc" ); - expect(await shouldSendTelemetry({} as NormalizedOptions)).toBe(false); + expect(await allowedToSendTelemetry({} as NormalizedOptions)).toBe(false); }); it("should return true if CLI returns sentry.io as a URL", async () => { mockCliExecute.mockImplementation( () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" ); - expect(await shouldSendTelemetry({} as NormalizedOptions)).toBe(true); + expect(await allowedToSendTelemetry({} as NormalizedOptions)).toBe(true); }); }); @@ -47,7 +47,7 @@ describe("addPluginOptionTagsToHub", () => { }); it("should set include tag according to number of entries (single entry)", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( normalizeUserOptions(defaultOptions), mockedHub as unknown as Hub, "rollup" @@ -56,7 +56,7 @@ describe("addPluginOptionTagsToHub", () => { }); it("should set include tag according to number of entries (multiple entries)", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( normalizeUserOptions({ include: ["", "", ""] }), mockedHub as unknown as Hub, "rollup" @@ -65,7 +65,7 @@ describe("addPluginOptionTagsToHub", () => { }); it("should set deploy tag to true if the deploy option is specified", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( normalizeUserOptions({ ...defaultOptions, deploy: { env: "production" } }), mockedHub as unknown as Hub, "rollup" @@ -74,7 +74,7 @@ describe("addPluginOptionTagsToHub", () => { }); it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( // eslint-disable-next-line @typescript-eslint/no-empty-function normalizeUserOptions({ ...defaultOptions, errorHandler: () => {} }), mockedHub as unknown as Hub, @@ -89,7 +89,7 @@ describe("addPluginOptionTagsToHub", () => { ])( `should set setCommits tag to %s if the setCommits option is %s`, (expectedValue, commitOptions) => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment normalizeUserOptions({ ...defaultOptions, setCommits: commitOptions as any }), mockedHub as unknown as Hub, @@ -100,7 +100,7 @@ describe("addPluginOptionTagsToHub", () => { ); it("sets all simple tags correctly", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( normalizeUserOptions({ ...defaultOptions, cleanArtifacts: true, @@ -119,7 +119,7 @@ describe("addPluginOptionTagsToHub", () => { }); it("shouldn't set any tags other than include if no opional options are specified", () => { - addPluginOptionInformationToHub( + setTelemetryDataOnHub( normalizeUserOptions(defaultOptions), mockedHub as unknown as Hub, "rollup" From 7dd58e79c4e014f1d0838a5fa6c702115c6d5564 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 4 May 2023 17:44:50 +0200 Subject: [PATCH 184/640] ref: Remove `injectReleasesMap` option (#236) --- MIGRATION.md | 1 + packages/bundler-plugin-core/src/index.ts | 3 -- .../src/options-mapping.ts | 10 ----- .../src/sentry/telemetry.ts | 4 -- packages/bundler-plugin-core/src/types.ts | 9 ----- packages/bundler-plugin-core/src/utils.ts | 13 ------- .../test/option-mappings.test.ts | 12 ------ .../test/sentry/telemetry.test.ts | 2 - packages/esbuild-plugin/README.md | 1 - .../disabled-release-injection/setup.ts | 1 - .../releases-injection/input/entrypoint.js | 2 - .../releases-injection.test.ts | 39 ------------------- .../fixtures/releases-injection/setup.ts | 15 ------- packages/rollup-plugin/README.md | 1 - packages/vite-plugin/README.md | 1 - packages/webpack-plugin/README.md | 1 - 16 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 packages/integration-tests/fixtures/releases-injection/input/entrypoint.js delete mode 100644 packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/releases-injection/setup.ts diff --git a/MIGRATION.md b/MIGRATION.md index fc691fe80e21..435667411e8f 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -4,6 +4,7 @@ This document serves as a migration guide, documenting all breaking changes betw ## Unreleased +- Removed `injectReleasesMap` option. If you need to inject values based on the build, please use your bundler's way of injecting values ([rollup](https://www.npmjs.com/package/@rollup/plugin-replace), [vite](https://vitejs.dev/config/shared-options.html#define), [webpack](https://webpack.js.org/plugins/define-plugin/), [esbuild](https://esbuild.github.io/api/#define)). - The minimum compatible version of rollup is version `3.2.0`. - Removed functionality for the `releaseInjectionTargets` option. - `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a450cb2e3064..b60ea7d3884b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -124,10 +124,7 @@ export function sentryUnpluginFactory({ if (options.injectRelease && releaseName) { const injectionCode = generateGlobalInjectorCode({ release: releaseName, - injectReleasesMap: options.injectReleasesMap, injectBuildInformation: options._experiments.injectBuildInformation || false, - org: options.org, - project: options.project, }); plugins.push(releaseInjectionPlugin(injectionCode)); diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 6ba83f0de578..562c3c99d894 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -11,7 +11,6 @@ type RequiredInternalOptions = Required< | "silent" | "cleanArtifacts" | "telemetry" - | "injectReleasesMap" | "_experiments" | "injectRelease" | "uploadSourceMaps" @@ -93,7 +92,6 @@ export function normalizeUserOptions(userOptions: UserOptions) { debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, telemetry: userOptions.telemetry ?? true, - injectReleasesMap: userOptions.injectReleasesMap ?? false, injectRelease: userOptions.injectRelease ?? true, uploadSourceMaps: userOptions.uploadSourceMaps ?? true, sourcemaps: userOptions.sourcemaps, @@ -206,14 +204,6 @@ function normalizeIncludeEntry( * @returns `true` if the options are valid, `false` otherwise */ export function validateOptions(options: NormalizedOptions, logger: Logger): boolean { - if (options.injectReleasesMap && !options.org) { - logger.error( - "The `injectReleasesMap` option was set but it is only supported when the `org` option is also specified.", - "Please set the `org` option (you can also set the SENTRY_ORG environment variable) or disable the `injectReleasesMap` option." - ); - return false; - } - const setCommits = options.setCommits; if (setCommits) { if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) { diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 543e0c50e06d..df0e96fa1a7b 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -66,7 +66,6 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund cleanArtifacts, finalize, setCommits, - injectReleasesMap, dryRun, errorHandler, deploy, @@ -94,9 +93,6 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund if (dryRun) { hub.setTag("dry-run", true); } - if (injectReleasesMap) { - hub.setTag("inject-releases-map", true); - } if (errorHandler) { hub.setTag("error-handler", "custom"); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 2c218862e04e..02ca5e86202c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -198,15 +198,6 @@ export type Options = Omit & { */ injectRelease?: boolean; - /** - * If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that - * maps from `{org}@{project}` to the `release` value. This might be helpful for webpack - * module federation or micro frontend setups. - * - * Defaults to `false`. - */ - injectReleasesMap?: boolean; - /** * Whether the plugin should upload source maps to Sentry. * diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 2b9b73c1c428..eb98a9f09225 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -229,16 +229,10 @@ export function determineReleaseName(): string | undefined { */ export function generateGlobalInjectorCode({ release, - injectReleasesMap, injectBuildInformation, - org, - project, }: { release: string; - injectReleasesMap: boolean; injectBuildInformation: boolean; - org?: string; - project?: string; }) { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) @@ -254,13 +248,6 @@ export function generateGlobalInjectorCode({ _global.SENTRY_RELEASE={id:"${release}"};`; - if (injectReleasesMap && project) { - const key = org ? `${project}@${org}` : project; - code += ` - _global.SENTRY_RELEASES=_global.SENTRY_RELEASES || {}; - _global.SENTRY_RELEASES["${key}"]={id:"${release}"};`; - } - if (injectBuildInformation) { const buildInfo = getBuildInformation(); diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index b69e5fbafbe4..901cfae42b17 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -34,7 +34,6 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectRelease: true, - injectReleasesMap: false, uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", @@ -80,7 +79,6 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, injectRelease: true, - injectReleasesMap: false, uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", @@ -112,16 +110,6 @@ describe("validateOptions", () => { jest.resetAllMocks(); }); - it("should return `false` if `injectRelease` is `true` but org is not provided", () => { - const options = { injectReleasesMap: true } as Partial; - - expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); - expect(mockedLogger.error).toHaveBeenCalledWith( - expect.stringMatching(/injectReleasesMap.*org/), - expect.stringMatching(/set.*org.*injectReleasesMap/) - ); - }); - it("should return `true` if `injectRelease` is `true` and org is provided", () => { const options = { injectReleasesMap: true, org: "my-org" } as Partial; diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 18144438e6be..83e3d78c1552 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -105,7 +105,6 @@ describe("addPluginOptionTagsToHub", () => { ...defaultOptions, cleanArtifacts: true, finalize: true, - injectReleasesMap: true, dryRun: true, }), mockedHub as unknown as Hub, @@ -114,7 +113,6 @@ describe("addPluginOptionTagsToHub", () => { expect(mockedHub.setTag).toHaveBeenCalledWith("clean-artifacts", true); expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); - expect(mockedHub.setTag).toHaveBeenCalledWith("inject-releases-map", true); expect(mockedHub.setTag).toHaveBeenCalledWith("dry-run", true); }); diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md index 16dfbee2a370..6f52d7b38b28 100644 --- a/packages/esbuild-plugin/README.md +++ b/packages/esbuild-plugin/README.md @@ -85,7 +85,6 @@ The Sentry Esbuild Plugin takes an options argument with the following propertie | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | diff --git a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts index aefc6cf073d4..5f082124ab02 100644 --- a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts @@ -12,5 +12,4 @@ createCjsBundles({ index: entryPointPath }, outputDir, { include: outputDir, dryRun: true, injectRelease: false, - injectReleasesMap: true, } as Options); diff --git a/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js b/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js deleted file mode 100644 index 1f0821b87781..000000000000 --- a/packages/integration-tests/fixtures/releases-injection/input/entrypoint.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -process.stdout.write(global.SENTRY_RELEASES["releasesProject@releasesOrg"].id.toString()); diff --git a/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts b/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts deleted file mode 100644 index 5bb38d644158..000000000000 --- a/packages/integration-tests/fixtures/releases-injection/releases-injection.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; - -/** - * Runs a node file in a seprate process. - * - * @param bundlePath Path of node file to run - * @returns Stdout of the process - */ -function checkBundle(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput).toBe("I AM A RELEASE!"); -} - -test("esbuild bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); -}); - -test("rollup bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "rollup", "index.js")); -}); - -test("vite bundle", () => { - expect.assertions(1); - 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")); -}); diff --git a/packages/integration-tests/fixtures/releases-injection/setup.ts b/packages/integration-tests/fixtures/releases-injection/setup.ts deleted file mode 100644 index cc875088acd2..000000000000 --- a/packages/integration-tests/fixtures/releases-injection/setup.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - release: "I AM A RELEASE!", - project: "releasesProject", - org: "releasesOrg", - include: outputDir, - dryRun: true, - injectReleasesMap: true, -} as Options); diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md index 0790bb41b86f..8b6fb3c01635 100644 --- a/packages/rollup-plugin/README.md +++ b/packages/rollup-plugin/README.md @@ -85,7 +85,6 @@ The Sentry Rollup Plugin takes an options argument with the following properties | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index e5df9f70197e..77050e4db39d 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -85,7 +85,6 @@ The Sentry Vite Plugin takes an options argument with the following properties: | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index f08bfce1649d..83eeac6bb2d7 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -85,7 +85,6 @@ The Sentry Webpack Plugin takes an options argument with the following propertie | setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | | deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | | injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| injectReleasesMap | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_RELEASES` variable that maps from `{org}@{project}` to the `release` value. This might be helpful for webpack module federation or micro frontend setups. Defaults to `false`. | | uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | | telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | | include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | From d1c6972524fbfc733826b83c2030e455370a9ccb Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 8 May 2023 15:57:46 +0200 Subject: [PATCH 185/640] ref(core): Switch to v2 options (#237) Co-authored-by: Lukas Stracke --- packages/bundler-plugin-core/src/index.ts | 117 ++++--- .../src/options-mapping.ts | 193 ++---------- .../src/plugins/debug-id-upload.ts | 17 +- .../src/plugins/release-management.ts | 54 +++- .../bundler-plugin-core/src/sentry/cli.ts | 75 ----- .../src/sentry/telemetry.ts | 48 ++- packages/bundler-plugin-core/src/types.ts | 291 +----------------- .../test/option-mappings.test.ts | 84 +++-- .../test/sentry/cli.test.ts | 18 -- .../test/sentry/telemetry.test.ts | 27 +- .../basic-upload/basic-upload.test.ts | 2 +- .../scenarios/basic-upload/config.ts | 6 +- .../e2e-tests/scenarios/basic-upload/setup.ts | 2 +- .../e2e-tests/utils/create-cjs-bundles.ts | 40 ++- .../fixtures/basic-release-injection/setup.ts | 7 +- .../build-information-injection/setup.ts | 5 +- .../disabled-release-injection/setup.ts | 8 +- 17 files changed, 272 insertions(+), 722 deletions(-) delete mode 100644 packages/bundler-plugin-core/src/sentry/cli.ts delete mode 100644 packages/bundler-plugin-core/test/sentry/cli.test.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b60ea7d3884b..898d79c1ffb3 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -6,12 +6,10 @@ import { normalizeUserOptions, validateOptions } from "./options-mapping"; import { debugIdUploadPlugin } from "./plugins/debug-id-upload"; import { releaseManagementPlugin } from "./plugins/release-management"; import { telemetryPlugin } from "./plugins/telemetry"; -import { getSentryCli } from "./sentry/cli"; import { createLogger } from "./sentry/logger"; -import { createSentryInstance, allowedToSendTelemetry } from "./sentry/telemetry"; +import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; import { Options } from "./types"; import { - determineReleaseName, generateGlobalInjectorCode, getDependencies, getPackageJson, @@ -58,6 +56,14 @@ export function sentryUnpluginFactory({ return createUnplugin((userOptions, unpluginMetaContext) => { const options = normalizeUserOptions(userOptions); + if (unpluginMetaContext.watchMode || options.disable) { + return [ + { + name: "sentry-noop-plugin", + }, + ]; + } + const shouldSendTelemetry = allowedToSendTelemetry(options); const { sentryHub, sentryClient } = createSentryInstance( options, @@ -95,15 +101,6 @@ export function sentryUnpluginFactory({ ); } - const cli = getSentryCli(options, logger); - - const releaseName = options.release ?? determineReleaseName(); - if (!releaseName) { - handleRecoverableError( - new Error("Unable to determine a release name. Please set the `release` option.") - ); - } - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { logger.warn( "Running Sentry plugin from within a `node_modules` folder. Some features may not work." @@ -121,53 +118,87 @@ export function sentryUnpluginFactory({ }) ); - if (options.injectRelease && releaseName) { + if (!options.release.inject) { + logger.debug("Release injection disabled via `release.inject`. Will not inject."); + } else if (!options.release.name) { + logger.warn("No release name provided. Will not inject release."); + } else { const injectionCode = generateGlobalInjectorCode({ - release: releaseName, + release: options.release.name, injectBuildInformation: options._experiments.injectBuildInformation || false, }); - plugins.push(releaseInjectionPlugin(injectionCode)); } - if (options.sourcemaps?.assets) { - plugins.push(debugIdInjectionPlugin()); - } - - if (releaseName) { + if (!options.release.name) { + logger.warn("No release name provided. Will not manage release."); + } else if (!options.authToken) { + logger.warn("No auth token provided. Will not manage release."); + } else if (!options.org) { + logger.warn("No org provided. Will not manage release."); + } else if (!options.project) { + logger.warn("No project provided. Will not manage release."); + } else { plugins.push( releaseManagementPlugin({ logger, - cliInstance: cli, - releaseName: releaseName, - shouldCleanArtifacts: options.cleanArtifacts, - shouldUploadSourceMaps: options.uploadSourceMaps, - shouldFinalizeRelease: options.finalize, - include: options.include, - setCommitsOption: options.setCommits, - deployOptions: options.deploy, - dist: options.dist, + releaseName: options.release.name, + shouldCreateRelease: options.release.create, + shouldCleanArtifacts: options.release.cleanArtifacts, + shouldFinalizeRelease: options.release.finalize, + include: options.release.uploadLegacySourcemaps, + setCommitsOption: options.release.setCommits, + deployOptions: options.release.deploy, + dist: options.release.dist, handleRecoverableError: handleRecoverableError, sentryHub, sentryClient, + sentryCliOptions: { + authToken: options.authToken, + org: options.org, + project: options.project, + silent: options.silent, + url: options.url, + vcsRemote: options.release.vcsRemote, + headers: options.headers, + }, }) ); } - if (!unpluginMetaContext.watchMode && options.sourcemaps?.assets !== undefined) { - plugins.push( - debugIdUploadPlugin({ - assets: options.sourcemaps.assets, - ignore: options.sourcemaps.ignore, - dist: options.dist, - releaseName: releaseName, - logger: logger, - cliInstance: cli, - handleRecoverableError: handleRecoverableError, - sentryHub, - sentryClient, - }) - ); + if (options.sourcemaps) { + if (!options.authToken) { + logger.warn("No auth token provided. Will not upload source maps."); + } else if (!options.org) { + logger.warn("No org provided. Will not upload source maps."); + } else if (!options.project) { + logger.warn("No project provided. Will not upload source maps."); + } else if (!options.sourcemaps.assets) { + logger.warn("No assets defined. Will not upload source maps."); + } else { + plugins.push(debugIdInjectionPlugin()); + plugins.push( + debugIdUploadPlugin({ + assets: options.sourcemaps.assets, + ignore: options.sourcemaps.ignore, + dist: options.release.dist, + releaseName: options.release.name, + logger: logger, + handleRecoverableError: handleRecoverableError, + sentryHub, + sentryClient, + sentryCliOptions: { + authToken: options.authToken, + org: options.org, + project: options.project, + silent: options.silent, + url: options.url, + vcsRemote: options.release.vcsRemote, + headers: options.headers, + }, + }) + ); + } } return plugins; diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 562c3c99d894..ccaaaf950da4 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,196 +1,39 @@ import { Logger } from "./sentry/logger"; -import { IncludeEntry as UserIncludeEntry, Options as UserOptions } from "./types"; -import { arrayify } from "./utils"; +import { Options as UserOptions } from "./types"; +import { determineReleaseName } from "./utils"; -type RequiredInternalOptions = Required< - Pick< - UserOptions, - | "finalize" - | "dryRun" - | "debug" - | "silent" - | "cleanArtifacts" - | "telemetry" - | "_experiments" - | "injectRelease" - | "uploadSourceMaps" - > ->; - -type OptionalInternalOptions = Partial< - Pick< - UserOptions, - | "org" - | "project" - | "authToken" - | "url" - | "vcsRemote" - | "dist" - | "errorHandler" - | "setCommits" - | "deploy" - | "configFile" - | "headers" - | "sourcemaps" - | "release" - > ->; - -type NormalizedInternalOptions = { - releaseInjectionTargets: (string | RegExp)[] | ((filePath: string) => boolean) | undefined; - include: InternalIncludeEntry[]; -}; - -export type NormalizedOptions = RequiredInternalOptions & - OptionalInternalOptions & - NormalizedInternalOptions; - -type RequiredInternalIncludeEntry = Required< - Pick< - UserIncludeEntry, - "paths" | "ext" | "stripCommonPrefix" | "sourceMapReference" | "rewrite" | "validate" - > ->; - -type OptionalInternalIncludeEntry = Partial< - Pick ->; - -export type InternalIncludeEntry = RequiredInternalIncludeEntry & - OptionalInternalIncludeEntry & { - ignore: string[]; - }; +export type NormalizedOptions = ReturnType; export const SENTRY_SAAS_URL = "https://sentry.io"; export function normalizeUserOptions(userOptions: UserOptions) { const options = { - // include is the only strictly required option - // (normalizeInclude needs all userOptions to access top-level include options) - include: normalizeInclude(userOptions), - - // These options must be set b/c we need them for release injection. - // They can also be set as environment variables. Technically, they - // could be set in the config file but this would be too late for - // release injection because we only pass the config file path - // to the CLI org: userOptions.org ?? process.env["SENTRY_ORG"], project: userOptions.project ?? process.env["SENTRY_PROJECT"], - // Falling back to the empty string here b/c at a later point, we use - // Sentry CLI to determine a release if none was specified via options - // or env vars. In case we don't find one, we'll bail at that point. - release: userOptions.release ?? process.env["SENTRY_RELEASE"], - // We technically don't need the URL for anything release-specific - // but we want to make sure that we're only sending Sentry data - // of SaaS customers. Hence we want to read it anyway. + authToken: userOptions.authToken ?? process.env["SENTRY_AUTH_TOKEN"], url: userOptions.url ?? process.env["SENTRY_URL"] ?? SENTRY_SAAS_URL, - - // Options with default values - finalize: userOptions.finalize ?? true, - cleanArtifacts: userOptions.cleanArtifacts ?? false, - dryRun: userOptions.dryRun ?? false, + headers: userOptions.headers, debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, + errorHandler: userOptions.errorHandler, telemetry: userOptions.telemetry ?? true, - injectRelease: userOptions.injectRelease ?? true, - uploadSourceMaps: userOptions.uploadSourceMaps ?? true, + disable: userOptions.disable ?? false, sourcemaps: userOptions.sourcemaps, + release: { + name: determineReleaseName(), + inject: true, + create: true, + finalize: true, + vcsRemote: process.env["SENTRY_VSC_REMOTE"] ?? "origin", + cleanArtifacts: false, + ...userOptions.release, + }, _experiments: userOptions._experiments ?? {}, - - // These options and can also be set via env variables or the config file. - // If they're set in the options, we simply pass them to the CLI constructor. - // Sentry CLI will internally query env variables and read its config file if - // the passed options are undefined. - authToken: userOptions.authToken, // env var: `SENTRY_AUTH_TOKEN` - - headers: userOptions.headers, - - vcsRemote: userOptions.vcsRemote, // env var: `SENTRY_VSC_REMOTE` - - // Optional options - setCommits: userOptions.setCommits, - deploy: userOptions.deploy, - releaseInjectionTargets: normalizeReleaseInjectionTargets(userOptions.releaseInjectionTargets), - dist: userOptions.dist, - errorHandler: userOptions.errorHandler, - configFile: userOptions.configFile, }; return options; } -/** - * Converts the user-facing `releaseInjectionTargets` option to the internal - * `releaseInjectionTargets` option - */ -function normalizeReleaseInjectionTargets( - userReleaseInjectionTargets: UserOptions["releaseInjectionTargets"] -): (string | RegExp)[] | ((filePath: string) => boolean) | undefined { - if (userReleaseInjectionTargets === undefined) { - return undefined; - } else if (typeof userReleaseInjectionTargets === "function") { - return userReleaseInjectionTargets; - } else { - return arrayify(userReleaseInjectionTargets); - } -} - -/** - * Converts the user-facing `include` option to the internal `include` option, - * resulting in an array of `InternalIncludeEntry` objects. This later on lets us - * work with only one type of include data structure instead of multiple. - * - * During the process, we hoist top-level include options (e.g. urlPrefix) into each - * object if they were not alrady specified in an `IncludeEntry`, making every object - * fully self-contained. This is also the reason why we pass the entire options - * object and not just `include`. - * - * @param userOptions the entire user-facing `options` object - * - * @return an array of `InternalIncludeEntry` objects. - */ -function normalizeInclude(userOptions: UserOptions): InternalIncludeEntry[] { - if (!userOptions.include) { - return []; - } - - return arrayify(userOptions.include) - .map((includeItem) => - typeof includeItem === "string" ? { paths: [includeItem] } : includeItem - ) - .map((userIncludeEntry) => normalizeIncludeEntry(userOptions, userIncludeEntry)); -} - -/** - * Besides array-ifying the `ignore` option, this function hoists top level options into the items of the `include` - * option. This is to simplify the handling of of the `include` items later on. - */ -function normalizeIncludeEntry( - userOptions: UserOptions, - includeEntry: UserIncludeEntry -): InternalIncludeEntry { - const ignoreOption = includeEntry.ignore ?? userOptions.ignore ?? ["node_modules"]; - const ignore = Array.isArray(ignoreOption) ? ignoreOption : [ignoreOption]; - - // We're prefixing all entries in the `ext` option with a `.` (if it isn't already) to align with Node.js' `path.extname()` - const ext = includeEntry.ext ?? userOptions.ext ?? ["js", "map", "jsbundle", "bundle"]; - const dotPrefixedExt = ext.map((extension) => `.${extension.replace(/^\./, "")}`); - - return { - paths: includeEntry.paths, - ignore, - ignoreFile: includeEntry.ignoreFile ?? userOptions.ignoreFile, - ext: dotPrefixedExt, - urlPrefix: includeEntry.urlPrefix ?? userOptions.urlPrefix, - urlSuffix: includeEntry.urlSuffix ?? userOptions.urlSuffix, - stripPrefix: includeEntry.stripPrefix ?? userOptions.stripPrefix, - stripCommonPrefix: includeEntry.stripCommonPrefix ?? userOptions.stripCommonPrefix ?? false, - sourceMapReference: includeEntry.sourceMapReference ?? userOptions.sourceMapReference ?? true, - rewrite: includeEntry.rewrite ?? userOptions.rewrite ?? true, - validate: includeEntry.validate ?? userOptions.validate ?? false, - }; -} - /** * Validates a few combinations of options that are not checked by Sentry CLI. * @@ -204,7 +47,7 @@ function normalizeIncludeEntry( * @returns `true` if the options are valid, `false` otherwise */ export function validateOptions(options: NormalizedOptions, logger: Logger): boolean { - const setCommits = options.setCommits; + const setCommits = options.release?.setCommits; if (setCommits) { if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) { logger.error( @@ -222,7 +65,7 @@ export function validateOptions(options: NormalizedOptions, logger: Logger): boo } } - if (options.deploy && !options.deploy.env) { + if (options.release?.deploy && !options.release?.deploy.env) { logger.error( "The `deploy` option was specified but is missing the required `env` property.", "Please set the `env` property." diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index e7524404c685..62e4a9473e37 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -6,12 +6,11 @@ import * as util from "util"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { promisify } from "util"; -import { SentryCLILike } from "../sentry/cli"; import { Hub, NodeClient } from "@sentry/node"; +import SentryCli from "@sentry/cli"; interface DebugIdUploadPluginOptions { logger: Logger; - cliInstance: SentryCLILike; assets: string | string[]; ignore?: string | string[]; releaseName?: string; @@ -19,23 +18,35 @@ interface DebugIdUploadPluginOptions { handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; + sentryCliOptions: { + url: string; + authToken: string; + org: string; + project: string; + vcsRemote: string; + silent: boolean; + headers?: Record; + }; } export function debugIdUploadPlugin({ assets, ignore, logger, - cliInstance, releaseName, dist, handleRecoverableError, sentryHub, sentryClient, + sentryCliOptions, }: DebugIdUploadPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", async writeBundle() { let folderToCleanUp: string | undefined; + + const cliInstance = new SentryCli(null, sentryCliOptions); + try { const tmpUploadFolder = await fs.promises.mkdtemp( path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index e6525467863c..e9cc402b3c10 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -1,45 +1,57 @@ -import { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; +import SentryCli, { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; import { Hub, NodeClient } from "@sentry/node"; import { UnpluginOptions } from "unplugin"; -import { InternalIncludeEntry } from "../options-mapping"; -import { SentryCLILike } from "../sentry/cli"; import { Logger } from "../sentry/logger"; +import { IncludeEntry } from "../types"; +import { arrayify } from "../utils"; -interface DebugIdUploadPluginOptions { +interface ReleaseManagementPluginOptions { logger: Logger; - cliInstance: SentryCLILike; releaseName: string; + shouldCreateRelease: boolean; shouldCleanArtifacts: boolean; - shouldUploadSourceMaps: boolean; shouldFinalizeRelease: boolean; - include: InternalIncludeEntry[]; + include?: string | IncludeEntry | Array; setCommitsOption?: SentryCliCommitsOptions; deployOptions?: SentryCliNewDeployOptions; dist?: string; handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; + sentryCliOptions: { + url: string; + authToken: string; + org: string; + project: string; + vcsRemote: string; + silent: boolean; + headers?: Record; + }; } export function releaseManagementPlugin({ - cliInstance, releaseName, include, dist, setCommitsOption, + shouldCreateRelease, shouldCleanArtifacts, - shouldUploadSourceMaps, shouldFinalizeRelease, deployOptions, handleRecoverableError, sentryHub, sentryClient, -}: DebugIdUploadPluginOptions): UnpluginOptions { + sentryCliOptions, +}: ReleaseManagementPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", async writeBundle() { try { - await cliInstance.releases.new(releaseName); + const cliInstance = new SentryCli(null, sentryCliOptions); + + if (shouldCreateRelease) { + await cliInstance.releases.new(releaseName); + } if (shouldCleanArtifacts) { await cliInstance.releases.execute( @@ -48,8 +60,24 @@ export function releaseManagementPlugin({ ); } - if (shouldUploadSourceMaps) { - await cliInstance.releases.uploadSourceMaps(releaseName, { include, dist }); + if (include) { + const normalizedInclude = arrayify(include) + .map((includeItem) => + typeof includeItem === "string" ? { paths: [includeItem] } : includeItem + ) + .map((includeEntry) => ({ + ...includeEntry, + validate: includeEntry.validate ?? false, + ext: includeEntry.ext + ? includeEntry.ext.map((extension) => `.${extension.replace(/^\./, "")}`) + : [".js", ".map", ".jsbundle", ".bundle"], + ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined, + })); + + await cliInstance.releases.uploadSourceMaps(releaseName, { + include: normalizedInclude, + dist, + }); } if (setCommitsOption) { diff --git a/packages/bundler-plugin-core/src/sentry/cli.ts b/packages/bundler-plugin-core/src/sentry/cli.ts deleted file mode 100644 index 2e67ca51c211..000000000000 --- a/packages/bundler-plugin-core/src/sentry/cli.ts +++ /dev/null @@ -1,75 +0,0 @@ -import SentryCli, { SentryCliReleases } from "@sentry/cli"; -import { NormalizedOptions } from "../options-mapping"; -import { Logger } from "./logger"; - -type SentryDryRunCLI = { - releases: Omit; - execute: (args: string[], live: boolean) => Promise; -}; -export type SentryCLILike = SentryCli | SentryDryRunCLI; - -/** - * Creates a new Sentry CLI instance. - * - * In case, users selected the `dryRun` options, this returns a stub - * that makes no-ops out of most CLI operations - */ -export function getSentryCli(internalOptions: NormalizedOptions, logger: Logger): SentryCLILike { - const { silent, org, project, authToken, url, vcsRemote, headers } = internalOptions; - const cli = new SentryCli(internalOptions.configFile, { - url, - authToken, - org, - project, - vcsRemote, - silent, - headers, - }); - - if (internalOptions.dryRun) { - logger.info("In DRY RUN Mode"); - return getDryRunCLI(cli, logger); - } - - return cli; -} - -function getDryRunCLI(cli: SentryCli, logger: Logger): SentryDryRunCLI { - return { - releases: { - proposeVersion: () => - cli.releases.proposeVersion().then((version) => { - logger.info("Proposed version:\n", version); - return version; - }), - new: (release: string) => { - logger.info("Creating new release:\n", release); - return Promise.resolve(release); - }, - uploadSourceMaps: (release: string, config: unknown) => { - logger.info("Calling upload-sourcemaps with:\n", config); - return Promise.resolve(release); - }, - finalize: (release: string) => { - logger.info("Finalizing release:\n", release); - return Promise.resolve(release); - }, - setCommits: (release: string, config: unknown) => { - logger.info("Calling set-commits with:\n", config); - return Promise.resolve(release); - }, - newDeploy: (release: string, config: unknown) => { - logger.info("Calling deploy with:\n", config); - return Promise.resolve(release); - }, - execute: (args: string[], live: boolean) => { - logger.info("Executing", args, "live:", live); - return Promise.resolve(""); - }, - }, - execute: (args: string[], live: boolean) => { - logger.info("Executing", args, "live:", live); - return Promise.resolve("Executed"); - }, - }; -} diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index df0e96fa1a7b..a926a4bf785a 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -60,45 +60,39 @@ export function createSentryInstance( } export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bundler: string) { - const { - org, - project, - cleanArtifacts, - finalize, - setCommits, - dryRun, - errorHandler, - deploy, - include, - sourcemaps, - } = options; - - hub.setTag("include", include.length > 1 ? "multiple-entries" : "single-entry"); + const { org, project, release, errorHandler, sourcemaps } = options; + + if (release.uploadLegacySourcemaps) { + hub.setTag( + "uploadLegacySourcemapsEntries", + Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1 + ); + } // Optional release pipeline steps - if (cleanArtifacts) { + if (release.cleanArtifacts) { hub.setTag("clean-artifacts", true); } - if (setCommits) { - hub.setTag("set-commits", setCommits.auto === true ? "auto" : "manual"); + if (release.setCommits) { + hub.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); } - if (finalize) { + if (release.finalize) { hub.setTag("finalize-release", true); } - if (deploy) { + if (release.deploy) { hub.setTag("add-deploy", true); } // Miscelaneous options - if (dryRun) { - hub.setTag("dry-run", true); - } if (errorHandler) { hub.setTag("error-handler", "custom"); } if (sourcemaps?.assets) { hub.setTag("debug-id-upload", true); } + if (sourcemaps?.deleteAfterUpload) { + hub.setTag("delete-after-upload", true); + } hub.setTag("node", process.version); @@ -112,27 +106,23 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund } export async function allowedToSendTelemetry(options: NormalizedOptions): Promise { - const { silent, org, project, authToken, url, vcsRemote, headers, telemetry, dryRun } = options; + const { silent, org, project, authToken, url, headers, telemetry, release } = options; // `options.telemetry` defaults to true if (telemetry === false) { return false; } - if (dryRun) { - return false; - } - if (url === SENTRY_SAAS_URL) { return true; } - const cli = new SentryCli(options.configFile, { + const cli = new SentryCli(null, { url, authToken, org, project, - vcsRemote, + vcsRemote: release.vcsRemote, silent, headers, }); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 02ca5e86202c..9230541e17e4 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,257 +1,6 @@ -import { Hub, Span } from "@sentry/node"; -import { SentryCLILike } from "./sentry/cli"; -import { createLogger } from "./sentry/logger"; - -/** - * The main options object holding all plugin options available to users - */ -export type Options = Omit & { - /* --- authentication/identification: */ - - /** - * The slug of the Sentry organization associated with the app. - * - * This value can also be specified via the `SENTRY_ORG` environment variable. - */ - org?: string; - - /** - * The slug of the Sentry project associated with the app. - * - * This value can also be specified via the `SENTRY_PROJECT` environment variable. - */ - project?: string; - - /** - * The authentication token to use for all communication with Sentry. - * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. - * Required scopes: project:releases (and org:read if setCommits option is used). - * - * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. - */ - authToken?: string; - - /** - * The base URL of your Sentry instance. Use this if you are using a self-hosted - * or Sentry instance other than sentry.io. - * - * This value can also be set via the `SENTRY_URL` environment variable. - * - * Defaults to https://sentry.io/, which is the correct value for SaaS customers. - */ - url?: string; - - /* --- release properties: */ - - /** - * Unique identifier for the release. - * - * This value can also be specified via the `SENTRY_RELEASE` environment variable. - * - * Defaults to the output of the sentry-cli releases propose-version command, - * which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, - * Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latter - * requires access to git CLI and for the root directory to be a valid repository). - */ - release?: string; - - /** - * Unique identifier for the distribution, used to further segment your release. - * Usually your build number. - */ - dist?: string; - - /** - * Filter for modules that the release should be injected in. - * - * This option takes a string, a regular expression, or an array containing strings, - * regular expressions, or both. It's also possible to provide a filter function - * that takes the absolute path of a processed module. It should return `true` - * if the release should be injected into the module and `false` otherwise. String - * values of this option require a full match with the absolute path of the module. - * - * By default, the release will be injected into all entrypoints. If release - * injection should be disabled, provide an empty array here. - * - * @deprecated This option will be removed in the next major version. - */ - releaseInjectionTargets?: (string | RegExp)[] | RegExp | string | ((filePath: string) => boolean); - - /** - * Determines if the Sentry release record should be automatically finalized - * (meaning a date_released timestamp is added) after artifact upload. - * - * Defaults to `true`. - */ - finalize?: boolean; - - /* --- source maps properties: */ - - /** - * One or more paths that Sentry CLI should scan recursively for sources. - * It will upload all .map files and match associated .js files. Other file - * types can be uploaded by using the `ext` option. - * Each path can be given as a string or an object with path-specific options - * - * @deprecated Use the `sourcemaps` option instead. - */ - include?: string | IncludeEntry | Array; - - /* --- other properties: */ - - /** - * Version control system remote name. - * - * This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. - * - * Defaults to 'origin'. - */ - vcsRemote?: string; - - /** - * Headers added to every outgoing network request. - */ - headers?: Record; - - /** - * Attempts a dry run (useful for dev environments), making release creation - * a no-op. - * - * Defaults to `false`, but may be automatically set to `true` in development environments - * by some framework integrations (Next.JS, possibly others). - */ - dryRun?: boolean; - - /** - * Print useful debug information. - * - * Defaults to `false`. - */ - debug?: boolean; - - /** - * Suppresses all logs. - * - * Defaults to `false`. - */ - silent?: boolean; - - /** - * Remove all the artifacts in the release before the upload. - * - * Defaults to `false`. - */ - cleanArtifacts?: boolean; - - /** - * When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. - * - * By default, the plugin will simply throw an error, thereby stopping the bundling process. - * If an `errorHandler` callback is provided, compilation will continue, unless an error is - * thrown in the provided callback. - * - * To allow compilation to continue but still emit a warning, set this option to the following: - * - * ```js - * (err) => { - * console.warn(err); - * } - * ``` - */ - errorHandler?: (err: Error) => void; - - /** - * Associates the release with its commits in Sentry. - */ - setCommits?: SetCommitsOptions; - - /** - * Adds deployment information to the release in Sentry. - */ - deploy?: DeployOptions; - - /** - * If set to true, internal plugin errors and performance data will be sent to Sentry. - * - * At Sentry we like to use Sentry ourselves to deliver faster and more stable products. - * We're very careful of what we're sending. We won't collect anything other than error - * and high-level performance data. We will never collect your code or any details of the - * projects in which you're using this plugin. - * - * Defaults to `true`. - */ - telemetry?: boolean; - - /** - * Path to Sentry CLI config properties, as described in - * https://docs.sentry.io/product/cli/configuration/#configuration-file. - * - * By default, the config file is looked for upwards from the current path, and - * defaults from ~/.sentryclirc are always loaded - */ - configFile?: string; - - /** - * Whether the plugin should inject release information into the build. - * - * Defaults to `true`. - */ - injectRelease?: boolean; - - /** - * Whether the plugin should upload source maps to Sentry. - * - * Defaults to `true`. - */ - uploadSourceMaps?: boolean; - - /** - * Options for source maps uploading. - */ - sourcemaps?: { - /** - * A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. - * Leave this option undefined if you do not want to upload source maps to Sentry. - * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) - * - * Use the `debug` option to print information about which files end up being uploaded. - */ - assets: string | string[]; - - /** - * A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. - * - * Default: `[]` - * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) - * - * Use the `debug` option to print information about which files end up being uploaded. - */ - ignore?: string | string[]; - }; - - /** - * Options that are considered experimental and subject to change. - * - * @experimental API may change in any release - */ - _experiments?: { - /** - * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. - * This contains information about the build, e.g. dependencies, node version and other useful data. - * - * Defaults to `false`. - */ - injectBuildInformation?: boolean; - }; -}; - -export interface NewOptions { +export interface Options { /** * The slug of the Sentry organization associated with the app. - * - * This value can also be specified via the `SENTRY_ORG` environment variable. */ org?: string; @@ -449,27 +198,24 @@ export interface NewOptions { */ deploy?: DeployOptions; + /** + * Remove all previously uploaded artifacts for this release on Sentry before the upload. + * + * Defaults to `false`. + */ + cleanArtifacts?: boolean; + /** * Legacy method of uploading source maps. (not recommended unless necessary) * + * One or more paths that should be scanned recursively for sources. + * + * Each path can be given as a string or an object with more specific options. + * * The modern version of doing source maps upload is more robust and way easier to get working but has to inject a very small snippet of JavaScript into your output bundles. * In situations where this leads to problems (e.g subresource integrity) you can use this option as a fallback. */ - legacySourcemaps?: { - /** - * One or more paths that should be scanned recursively for sources. - * - * Each path can be given as a string or an object with more specific options. - */ - include?: string | IncludeEntry | Array; - - /** - * Remove all the artifacts in the release before the upload. - * - * Defaults to `false`. - */ - cleanArtifacts?: boolean; - }; + uploadLegacySourcemaps?: string | IncludeEntry | Array; }; /** @@ -664,14 +410,3 @@ type DeployOptions = { */ url?: string; }; - -/** - * Holds data for internal purposes - * (e.g. telemetry and logging) - */ -export type BuildContext = { - hub: Hub; - parentSpan?: Span; - logger: ReturnType; - cli: SentryCLILike; -}; diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 901cfae42b17..2470e67026dd 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -7,34 +7,26 @@ describe("normalizeUserOptions()", () => { org: "my-org", project: "my-project", authToken: "my-auth-token", - release: "my-release", // we have to define this even though it is an optional value because of auto discovery - include: "./out", + release: { name: "my-release", uploadLegacySourcemaps: "./out" }, // we have to define this even though it is an optional value because of auto discovery }; expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", - cleanArtifacts: false, - debug: false, - dryRun: false, - finalize: true, - include: [ - { - ext: [".js", ".map", ".jsbundle", ".bundle"], - ignore: ["node_modules"], - paths: ["./out"], - rewrite: true, - sourceMapReference: true, - stripCommonPrefix: false, - validate: false, - }, - ], org: "my-org", project: "my-project", - release: "my-release", + debug: false, + disable: false, + release: { + name: "my-release", + finalize: true, + inject: true, + cleanArtifacts: false, + create: true, + vcsRemote: "origin", + uploadLegacySourcemaps: "./out", + }, silent: false, telemetry: true, - injectRelease: true, - uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", }); @@ -45,41 +37,43 @@ describe("normalizeUserOptions()", () => { org: "my-org", project: "my-project", authToken: "my-auth-token", - release: "my-release", // we have to define this even though it is an optional value because of auto discovery - - // include options - include: [{ paths: ["./output", "./files"], ignore: ["./files"] }], - rewrite: true, - sourceMapReference: false, - stripCommonPrefix: true, - // It is intentional that only foo has a `.`. We're expecting all extensions to be prefixed with a dot. - ext: ["js", "map", ".foo"], + release: { + name: "my-release", // we have to define this even though it is an optional value because of auto discovery + uploadLegacySourcemaps: { + paths: ["./output", "./files"], + ignore: ["./files"], + rewrite: true, + sourceMapReference: false, + stripCommonPrefix: true, + ext: ["js", "map", ".foo"], + }, + }, }; expect(normalizeUserOptions(userOptions)).toEqual({ authToken: "my-auth-token", - cleanArtifacts: false, + org: "my-org", + project: "my-project", debug: false, - dryRun: false, - finalize: true, - include: [ - { - ext: [".js", ".map", ".foo"], + disable: false, + release: { + name: "my-release", + vcsRemote: "origin", + finalize: true, + create: true, + inject: true, + cleanArtifacts: false, + uploadLegacySourcemaps: { + ext: ["js", "map", ".foo"], ignore: ["./files"], paths: ["./output", "./files"], rewrite: true, sourceMapReference: false, stripCommonPrefix: true, - validate: false, }, - ], - org: "my-org", - project: "my-project", - release: "my-release", + }, silent: false, telemetry: true, - injectRelease: true, - uploadSourceMaps: true, _experiments: {}, url: "https://sentry.io", }); @@ -118,7 +112,7 @@ describe("validateOptions", () => { }); it("should return `false` if `setCommits` is set but neither auto nor manual options are set", () => { - const options = { setCommits: {} } as Partial; + const options = { release: { setCommits: {} } } as Partial; expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); expect(mockedLogger.error).toHaveBeenCalledWith( @@ -128,7 +122,7 @@ describe("validateOptions", () => { }); it("should return `true` but warn if `setCommits` is set and both auto nor manual options are set", () => { - const options = { setCommits: { auto: true, repo: "myRepo", commit: "myCommit" } }; + const options = { release: { setCommits: { auto: true, repo: "myRepo", commit: "myCommit" } } }; expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); @@ -140,7 +134,7 @@ describe("validateOptions", () => { }); it("should return `false` if `deploy`is set but `env` is not provided", () => { - const options = { deploy: {} } as Partial; + const options = { release: { deploy: {} } } as Partial; expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); expect(mockedLogger.error).toHaveBeenCalledWith( diff --git a/packages/bundler-plugin-core/test/sentry/cli.test.ts b/packages/bundler-plugin-core/test/sentry/cli.test.ts deleted file mode 100644 index 3e1e3dd17812..000000000000 --- a/packages/bundler-plugin-core/test/sentry/cli.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import SentryCli from "@sentry/cli"; -import { getSentryCli } from "../../src/sentry/cli"; - -describe("getSentryCLI", () => { - it("returns a valid CLI instance if dryRun is not specified", () => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any - const cli = getSentryCli({} as any, {} as any); - expect(cli).toBeInstanceOf(SentryCli); - }); - - it("returns a dry run CLI stub if `dryRun` is set to true", () => { - const logger = { info: jest.fn() }; - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any - const cli = getSentryCli({ dryRun: true } as any, logger as any); - expect(logger.info).toHaveBeenCalledWith(expect.stringMatching("DRY RUN")); - expect(cli).not.toBeInstanceOf(SentryCli); - }); -}); diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 83e3d78c1552..c6d2b8269781 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -20,14 +20,14 @@ describe("shouldSendTelemetry", () => { mockCliExecute.mockImplementation( () => "Sentry Server: https://selfhostedSentry.io \nsomeotherstuff\netc" ); - expect(await allowedToSendTelemetry({} as NormalizedOptions)).toBe(false); + expect(await allowedToSendTelemetry({ release: {} } as NormalizedOptions)).toBe(false); }); it("should return true if CLI returns sentry.io as a URL", async () => { mockCliExecute.mockImplementation( () => "Sentry Server: https://sentry.io \nsomeotherstuff\netc" ); - expect(await allowedToSendTelemetry({} as NormalizedOptions)).toBe(true); + expect(await allowedToSendTelemetry({ release: {} } as NormalizedOptions)).toBe(true); }); }); @@ -39,7 +39,7 @@ describe("addPluginOptionTagsToHub", () => { }; const defaultOptions = { - include: [], + release: { uploadLegacySourcemaps: [] }, }; beforeEach(() => { @@ -52,21 +52,21 @@ describe("addPluginOptionTagsToHub", () => { mockedHub as unknown as Hub, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); }); it("should set include tag according to number of entries (multiple entries)", () => { setTelemetryDataOnHub( - normalizeUserOptions({ include: ["", "", ""] }), + normalizeUserOptions({ release: { uploadLegacySourcemaps: ["", "", ""] } }), mockedHub as unknown as Hub, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("include", "multiple-entries"); + expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 3); }); it("should set deploy tag to true if the deploy option is specified", () => { setTelemetryDataOnHub( - normalizeUserOptions({ ...defaultOptions, deploy: { env: "production" } }), + normalizeUserOptions({ ...defaultOptions, release: { deploy: { env: "production" } } }), mockedHub as unknown as Hub, "rollup" ); @@ -91,7 +91,7 @@ describe("addPluginOptionTagsToHub", () => { (expectedValue, commitOptions) => { setTelemetryDataOnHub( // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - normalizeUserOptions({ ...defaultOptions, setCommits: commitOptions as any }), + normalizeUserOptions({ ...defaultOptions, release: { setCommits: commitOptions as any } }), mockedHub as unknown as Hub, "rollup" ); @@ -103,9 +103,10 @@ describe("addPluginOptionTagsToHub", () => { setTelemetryDataOnHub( normalizeUserOptions({ ...defaultOptions, - cleanArtifacts: true, - finalize: true, - dryRun: true, + release: { + cleanArtifacts: true, + finalize: true, + }, }), mockedHub as unknown as Hub, "rollup" @@ -113,7 +114,6 @@ describe("addPluginOptionTagsToHub", () => { expect(mockedHub.setTag).toHaveBeenCalledWith("clean-artifacts", true); expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); - expect(mockedHub.setTag).toHaveBeenCalledWith("dry-run", true); }); it("shouldn't set any tags other than include if no opional options are specified", () => { @@ -123,8 +123,7 @@ describe("addPluginOptionTagsToHub", () => { "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledTimes(3); - expect(mockedHub.setTag).toHaveBeenCalledWith("include", "single-entry"); + expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); expect(mockedHub.setTag).toHaveBeenCalledWith("node", expect.any(String)); }); 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 3283fda0aa5b..6a3f90b8d69d 100644 --- a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts +++ b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts @@ -4,7 +4,7 @@ import { getSentryReleaseFiles } from "../../utils/releases"; describe("Simple Sourcemaps Upload (one string include + default options)", () => { it.each(BUNDLERS)("uploads the correct files using %s", async (bundler) => { - const release = `${pluginConfig.release || ""}-${bundler}`; + const release = `${pluginConfig.release?.name || ""}-${bundler}`; const sentryFiles = await getSentryReleaseFiles(release); diff --git a/packages/e2e-tests/scenarios/basic-upload/config.ts b/packages/e2e-tests/scenarios/basic-upload/config.ts index 4544cb913ce3..c869c8d01e92 100644 --- a/packages/e2e-tests/scenarios/basic-upload/config.ts +++ b/packages/e2e-tests/scenarios/basic-upload/config.ts @@ -5,8 +5,10 @@ import * as path from "path"; * The Sentry bundler plugin config object used for this test */ export const pluginConfig: Options = { - release: "basic-upload", - include: path.resolve(__dirname, "out"), + release: { + name: "basic-upload", + uploadLegacySourcemaps: path.resolve(__dirname, "out"), + }, authToken: process.env["SENTRY_AUTH_TOKEN"] || "", org: "sentry-sdks", project: "js-bundler-plugin-e2e-tests", diff --git a/packages/e2e-tests/scenarios/basic-upload/setup.ts b/packages/e2e-tests/scenarios/basic-upload/setup.ts index 25a01f527429..f6c4a4f4e604 100644 --- a/packages/e2e-tests/scenarios/basic-upload/setup.ts +++ b/packages/e2e-tests/scenarios/basic-upload/setup.ts @@ -4,7 +4,7 @@ import { pluginConfig } from "./config"; import { deleteAllReleases } from "../../utils/releases"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; -deleteAllReleases(pluginConfig.release || "") +deleteAllReleases(pluginConfig.release?.name || "") .then(() => { const entryPointPath = path.resolve(__dirname, "input", "index.js"); const outputDir = path.resolve(__dirname, "out"); diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index 593e149dd353..c434311bce74 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -37,8 +37,12 @@ export function createCjsBundles( plugins: [ sentryVitePlugin({ ...sentryUnpluginOptions, - release: `${sentryUnpluginOptions.release}-vite`, - include: `${sentryUnpluginOptions.include as string}/vite`, + release: { + name: `${sentryUnpluginOptions.release.name!}-vite`, + uploadLegacySourcemaps: `${ + sentryUnpluginOptions.release.uploadLegacySourcemaps as string + }/vite`, + }, }), ], }); @@ -49,8 +53,12 @@ export function createCjsBundles( plugins: [ sentryRollupPlugin({ ...sentryUnpluginOptions, - release: `${sentryUnpluginOptions.release}-rollup`, - include: `${sentryUnpluginOptions.include as string}/rollup`, + release: { + name: `${sentryUnpluginOptions.release.name!}-rollup`, + uploadLegacySourcemaps: `${ + sentryUnpluginOptions.release.uploadLegacySourcemaps as string + }/rollup`, + }, }), ], }) @@ -70,8 +78,12 @@ export function createCjsBundles( plugins: [ sentryEsbuildPlugin({ ...sentryUnpluginOptions, - release: `${sentryUnpluginOptions.release}-esbuild`, - include: `${sentryUnpluginOptions.include as string}/esbuild`, + release: { + name: `${sentryUnpluginOptions.release.name!}-esbuild`, + uploadLegacySourcemaps: `${ + sentryUnpluginOptions.release.uploadLegacySourcemaps as string + }/esbuild`, + }, }), ], minify: true, @@ -93,8 +105,12 @@ export function createCjsBundles( plugins: [ sentryWebpackPlugin({ ...sentryUnpluginOptions, - release: `${sentryUnpluginOptions.release}-webpack4`, - include: `${sentryUnpluginOptions.include as string}/webpack4`, + release: { + name: `${sentryUnpluginOptions.release.name!}-webpack4`, + uploadLegacySourcemaps: `${ + sentryUnpluginOptions.release.uploadLegacySourcemaps as string + }/webpack4`, + }, }), ], }, @@ -120,8 +136,12 @@ export function createCjsBundles( plugins: [ sentryWebpackPlugin({ ...sentryUnpluginOptions, - release: `${sentryUnpluginOptions.release}-webpack5`, - include: `${sentryUnpluginOptions.include as string}/webpack5`, + release: { + name: `${sentryUnpluginOptions.release.name!}-webpack5`, + uploadLegacySourcemaps: `${ + sentryUnpluginOptions.release.uploadLegacySourcemaps as string + }/webpack5`, + }, }), ], }, diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index 5f0dc5fbfed5..f7da397aa998 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -1,4 +1,3 @@ -import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -6,7 +5,5 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { - release: "I AM A RELEASE!", - include: outputDir, - dryRun: true, -} as Options); + release: { name: "I AM A RELEASE!", create: false }, +}); diff --git a/packages/integration-tests/fixtures/build-information-injection/setup.ts b/packages/integration-tests/fixtures/build-information-injection/setup.ts index 5112dea02e89..23b6a0a21ac9 100644 --- a/packages/integration-tests/fixtures/build-information-injection/setup.ts +++ b/packages/integration-tests/fixtures/build-information-injection/setup.ts @@ -1,4 +1,3 @@ -import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -6,7 +5,5 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { - include: outputDir, - dryRun: true, _experiments: { injectBuildInformation: true }, -} as Options); +}); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts index 5f082124ab02..759db2f6ca3f 100644 --- a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts @@ -1,4 +1,3 @@ -import { Options } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { createCjsBundles } from "../../utils/create-cjs-bundles"; @@ -6,10 +5,7 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { - release: "I AM A RELEASE!", + release: { name: "I AM A RELEASE!", inject: false, create: false }, project: "releasesProject", org: "releasesOrg", - include: outputDir, - dryRun: true, - injectRelease: false, -} as Options); +}); From be03d331e523130908b47324e5cc792b5bd46509 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 8 May 2023 16:47:49 +0200 Subject: [PATCH 186/640] ref(core): Improve log messages (#240) --- packages/bundler-plugin-core/src/index.ts | 40 ++++++++++++++----- .../src/plugins/debug-id-upload.ts | 29 +++++++++++--- 2 files changed, 53 insertions(+), 16 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 898d79c1ffb3..efb45233212a 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -119,9 +119,13 @@ export function sentryUnpluginFactory({ ); if (!options.release.inject) { - logger.debug("Release injection disabled via `release.inject`. Will not inject."); + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); } else if (!options.release.name) { - logger.warn("No release name provided. Will not inject release."); + logger.warn( + "No release name provided. Will not inject release. Please set the `release.name` option to identifiy your release." + ); } else { const injectionCode = generateGlobalInjectorCode({ release: options.release.name, @@ -131,13 +135,21 @@ export function sentryUnpluginFactory({ } if (!options.release.name) { - logger.warn("No release name provided. Will not manage release."); + logger.warn( + "No release name provided. Will not create release. Please set the `release.name` option to identifiy your release." + ); } else if (!options.authToken) { - logger.warn("No auth token provided. Will not manage release."); + logger.warn( + "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + ); } else if (!options.org) { - logger.warn("No org provided. Will not manage release."); + logger.warn( + "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + ); } else if (!options.project) { - logger.warn("No project provided. Will not manage release."); + logger.warn( + "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + ); } else { plugins.push( releaseManagementPlugin({ @@ -168,13 +180,21 @@ export function sentryUnpluginFactory({ if (options.sourcemaps) { if (!options.authToken) { - logger.warn("No auth token provided. Will not upload source maps."); + logger.warn( + "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + ); } else if (!options.org) { - logger.warn("No org provided. Will not upload source maps."); + logger.warn( + "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + ); } else if (!options.project) { - logger.warn("No project provided. Will not upload source maps."); + logger.warn( + "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + ); } else if (!options.sourcemaps.assets) { - logger.warn("No assets defined. Will not upload source maps."); + logger.warn( + "No assets defined. Will not upload source maps. Please provide set the `assets` option to your build-output folder." + ); } else { plugins.push(debugIdInjectionPlugin()); plugins.push( diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index 62e4a9473e37..f2e00fd57d80 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -111,13 +111,18 @@ export async function prepareBundleForDebugIdUpload( try { bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); } catch (e) { - logger.warn(`Could not read bundle to determine debug ID and source map: ${bundleFilePath}`); + logger.error( + `Could not read bundle to determine debug ID and source map: ${bundleFilePath}`, + e + ); return; } const debugId = determineDebugIdFromBundleSource(bundleContent); if (debugId === undefined) { - logger.warn(`Could not determine debug ID from bundle: ${bundleFilePath}`); + logger.warn( + `Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ${bundleFilePath}` + ); return; } @@ -207,21 +212,33 @@ async function prepareSourceMapForDebugIdUpload( debugId: string, logger: Logger ): Promise { + let sourceMapFileContent: string; try { - const sourceMapFileContent = await util.promisify(fs.readFile)(sourceMapPath, { + sourceMapFileContent = await util.promisify(fs.readFile)(sourceMapPath, { encoding: "utf8", }); + } catch (e) { + logger.error(`Failed to read source map for debug ID upload: ${sourceMapPath}`, e); + return; + } - const map = JSON.parse(sourceMapFileContent) as Record; - + let map: Record; + try { + map = JSON.parse(sourceMapFileContent) as Record; // For now we write both fields until we know what will become the standard - if ever. map["debug_id"] = debugId; map["debugId"] = debugId; + } catch (e) { + logger.error(`Failed to parse source map for debug ID upload: ${sourceMapPath}`); + return; + } + try { await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { encoding: "utf8", }); } catch (e) { - logger.warn(`Failed to prepare source map for debug ID upload: ${sourceMapPath}`); + logger.error(`Failed to prepare source map for debug ID upload: ${sourceMapPath}`, e); + return; } } From 47a3fb859e6ea1c830d0c8b3a3ed74e4a8f2d3e2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 8 May 2023 17:11:05 +0200 Subject: [PATCH 187/640] Add changelog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbc31c39b7df..a5af97e8d7f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.0.0-alpha.2 + +This is a pre-release for version 2. + ## 0.7.2 - fix(core): Use createRequire to not use built-in require in ESM (#212) From 30ab0494f5fd8ee117216a36538056223674b800 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 8 May 2023 17:29:07 +0200 Subject: [PATCH 188/640] Revert "Add changelog entry" This reverts commit 47a3fb859e6ea1c830d0c8b3a3ed74e4a8f2d3e2. --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5af97e8d7f3..fbc31c39b7df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,6 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott -## 2.0.0-alpha.2 - -This is a pre-release for version 2. - ## 0.7.2 - fix(core): Use createRequire to not use built-in require in ESM (#212) From dfb8d94d2591d54a7a3657429fe725828a426d92 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 10 May 2023 14:37:10 +0200 Subject: [PATCH 189/640] fix(webpack): Inject different debug IDs for different bundles (#242) --- packages/webpack-plugin/src/index.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 6e942daeab2a..0ee18bbbf58d 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -37,7 +37,6 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { function webpackDebugIdInjectionPlugin(): UnpluginOptions { const pluginName = "sentry-webpack-debug-id-injection-plugin"; - const debugIdSnippet = getDebugIdSnippet(uuidv4()); return { name: pluginName, @@ -48,7 +47,7 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { new compiler.webpack.BannerPlugin({ raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: debugIdSnippet, + banner: () => getDebugIdSnippet(uuidv4()), }) ); } else { @@ -57,7 +56,7 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { new Webpack4BannerPlugin({ raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: debugIdSnippet, + banner: () => getDebugIdSnippet(uuidv4()), }) ); } From fa023dc31534d60dd9a18d3f59c377c29d00513a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 15 May 2023 10:18:26 +0200 Subject: [PATCH 190/640] feat(core): Add `deleteFilesAfterUpload` option (#244) --- packages/bundler-plugin-core/src/index.ts | 1 + .../src/plugins/debug-id-upload.ts | 19 +++++++++++++++++++ .../src/sentry/telemetry.ts | 2 +- packages/bundler-plugin-core/src/types.ts | 4 +--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index efb45233212a..7df1618e705d 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -201,6 +201,7 @@ export function sentryUnpluginFactory({ debugIdUploadPlugin({ assets: options.sourcemaps.assets, ignore: options.sourcemaps.ignore, + deleteFilesAfterUpload: options.sourcemaps.deleteFilesAfterUpload, dist: options.release.dist, releaseName: options.release.name, logger: logger, diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index f2e00fd57d80..e60b59b455e6 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -18,6 +18,7 @@ interface DebugIdUploadPluginOptions { handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; + deleteFilesAfterUpload?: string | string[]; sentryCliOptions: { url: string; authToken: string; @@ -39,6 +40,7 @@ export function debugIdUploadPlugin({ sentryHub, sentryClient, sentryCliOptions, + deleteFilesAfterUpload, }: DebugIdUploadPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", @@ -88,6 +90,23 @@ export function debugIdUploadPlugin({ ], useArtifactBundle: true, }); + + if (deleteFilesAfterUpload) { + const filePathsToDelete = await glob(deleteFilesAfterUpload, { + absolute: true, + nodir: true, + }); + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }) + ) + ); + } } catch (e) { sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); await sentryClient.flush(); diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index a926a4bf785a..2b08f0f16e74 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -90,7 +90,7 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund if (sourcemaps?.assets) { hub.setTag("debug-id-upload", true); } - if (sourcemaps?.deleteAfterUpload) { + if (sourcemaps?.deleteFilesAfterUpload) { hub.setTag("delete-after-upload", true); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 9230541e17e4..8ad761e8335c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -125,10 +125,8 @@ export interface Options { * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) * * Use the `debug` option to print information about which files end up being deleted. - * - * @hidden Not yet implemented. */ - deleteAfterUpload?: string | string[]; + deleteFilesAfterUpload?: string | string[]; }; /** From f4446a595d014d147e7f531f41ae83157fe9951d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 17 May 2023 12:10:07 +0100 Subject: [PATCH 191/640] feat(core): Implements rewrite sources for debug ID upload (#243) --- packages/bundler-plugin-core/src/index.ts | 1 + .../src/plugins/debug-id-upload.ts | 31 ++++++++++++++++--- packages/bundler-plugin-core/src/types.ts | 2 -- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7df1618e705d..82c9223084df 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -206,6 +206,7 @@ export function sentryUnpluginFactory({ releaseName: options.release.name, logger: logger, handleRecoverableError: handleRecoverableError, + rewriteSourcesHook: options.sourcemaps.rewriteSources, sentryHub, sentryClient, sentryCliOptions: { diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index e60b59b455e6..e10d22f07527 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -9,12 +9,17 @@ import { promisify } from "util"; import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; +interface RewriteSourcesHook { + (source: string, map: any): string; +} + interface DebugIdUploadPluginOptions { logger: Logger; assets: string | string[]; ignore?: string | string[]; releaseName?: string; dist?: string; + rewriteSourcesHook?: RewriteSourcesHook; handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; @@ -40,6 +45,7 @@ export function debugIdUploadPlugin({ sentryHub, sentryClient, sentryCliOptions, + rewriteSourcesHook, deleteFilesAfterUpload, }: DebugIdUploadPluginOptions): UnpluginOptions { return { @@ -75,7 +81,8 @@ export function debugIdUploadPlugin({ chunkFilePath, tmpUploadFolder, String(chunkIndex), - logger + logger, + rewriteSourcesHook ?? defaultRewriteSourcesHook ); }) ); @@ -124,7 +131,8 @@ export async function prepareBundleForDebugIdUpload( bundleFilePath: string, uploadFolder: string, uniqueUploadName: string, - logger: Logger + logger: Logger, + rewriteSourcesHook: RewriteSourcesHook ) { let bundleContent; try { @@ -162,6 +170,7 @@ export async function prepareBundleForDebugIdUpload( sourceMapPath, path.join(uploadFolder, `${uniqueUploadName}.js.map`), debugId, + rewriteSourcesHook, logger ); } @@ -229,6 +238,7 @@ async function prepareSourceMapForDebugIdUpload( sourceMapPath: string, targetPath: string, debugId: string, + rewriteSourcesHook: RewriteSourcesHook, logger: Logger ): Promise { let sourceMapFileContent: string; @@ -241,9 +251,9 @@ async function prepareSourceMapForDebugIdUpload( return; } - let map: Record; + let map: Record; try { - map = JSON.parse(sourceMapFileContent) as Record; + map = JSON.parse(sourceMapFileContent) as { sources: unknown; [key: string]: unknown }; // For now we write both fields until we know what will become the standard - if ever. map["debug_id"] = debugId; map["debugId"] = debugId; @@ -252,6 +262,10 @@ async function prepareSourceMapForDebugIdUpload( return; } + if (map["sources"] && Array.isArray(map["sources"])) { + map["sources"].map((source: string) => rewriteSourcesHook(source, map)); + } + try { await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { encoding: "utf8", @@ -261,3 +275,12 @@ async function prepareSourceMapForDebugIdUpload( return; } } + +const PROTOCOL_REGEX = /^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\//; +function defaultRewriteSourcesHook(source: string): string { + if (source.match(PROTOCOL_REGEX)) { + return source.replace(PROTOCOL_REGEX, ""); + } else { + return path.relative(process.cwd(), path.normalize(source)); + } +} diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 8ad761e8335c..abb6d0f0ebfa 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -114,8 +114,6 @@ export interface Options { * Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. * * Defaults to making all sources relative to `process.cwd()` while building. - * - * @hidden Not yet implemented. */ rewriteSources?: (source: string, map: any) => string; From 9c0def8dfb781552f922adfbc2de66adec2d946c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 17 May 2023 12:20:09 +0100 Subject: [PATCH 192/640] ref(core): Use debug ID as filename for upload (#247) --- .../src/plugins/debug-id-upload.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index e10d22f07527..a755167ca086 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -80,7 +80,7 @@ export function debugIdUploadPlugin({ await prepareBundleForDebugIdUpload( chunkFilePath, tmpUploadFolder, - String(chunkIndex), + chunkIndex, logger, rewriteSourcesHook ?? defaultRewriteSourcesHook ); @@ -130,7 +130,7 @@ export function debugIdUploadPlugin({ export async function prepareBundleForDebugIdUpload( bundleFilePath: string, uploadFolder: string, - uniqueUploadName: string, + chunkIndex: number, logger: Logger, rewriteSourcesHook: RewriteSourcesHook ) { @@ -147,12 +147,14 @@ export async function prepareBundleForDebugIdUpload( const debugId = determineDebugIdFromBundleSource(bundleContent); if (debugId === undefined) { - logger.warn( + logger.debug( `Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ${bundleFilePath}` ); return; } + const uniqueUploadName = `${debugId}-${chunkIndex}`; + bundleContent += `\n//# debugId=${debugId}`; const writeSourceFilePromise = fs.promises.writeFile( path.join(uploadFolder, `${uniqueUploadName}.js`), @@ -227,7 +229,8 @@ async function determineSourceMapPathFromBundle( // noop } - logger.warn(`Could not determine source map path for bundle: ${bundlePath}`); + // This is just a debug message because it can be quite spammy for some frameworks + logger.debug(`Could not determine source map path for bundle: ${bundlePath}`); return undefined; } From b2f4dbe49c662ea61ab3c8914ddfb970b75c36ab Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 17 May 2023 16:31:37 +0100 Subject: [PATCH 193/640] meta: Update READMEs for v2 (#248) --- README.md | 14 +- packages/bundler-plugin-core/README.md | 10 +- packages/dev-utils/.eslintrc.js | 20 + packages/dev-utils/index.ts | 1 + packages/dev-utils/package.json | 18 + .../src/generate-documentation-table.ts | 401 ++++++++++++++++++ packages/dev-utils/tsconfig.json | 8 + packages/esbuild-plugin/.gitignore | 1 + packages/esbuild-plugin/README.md | 163 ------- packages/esbuild-plugin/README_TEMPLATE.md | 84 ++++ packages/esbuild-plugin/package.json | 4 +- packages/esbuild-plugin/src/prepack.ts | 7 + packages/rollup-plugin/.gitignore | 1 + packages/rollup-plugin/README.md | 163 ------- packages/rollup-plugin/README_TEMPLATE.md | 86 ++++ packages/rollup-plugin/package.json | 8 +- packages/rollup-plugin/src/prepack.ts | 7 + packages/vite-plugin/.gitignore | 1 + packages/vite-plugin/README.md | 163 ------- packages/vite-plugin/README_TEMPLATE.md | 91 ++++ packages/vite-plugin/package.json | 8 +- packages/vite-plugin/src/prepack.ts | 7 + packages/webpack-plugin/.gitignore | 1 + packages/webpack-plugin/README.md | 163 ------- packages/webpack-plugin/README_TEMPLATE.md | 85 ++++ packages/webpack-plugin/package.json | 4 +- packages/webpack-plugin/src/prepack.ts | 7 + 27 files changed, 851 insertions(+), 675 deletions(-) create mode 100644 packages/dev-utils/.eslintrc.js create mode 100644 packages/dev-utils/index.ts create mode 100644 packages/dev-utils/package.json create mode 100644 packages/dev-utils/src/generate-documentation-table.ts create mode 100644 packages/dev-utils/tsconfig.json delete mode 100644 packages/esbuild-plugin/README.md create mode 100644 packages/esbuild-plugin/README_TEMPLATE.md create mode 100644 packages/esbuild-plugin/src/prepack.ts delete mode 100644 packages/rollup-plugin/README.md create mode 100644 packages/rollup-plugin/README_TEMPLATE.md create mode 100644 packages/rollup-plugin/src/prepack.ts delete mode 100644 packages/vite-plugin/README.md create mode 100644 packages/vite-plugin/README_TEMPLATE.md create mode 100644 packages/vite-plugin/src/prepack.ts delete mode 100644 packages/webpack-plugin/README.md create mode 100644 packages/webpack-plugin/README_TEMPLATE.md create mode 100644 packages/webpack-plugin/src/prepack.ts diff --git a/README.md b/README.md index 1a3931382379..6768f1148d85 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,14 @@ # Sentry Bundler Plugins -Universal Sentry plugin for various JavaScript bundlers. Based on [unjs/unplugin](https://github.com/unjs/unplugin). Currently supports Rollup, Vite, esbuild, Webpack 4 and Webpack 5. +Sentry plugins for various JavaScript bundlers. Currently supporting Rollup, Vite, esbuild, Webpack 4 and Webpack 5. Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin) +- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) +- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) +- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) +- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) ### Features @@ -24,12 +24,8 @@ The Sentry Bundler Plugins take care of Sentry-related tasks at build time of yo - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically associate errors with releases (Release injection) -The Sentry Bundler Plugins can be used as a replacement of [Sentry CLI](https://docs.sentry.io/learn/cli/) for these tasks. - ### More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) - [Sentry Discord](https://discord.gg/Ww9hbqr) - [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/bundler-plugin-core/README.md b/packages/bundler-plugin-core/README.md index e95ece70c9c8..31222587690a 100644 --- a/packages/bundler-plugin-core/README.md +++ b/packages/bundler-plugin-core/README.md @@ -10,10 +10,10 @@ Core package containing the bundler-agnostic functionality used by the bundler p Check out the individual packages for more information and examples: -- [Rollup](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin) -- [Vite](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin) -- [esbuild](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin) -- [Webpack](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin) +- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) +- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) +- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) +- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) ### Features @@ -27,7 +27,5 @@ The Sentry bundler plugin core package contains the following functionality: ### More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) - [Sentry Discord](https://discord.gg/Ww9hbqr) - [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/dev-utils/.eslintrc.js b/packages/dev-utils/.eslintrc.js new file mode 100644 index 000000000000..86e33dacdbc6 --- /dev/null +++ b/packages/dev-utils/.eslintrc.js @@ -0,0 +1,20 @@ +const jestPackageJson = require("jest/package.json"); + +/** @type {import('eslint').ESLint.Options} */ +module.exports = { + root: true, + extends: ["@sentry-internal/eslint-config/base"], + ignorePatterns: [".eslintrc.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/dev-utils/index.ts b/packages/dev-utils/index.ts new file mode 100644 index 000000000000..ec61b07eff58 --- /dev/null +++ b/packages/dev-utils/index.ts @@ -0,0 +1 @@ +export * from "./src/generate-documentation-table"; diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json new file mode 100644 index 000000000000..b1a7d5414133 --- /dev/null +++ b/packages/dev-utils/package.json @@ -0,0 +1,18 @@ +{ + "name": "@sentry-internal/dev-utils", + "version": "0.7.2", + "license": "MIT", + "private": true, + "files": [ + "src" + ], + "peerDependencies": { + "eslint": "^8.14.0" + }, + "devDependencies": { + "eslint": "^8.14.0" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts new file mode 100644 index 000000000000..5a07d7c571a8 --- /dev/null +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -0,0 +1,401 @@ +type OptionDocumentation = { + name: string; + fullDescription: string; + type?: string; + children?: OptionDocumentation[]; +}; + +const options: OptionDocumentation[] = [ + { + name: "org", + type: "string", + fullDescription: "The slug of the Sentry organization associated with the app.", + }, + { + name: "project", + fullDescription: + "The slug of the Sentry project associated with the app.\n\nThis value can also be specified via the `SENTRY_PROJECT` environment variable.", + }, + { + name: "authToken", + type: "string", + fullDescription: + "The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: project:releases (and org:read if setCommits option is used).\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.", + }, + { + name: "url", + type: "string", + fullDescription: + "The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io.\n\nThis value can also be set via the SENTRY_URL environment variable.\n\nDefaults to https://sentry.io/, which is the correct value for SaaS customers.", + }, + { + name: "headers", + type: "Record", + fullDescription: "Headers added to every outgoing network request.", + }, + { + name: "debug", + type: "boolean", + fullDescription: "Print useful debug information. Defaults to `false`.", + }, + { + name: "silent", + type: "boolean", + fullDescription: "Suppresses all logs. Defaults to `false`.", + }, + { + name: "errorHandler", + type: "(err: Error) => void", + fullDescription: `When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. + +By default, the plugin will simply throw an error, thereby stopping the bundling process. If an \`errorHandler\` callback is provided, compilation will continue, unless an error is thrown in the provided callback. + +To allow compilation to continue but still emit a warning, set this option to the following: + +\`\`\` +errorHandler: (err) => { + console.warn(err); +} +\`\`\` +`, + }, + { + name: "telemetry", + type: "boolean", + fullDescription: + "If set to true, internal plugin errors and performance data will be sent to Sentry.\n\nAt Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin.\n\nDefaults to `true`.", + }, + { + name: "disable", + type: "boolean", + fullDescription: "Completely disables all functionality of the plugin. Defaults to `false`.", + }, + { + name: "sourcemaps", + fullDescription: + "Options for source maps uploading. Leave this option undefined if you do not want to upload source maps to Sentry.", + children: [ + { + name: "assets", + type: "string | string[]", + fullDescription: + "A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", + }, + { + name: "ignore", + type: "string | string[]", + fullDescription: + "A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry.\n\nDefault: `[]`\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", + }, + { + name: "rewriteSources", + type: "(source: string, map: any) => string", + fullDescription: + "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nDefaults to making all sources relative to `process.cwd()` while building.", + }, + { + name: "deleteFilesAfterUpload", + type: "string | string[]", + fullDescription: + "A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", + }, + ], + }, + + { + name: "release", + fullDescription: + "Options related to managing the Sentry releases for a build.\n\nMore info: https://docs.sentry.io/product/releases/", + children: [ + { + name: "name", + type: "string", + fullDescription: + "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latterrequires access to git CLI and for the root directory to be a valid repository)\n\nIf you didn't provide a value and the plugin can't automatically detect one, no release will be created.", + }, + { + name: "inject", + type: "boolean", + fullDescription: + "Whether the plugin should inject release information into the build for the SDK to pick it up when sending events. (recommended)\n\nDefaults to `true`.", + }, + { + name: "create", + type: "boolean", + fullDescription: + "Whether the plugin should create a release on Sentry during the build. Note that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. (for example via the `inject` option)\n\nDefaults to `true`.", + }, + { + name: "finalize", + type: "boolean", + fullDescription: + "Whether the Sentry release should be automatically finalized (meaning an end timestamp is added) after the build ends.\n\nDefaults to `true`.", + }, + { + name: "dist", + type: "string", + fullDescription: + "Unique identifier for the distribution, used to further segment your release.", + }, + { + name: "vcsRemote", + type: "string", + fullDescription: + "Version control system remote name.\n\nThis value can also be specified via the `SENTRY_VSC_REMOTE` environment variable.\n\nDefaults to 'origin'.", + }, + { + name: "setCommits", + fullDescription: "Option to associate the created release with its commits in Sentry.", + children: [ + { + name: "previousCommit", + type: "string", + fullDescription: + "The commit before the beginning of this release (in other words, the last commit of the previous release).\n\nDefaults to the last commit of the previous release in Sentry.\n\nIf there was no previous release, the last 10 commits will be used.", + }, + { + name: "ignoreMissing", + type: "boolean", + fullDescription: + "If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command.\n\nDefaults to `false`.", + }, + { + name: "ignoreEmpty", + type: "boolean", + fullDescription: + "If this flag is set, the setCommits step will not fail and just exit silently if no new commits for a given release have been found.\n\nDefaults to `false`.", + }, + { + name: "auto", + type: "boolean", + fullDescription: + "Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation.\n\nIf you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`.", + }, + { + name: "repo", + type: "string", + fullDescription: + "The full repo name as defined in Sentry.\n\nRequired if the `auto` option is not set to `true`.", + }, + { + name: "commit", + type: "string", + fullDescription: + "The current (last) commit in the release.\n\nRequired if the `auto` option is not set to `true`.", + }, + ], + }, + { + name: "deploy", + fullDescription: "Adds deployment information to the release in Sentry.", + children: [ + { + name: "env", + type: "string", + fullDescription: + "Environment for this release. Values that make sense here would be `production` or `staging`.", + }, + { + name: "started", + type: "number | string", + fullDescription: + "Deployment start time in Unix timestamp (in seconds) or ISO 8601 format.", + }, + { + name: "finished", + type: "number | string", + fullDescription: + "Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format.", + }, + { + name: "time", + type: "number", + fullDescription: + "Deployment duration (in seconds). Can be used instead of started and finished.", + }, + { + name: "name", + type: "string", + fullDescription: "Human readable name for the deployment.", + }, + { + name: "url", + type: "string", + fullDescription: "URL that points to the deployment.", + }, + ], + }, + { + name: "cleanArtifacts", + type: "boolean", + fullDescription: + "Remove all previously uploaded artifacts for this release on Sentry before the upload.\n\nDefaults to `false`.", + }, + { + name: "uploadLegacySourcemaps", + type: "string | IncludeEntry | Array", + fullDescription: `Legacy method of uploading source maps. (not recommended unless necessary) +One or more paths that should be scanned recursively for sources. + +Each path can be given as a string or an object with more specific options. + +The modern version of doing source maps upload is more robust and way easier to get working but has to inject a very small snippet of JavaScript into your output bundles. +In situations where this leads to problems (e.g subresource integrity) you can use this option as a fallback. + +The \`IncludeEntry\` type looks as follows: + +\`\`\`ts +type IncludeEntry = { + /** + * One or more paths to scan for files to upload. + */ + paths: string[]; + + /** + * One or more paths to ignore during upload. + * Overrides entries in ignoreFile file. + * + * Defaults to \`['node_modules']\` if neither \`ignoreFile\` nor \`ignore\` is set. + */ + ignore?: string | string[]; + + /** + * Path to a file containing list of files/directories to ignore. + * + * Can point to \`.gitignore\` or anything with the same format. + */ + ignoreFile?: string; + + /** + * Array of file extensions of files to be collected for the file upload. + * + * By default the following file extensions are processed: js, map, jsbundle and bundle. + */ + ext?: string[]; + + /** + * URL prefix to add to the beginning of all filenames. + * Defaults to '~/' but you might want to set this to the full URL. + * + * This is also useful if your files are stored in a sub folder. eg: url-prefix '~/static/js'. + */ + urlPrefix?: string; + + /** + * URL suffix to add to the end of all filenames. + * Useful for appending query parameters. + */ + urlSuffix?: string; + + /** + * When paired with the \`rewrite\` option, this will remove a prefix from filename references inside of + * sourcemaps. For instance you can use this to remove a path that is build machine specific. + * Note that this will NOT change the names of uploaded files. + */ + stripPrefix?: string[]; + + /** + * When paired with the \`rewrite\` option, this will add \`~\` to the \`stripPrefix\` array. + * + * Defaults to \`false\`. + */ + stripCommonPrefix?: boolean; + + /** + * Determines whether sentry-cli should attempt to link minified files with their corresponding maps. + * By default, it will match files and maps based on name, and add a Sourcemap header to each minified file + * for which it finds a map. Can be disabled if all minified files contain sourceMappingURL. + * + * Defaults to true. + */ + sourceMapReference?: boolean; + + /** + * Enables rewriting of matching source maps so that indexed maps are flattened and missing sources + * are inlined if possible. + * + * Defaults to true + */ + rewrite?: boolean; + + /** + * When \`true\`, attempts source map validation before upload if rewriting is not enabled. + * It will spot a variety of issues with source maps and cancel the upload if any are found. + * + * Defaults to \`false\` as this can cause false positives. + */ + validate?: boolean; +}; +\`\`\` + +`, + }, + ], + }, + { + name: "_experiments", + type: "string", + fullDescription: + "Options that are considered experimental and subject to change. This option does not follow semantic versioning and may change in any release.", + children: [ + { + name: "injectBuildInformation", + type: "boolean", + fullDescription: + "If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. This contains information about the build, e.g. dependencies, node version and other useful data.\n\nDefaults to `false`.", + }, + ], + }, +]; + +function generateTableOfContents( + depth: number, + parentId: string, + nodes: OptionDocumentation[] +): string { + return nodes + .map((node) => { + const id = `${parentId}-${node.name.toLowerCase()}`; + let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id})`; + if (node.children && depth <= 0) { + output += "\n"; + output += generateTableOfContents(depth + 1, id, node.children); + } + return output; + }) + .join("\n"); +} + +function generateDescriptions( + parentName: string | undefined, + parentId: string, + nodes: OptionDocumentation[] +): string { + return nodes + .map((node) => { + const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; + const id = `${parentId}-${node.name.toLowerCase()}`; + let output = `### \`${name}\` + + + +${node.type === undefined ? "" : `Type: \`${node.type}\``} + +${node.fullDescription} +`; + if (node.children) { + output += generateDescriptions(name, id, node.children); + } + return output; + }) + .join("\n"); +} + +export function generateOptionsDocumentation(): string { + return `## Options + +${generateTableOfContents(0, "option", options)} + +${generateDescriptions(undefined, "option", options)} +`; +} diff --git a/packages/dev-utils/tsconfig.json b/packages/dev-utils/tsconfig.json new file mode 100644 index 000000000000..e8df37e0993d --- /dev/null +++ b/packages/dev-utils/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "include": ["./**/*"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/esbuild-plugin/.gitignore b/packages/esbuild-plugin/.gitignore index 1521c8b7652b..cf09378b5770 100644 --- a/packages/esbuild-plugin/.gitignore +++ b/packages/esbuild-plugin/.gitignore @@ -1 +1,2 @@ dist +README.md diff --git a/packages/esbuild-plugin/README.md b/packages/esbuild-plugin/README.md deleted file mode 100644 index 6f52d7b38b28..000000000000 --- a/packages/esbuild-plugin/README.md +++ /dev/null @@ -1,163 +0,0 @@ -

- - Sentry - -

- -# Sentry Esbuild Plugin - -A esbuild plugin that provides release management features for Sentry: - -- Sourcemap upload -- Release creation -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically association of errors with releases (Release injection) - -## Installation - -Using npm: - -```bash -$ npm install @sentry/esbuild-plugin --save-dev -``` - -Using yarn: - -```bash -$ yarn add @sentry/esbuild-plugin --dev -``` - -## Usage - -```js -// esbuild.config.js -const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); - -require("esbuild").build({ - plugins: [ - sentryEsbuildPlugin({ - include: ".", - ignore: ["node_modules", "esbuild.config.js"], - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}); -``` - -As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. - -### Configuration - -The Sentry Esbuild Plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | -| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | -| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | - -#### options.include: - -| Option | Type | Required | Description | -| ------------------ | ------------------- | -------- | ---------------------------------------------- | -| paths | `string[]` | required | One or more paths to scan for files to upload. | -| ignoreFile | `string` | optional | See above. | -| ignore | `string`/`string[]` | optional | See above. | -| ext | `array` | optional | See above. | -| urlPrefix | `string` | optional | See above. | -| urlSuffix | `string` | optional | See above. | -| stripPrefix | `array` | optional | See above. | -| stripCommonPrefix | `boolean` | optional | See above. | -| sourceMapReference | `boolean` | optional | See above. | -| rewrite | `boolean` | optional | See above. | - -Example: - -```ts -// esbuild.config.js -const sentryEsbuildPlugin = require("@sentry/esbuild-plugin"); - -require("esbuild").build({ - plugins: [ - sentryEsbuildPlugin({ - // ... - include: [ - { - paths: ["./packages"], - urlPrefix: "~/path/to/packages", - }, - { - paths: ["./client"], - urlPrefix: "~/path/to/client", - }, - ], - }), - ], -}); -``` - -#### options.setCommits: - -| Option | Type | Required | Description | -| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | -| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | -| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | -| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | -| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | - -#### options.deploy: - -| Option | Type | Required | Description | -| -------- | -------- | -------- | -------------------------------------------------------------------------------- | -| env | `string` | required | Environment value for the release, for example `production` or `staging`. | -| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | -| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | -| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | -| name | `string` | optional | Human-readable name for this deployment. | -| url | `string` | optional | URL that points to the deployment. | - -You can find more information about these options in our official docs: -https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. - -### More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md new file mode 100644 index 000000000000..0bec8eb35b5e --- /dev/null +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -0,0 +1,84 @@ +

+ + Sentry + +

+ +# Sentry Esbuild Plugin + +[![npm version](https://img.shields.io/npm/v/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) + +> An esbuild plugin that provides source map and release management support for Sentry. + +## Installation + +Using npm: + +```bash +npm install @sentry/esbuild-plugin --save-dev +``` + +Using yarn: + +```bash +yarn add @sentry/esbuild-plugin --dev +``` + +Using pnpm: + +```bash +pnpm install @sentry/esbuild-plugin --dev +``` + +## Example + +```js +// esbuild.config.js +const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); + +require("esbuild").build({ + sourcemap: true, // Source map generation must be turned on + plugins: [ + // Put the Sentry esbuild plugin after all other plugins + sentryEsbuildPlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + + // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ + // and need `project:releases` and `org:read` scopes + authToken: process.env.SENTRY_AUTH_TOKEN, + + sourcemaps: { + // Specify the directory containing build artifacts + assets: "./**", + // Don't upload the source maps of dependencies + ignore: ["./node_modules/**"], + }, + + // Helps troubleshooting - set to false to make plugin less noisy + debug: true, + + // Use the following option if you're on an SDK version lower than 7.47.0: + // release: { + // uploadLegacySourcemaps: { + // include: ".", + // ignore: ["node_modules"], + // }, + // }, + + // Optionally uncomment the line below to override automatic release name detection + // release: process.env.RELEASE, + }), + ], +}); +``` + +#OPTIONS_SECTION_INSERT# + +## More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 4c83bb53f096..3b1560c23ac2 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -44,7 +44,8 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test" + "lint": "eslint ./src ./test", + "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { "@sentry/bundler-plugin-core": "0.7.2", @@ -68,6 +69,7 @@ "jest": "^28.1.1", "rimraf": "^3.0.2", "rollup": "2.75.7", + "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/esbuild-plugin/src/prepack.ts b/packages/esbuild-plugin/src/prepack.ts new file mode 100644 index 000000000000..55793e25fa95 --- /dev/null +++ b/packages/esbuild-plugin/src/prepack.ts @@ -0,0 +1,7 @@ +import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; +import * as fs from "fs"; +import * as path from "path"; + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/packages/rollup-plugin/.gitignore b/packages/rollup-plugin/.gitignore index 1521c8b7652b..cf09378b5770 100644 --- a/packages/rollup-plugin/.gitignore +++ b/packages/rollup-plugin/.gitignore @@ -1 +1,2 @@ dist +README.md diff --git a/packages/rollup-plugin/README.md b/packages/rollup-plugin/README.md deleted file mode 100644 index 8b6fb3c01635..000000000000 --- a/packages/rollup-plugin/README.md +++ /dev/null @@ -1,163 +0,0 @@ -

- - Sentry - -

- -# Sentry Rollup Plugin - -A Rollup plugin that provides release management features for Sentry: - -- Sourcemap upload -- Release creation -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically association of errors with releases (Release injection) - -## Installation - -Using npm: - -```bash -$ npm install @sentry/rollup-plugin --save-dev -``` - -Using yarn: - -```bash -$ yarn add @sentry/rollup-plugin --dev -``` - -## Usage - -```js -// rollup.config.js -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; - -export default { - plugins: [ - sentryRollupPlugin({ - include: ".", - ignore: ["node_modules", "rollup.config.js"], - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}; -``` - -As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. - -### Configuration - -The Sentry Rollup Plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | -| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | -| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | - -#### options.include: - -| Option | Type | Required | Description | -| ------------------ | ------------------- | -------- | ---------------------------------------------- | -| paths | `string[]` | required | One or more paths to scan for files to upload. | -| ignoreFile | `string` | optional | See above. | -| ignore | `string`/`string[]` | optional | See above. | -| ext | `array` | optional | See above. | -| urlPrefix | `string` | optional | See above. | -| urlSuffix | `string` | optional | See above. | -| stripPrefix | `array` | optional | See above. | -| stripCommonPrefix | `boolean` | optional | See above. | -| sourceMapReference | `boolean` | optional | See above. | -| rewrite | `boolean` | optional | See above. | - -Example: - -```js -// rollup.config.js -import sentryRollupPlugin from "@sentry/rollup-plugin"; - -export default { - plugins: [ - sentryRollupPlugin({ - // ... - include: [ - { - paths: ["./packages"], - urlPrefix: "~/path/to/packages", - }, - { - paths: ["./client"], - urlPrefix: "~/path/to/client", - }, - ], - }), - ], -}; -``` - -#### options.setCommits: - -| Option | Type | Required | Description | -| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | -| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | -| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | -| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | -| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | - -#### options.deploy: - -| Option | Type | Required | Description | -| -------- | -------- | -------- | -------------------------------------------------------------------------------- | -| env | `string` | required | Environment value for the release, for example `production` or `staging`. | -| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | -| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | -| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | -| name | `string` | optional | Human-readable name for this deployment. | -| url | `string` | optional | URL that points to the deployment. | - -You can find more information about these options in our official docs: -https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md new file mode 100644 index 000000000000..b84c027cea51 --- /dev/null +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -0,0 +1,86 @@ +

+ + Sentry + +

+ +# Sentry Rollup Plugin + +[![npm version](https://img.shields.io/npm/v/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) + +> A Rollup plugin that provides source map and release management support for Sentry. + +## Installation + +Using npm: + +```bash +npm install @sentry/rollup-plugin --save-dev +``` + +Using yarn: + +```bash +yarn add @sentry/rollup-plugin --dev +``` + +Using pnpm: + +```bash +pnpm install @sentry/rollup-plugin --dev +``` + +## Example + +```js +// rollup.config.js +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; + +export default { + plugins: [ + // Put the Sentry rollup plugin after all other plugins + sentryRollupPlugin({ + org: "___ORG_SLUG___", + project: "___PROJECT_SLUG___", + + // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ + // and need `project:releases` and `org:read` scopes + authToken: env.SENTRY_AUTH_TOKEN, + + sourcemaps: { + // Specify the directory containing build artifacts + assets: "./**", + // Don't upload the source maps of dependencies + ignore: ["./node_modules/**"], + }, + + // Helps troubleshooting - set to false to make plugin less noisy + debug: true, + + // Use the following option if you're on an SDK version lower than 7.47.0: + // release: { + // uploadLegacySourcemaps: { + // include: ".", + // ignore: ["node_modules"], + // }, + // }, + + // Optionally uncomment the line below to override automatic release name detection + // release: env.RELEASE, + }), + ], + output: { + sourcemap: true, // Source map generation must be turned on + }, +}; +``` + +#OPTIONS_SECTION_INSERT# + +## More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 7d75b51d4d2d..7bdcf499337e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -45,11 +45,12 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test" + "lint": "eslint ./src ./test", + "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "unplugin": "1.0.1", - "@sentry/bundler-plugin-core": "0.7.2" + "@sentry/bundler-plugin-core": "0.7.2", + "unplugin": "1.0.1" }, "peerDependencies": { "rollup": ">=3.2.0" @@ -70,6 +71,7 @@ "jest": "^28.1.1", "rimraf": "^3.0.2", "rollup": "2.75.7", + "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/rollup-plugin/src/prepack.ts b/packages/rollup-plugin/src/prepack.ts new file mode 100644 index 000000000000..55793e25fa95 --- /dev/null +++ b/packages/rollup-plugin/src/prepack.ts @@ -0,0 +1,7 @@ +import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; +import * as fs from "fs"; +import * as path from "path"; + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/packages/vite-plugin/.gitignore b/packages/vite-plugin/.gitignore index 1521c8b7652b..cf09378b5770 100644 --- a/packages/vite-plugin/.gitignore +++ b/packages/vite-plugin/.gitignore @@ -1 +1,2 @@ dist +README.md diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md deleted file mode 100644 index 77050e4db39d..000000000000 --- a/packages/vite-plugin/README.md +++ /dev/null @@ -1,163 +0,0 @@ -

- - Sentry - -

- -# Sentry Vite Plugin - -A Vite plugin that provides release management features for Sentry: - -- Sourcemap upload -- Release creation -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically association of errors with releases (Release injection) - -## Installation - -Using npm: - -```bash -$ npm install @sentry/vite-plugin --save-dev -``` - -Using yarn: - -```bash -$ yarn add @sentry/vite-plugin --dev -``` - -## Usage - -```ts -// vite.config.ts -import { sentryVitePlugin } from "@sentry/vite-plugin"; - -export default { - plugins: [ - sentryVitePlugin({ - include: ".", - ignore: ["node_modules", "vite.config.ts"], - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}; -``` - -As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. - -### Configuration - -The Sentry Vite Plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | -| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | -| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | - -#### options.include: - -| Option | Type | Required | Description | -| ------------------ | ------------------- | -------- | ---------------------------------------------- | -| paths | `string[]` | required | One or more paths to scan for files to upload. | -| ignoreFile | `string` | optional | See above. | -| ignore | `string`/`string[]` | optional | See above. | -| ext | `array` | optional | See above. | -| urlPrefix | `string` | optional | See above. | -| urlSuffix | `string` | optional | See above. | -| stripPrefix | `array` | optional | See above. | -| stripCommonPrefix | `boolean` | optional | See above. | -| sourceMapReference | `boolean` | optional | See above. | -| rewrite | `boolean` | optional | See above. | - -Example: - -```ts -// vite.config.ts -import { sentryVitePlugin } from "@sentry/vite-plugin"; - -export default { - plugins: [ - sentryVitePlugin({ - // ... - include: [ - { - paths: ["./packages"], - urlPrefix: "~/path/to/packages", - }, - { - paths: ["./client"], - urlPrefix: "~/path/to/client", - }, - ], - }), - ], -}; -``` - -#### options.setCommits: - -| Option | Type | Required | Description | -| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | -| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | -| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | -| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | -| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | - -#### options.deploy: - -| Option | Type | Required | Description | -| -------- | -------- | -------- | -------------------------------------------------------------------------------- | -| env | `string` | required | Environment value for the release, for example `production` or `staging`. | -| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | -| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | -| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | -| name | `string` | optional | Human-readable name for this deployment. | -| url | `string` | optional | URL that points to the deployment. | - -You can find more information about these options in our official docs: -https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md new file mode 100644 index 000000000000..4718ac924168 --- /dev/null +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -0,0 +1,91 @@ +

+ + Sentry + +

+ +# Sentry Vite Plugin + +[![npm version](https://img.shields.io/npm/v/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) + +> A Vite plugin that provides source map and release management support for Sentry. + +## Installation + +Using npm: + +```bash +npm install @sentry/vite-plugin --save-dev +``` + +Using yarn: + +```bash +yarn add @sentry/vite-plugin --dev +``` + +Using pnpm: + +```bash +pnpm install @sentry/vite-plugin --dev +``` + +## Example + +```ts +// vite.config.ts +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + sourcemap: true, // Source map generation must be turned on + }, + plugins: [ + vue(), + + // Put the Sentry vite plugin after all other plugins + sentryVitePlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + + // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ + // and need `project:releases` and `org:read` scopes + authToken: process.env.SENTRY_AUTH_TOKEN, + + sourcemaps: { + // Specify the directory containing build artifacts + assets: "./**", + // Don't upload the source maps of dependencies + ignore: ["./node_modules/**"], + }, + + // Helps troubleshooting - set to false to make plugin less noisy + debug: true, + + // Use the following option if you're on an SDK version lower than 7.47.0: + // release: { + // uploadLegacySourcemaps: { + // include: ".", + // ignore: ["node_modules"], + // }, + // }, + + // Optionally uncomment the line below to override automatic release name detection + // release: env.RELEASE, + }), + ], +}); +``` + +#OPTIONS_SECTION_INSERT# + +## More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index ccd57f99c47f..84a1c47bb699 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -44,11 +44,12 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test" + "lint": "eslint ./src ./test", + "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "unplugin": "1.0.1", - "@sentry/bundler-plugin-core": "0.7.2" + "@sentry/bundler-plugin-core": "0.7.2", + "unplugin": "1.0.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -66,6 +67,7 @@ "jest": "^28.1.1", "rimraf": "^3.0.2", "rollup": "2.75.7", + "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/vite-plugin/src/prepack.ts b/packages/vite-plugin/src/prepack.ts new file mode 100644 index 000000000000..55793e25fa95 --- /dev/null +++ b/packages/vite-plugin/src/prepack.ts @@ -0,0 +1,7 @@ +import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; +import * as fs from "fs"; +import * as path from "path"; + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/packages/webpack-plugin/.gitignore b/packages/webpack-plugin/.gitignore index 1521c8b7652b..cf09378b5770 100644 --- a/packages/webpack-plugin/.gitignore +++ b/packages/webpack-plugin/.gitignore @@ -1 +1,2 @@ dist +README.md diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md deleted file mode 100644 index 83eeac6bb2d7..000000000000 --- a/packages/webpack-plugin/README.md +++ /dev/null @@ -1,163 +0,0 @@ -

- - Sentry - -

- -# Sentry Webpack Plugin - -A Webpack plugin that provides release management features for Sentry: - -- Sourcemap upload -- Release creation -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically association of errors with releases (Release injection) - -## Installation - -Using npm: - -```bash -$ npm install @sentry/webpack-plugin --save-dev -``` - -Using yarn: - -```bash -$ yarn add @sentry/webpack-plugin --dev -``` - -## Usage - -```js -// webpack.config.js -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); - -module.exports = { - plugins: [ - sentryWebpackPlugin({ - include: ".", - ignore: ["node_modules", "webpack.config.js"], - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}; -``` - -As an alternative to passing options explicitly, you can also use a `.sentryclirc` file or environment variables as described in https://docs.sentry.io/product/cli/configuration/. - -### Configuration - -The Sentry Webpack Plugin takes an options argument with the following properties: - -| Option | Type | Required | Description | -| ------------------------------------ | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| org | `string` | optional | The slug of the Sentry organization associated with the app. Can also be specified via the `SENTRY_ORG` environment variable. | -| project | `string` | optional | The slug of the Sentry project associated with the app. Can also be specified via the `SENTRY_PROJECT` environment variable. | -| authToken | `string` | optional | The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: `project:releases` (and `org:read` if `setCommits` option is used). Can also be specified via the `SENTRY_AUTH_TOKEN` env variable. | -| sourcemaps.assets | string \| string[] | optional | A glob or an array of globs that specify the build artifacts that should be uploaded to Sentry. Leave this option undefined if you do not want to upload source maps to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. | -| sourcemaps.ignore | string \| string[] | optional | A glob or an array of globs that specify which build artifacts should not be uploaded to Sentry. The globbing patterns follow the implementation of the [`glob`](https://www.npmjs.com/package/glob) package. Use the `debug` option to print information about which files end up being uploaded. Default: `[]` | -| url | `string` | optional | The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io. This value can also be set via the `SENTRY_URL` environment variable. Defaults to https://sentry.io/, which is the correct value for SaaS customers. | -| headers | `Record` | optional | Headers added to every outgoing network request. | -| vcsRemote | `string` | optional | Version control system remote name. This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. Defaults to `'origin'`. | -| release | `string` | optional | Unique identifier for the release. This value can also be specified via the `SENTRY_RELEASE` environment variable. Defaults to the output of the `sentry-cli releases propose-version` command, which automatically detects values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (**the latter requires access to `git` CLI and for the root directory to be a valid repository**). | -| dist | `string` | optional | Unique identifier for the distribution, used to further segment your release. Usually your build number. | -| releaseInjectionTargets | `array`/`RegExp`/`(string \| RegExp)[]`/`function(filePath: string): bool` | optional | Filter for modules that the release should be injected in. This option takes a string, a regular expression, or an array containing strings, regular expressions, or both. It's also possible to provide a filter function that takes the absolute path of a processed module. It should return `true` if the release should be injected into the module and `false` otherwise. String values of this option require a full match with the absolute path of the module. By default, the release will be injected into all modules - however, bundlers will include the injected release code only once per entrypoint. If release injection should be disabled, provide an empty array here. | -| ignoreFile | `string` | optional | Path to a file containing list of files/directories to ignore. Can point to `.gitignore` or anything with the same format. | -| ignore | `string`/`array` | optional | One or more paths to ignore during upload. Overrides entries in `ignoreFile` file. Defaults to `['node_modules']` if neither `ignoreFile` nor `ignore` is set. | -| configFile | `string` | optional | Path to Sentry CLI config properties, as described in https://docs.sentry.io/product/cli/configuration/#configuration-file. By default, the config file is looked for upwards from the current path, and defaults from `~/.sentryclirc` are always loaded. | -| ext | `array` | optional | Array of file extensions of files to be collected for the file upload. By default the following file extensions are processed: js, map, jsbundle and bundle. | -| urlPrefix | `string` | optional | URL prefix to add to the beginning of all filenames. Defaults to `'~/'` but you might want to set this to the full URL. This is also useful if your files are stored in a sub folder. eg: url-prefix `'~/static/js'`. | -| urlSuffix | `string` | optional | URL suffix to add to the end of all filenames. Useful for appending query parameters. | -| validate | `boolean` | optional | When `true`, attempts source map validation before upload if rewriting is not enabled. It will spot a variety of issues with source maps and cancel the upload if any are found. Defaults to `false` as this can cause false positives. | -| stripPrefix | `array` | optional | When paired with the `rewrite` option, this will remove a prefix from filename references inside of sourcemaps. For instance you can use this to remove a path that is build machine specific. Note that this will NOT change the names of uploaded files. | -| stripCommonPrefix | `boolean` | optional | When paired with the `rewrite` option, this will add `~` to the `stripPrefix` array. | -| sourceMapReference | `boolean` | optional | Determines whether sentry-cli should attempt to link minified files with their corresponding maps. By default, it will match files and maps based on name, and add a Sourcemap header to each minified file for which it finds a map. Can be disabled if all minified files contain a `sourceMappingURL`. Defaults to `true`. | -| rewrite | `boolean` | optional | Enables rewriting of matching source maps so that indexed maps are flattened and missing sources are inlined if possible. Defaults to `true` | -| finalize | `boolean` | optional | Determines if the Sentry release record should be automatically finalized (meaning a date_released timestamp is added) after artifact upload. Defaults to `true`. | -| dryRun | `boolean` | optional | Attempts a dry run (useful for dev environments), making release creation a no-op. Defaults to `false`. | -| debug | `boolean` | optional | Print useful debug information. Defaults to `false`. | -| silent | `boolean` | optional | Suppresses all logs. Defaults to `false`. | -| cleanArtifacts | `boolean` | optional | Remove all the artifacts in the release before the upload. Defaults to `false`. | -| errorHandler | `function(err: Error): void` | optional | When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an `errorHandler` callback is provided, compilation will continue, unless an error is thrown in the provided callback. | -| setCommits | `Object` | optional | Associates the release with its commits in Sentry. See [table below](#setCommits) for details. | -| deploy | `Object` | optional | Adds deployment information to the release in Sentry. See [table below](#deploy) for details. | -| injectRelease | `boolean` | optional | Whether the plugin should inject release information into the build. Defaults to `true`. | -| uploadSourceMaps | `boolean` | optional | Whether the plugin should upload source maps to Sentry. Defaults to `true`. | -| telemetry | `boolean` | optional | If set to true, internal plugin errors and performance data will be sent to Sentry. At Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin. Defaults to `true`. | -| include | `string`/`array`/`object` | required | One or more paths that the plugin should scan recursively for sources. It will upload all `.map` files and match associated `.js` files. Other file types can be uploaded by using the `ext` option. Each path can be given as a string or an object with path-specific options. See [table below](#include) for details. (Note: This option is deprecated. Please use the `sourcemap` option instead) | -| \_experiments.injectBuildInformation | `boolean` | optional | If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable that contains information about the build that can be used to improve SDK functionality. Defaults to `false`. | - -#### options.include: - -| Option | Type | Required | Description | -| ------------------ | ------------------- | -------- | ---------------------------------------------- | -| paths | `string[]` | required | One or more paths to scan for files to upload. | -| ignoreFile | `string` | optional | See above. | -| ignore | `string`/`string[]` | optional | See above. | -| ext | `array` | optional | See above. | -| urlPrefix | `string` | optional | See above. | -| urlSuffix | `string` | optional | See above. | -| stripPrefix | `array` | optional | See above. | -| stripCommonPrefix | `boolean` | optional | See above. | -| sourceMapReference | `boolean` | optional | See above. | -| rewrite | `boolean` | optional | See above. | - -Example: - -```js -// webpack.config.js -const sentryWebpackPlugin = require("@sentry/webpack-plugin"); - -module.exports = { - plugins: [ - sentryWebpackPlugin({ - // ... - include: [ - { - paths: ["./packages"], - urlPrefix: "~/path/to/packages", - }, - { - paths: ["./client"], - urlPrefix: "~/path/to/client", - }, - ], - }), - ], -}; -``` - -#### options.setCommits: - -| Option | Type | Required | Description | -| -------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| repo | `string` | see notes | The full git repo name as defined in Sentry. Required if the `auto` option is not `true`, otherwise optional. | -| commit | `string` | see notes | The current (most recent) commit in the release. Required if the `auto` option is not `true`, otherwise optional. | -| previousCommit | `string` | optional | The commit before the beginning of this release (in other words, the last commit of the previous release). Defaults to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be used. | -| auto | `boolean` | optional | Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation. If you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`. | -| ignoreMissing | `boolean` | optional | If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command. Defaults to `false`. | - -#### options.deploy: - -| Option | Type | Required | Description | -| -------- | -------- | -------- | -------------------------------------------------------------------------------- | -| env | `string` | required | Environment value for the release, for example `production` or `staging`. | -| started | `number` | optional | Deployment start time in Unix timestamp (in seconds) or ISO 8601 format. | -| finished | `number` | optional | Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format. | -| time | `number` | optional | Deployment duration in seconds. Can be used instead of `started` and `finished`. | -| name | `string` | optional | Human-readable name for this deployment. | -| url | `string` | optional | URL that points to the deployment. | - -You can find more information about these options in our official docs: -https://docs.sentry.io/product/cli/releases/#sentry-cli-sourcemaps. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Troubleshooting Sourcemaps](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/) -- [Sentry CLI](https://docs.sentry.io/learn/cli/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md new file mode 100644 index 000000000000..1df0741f0941 --- /dev/null +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -0,0 +1,85 @@ +

+ + Sentry + +

+ +# Sentry Webpack Plugin + +[![npm version](https://img.shields.io/npm/v/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) + +> A Webpack plugin that provides source map and release management support for Sentry. + +## Installation + +Using npm: + +```bash +npm install @sentry/webpack-plugin --save-dev +``` + +Using yarn: + +```bash +yarn add @sentry/webpack-plugin --dev +``` + +Using pnpm: + +```bash +pnpm install @sentry/webpack-plugin --dev +``` + +## Example + +```js +// webpack.config.js +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); + +module.exports = { + // ... other config above ... + + devtool: "source-map", // Source map generation must be turned on + plugins: [ + sentryWebpackPlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + + // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ + // and need `project:releases` and `org:read` scopes + authToken: process.env.SENTRY_AUTH_TOKEN, + + sourcemaps: { + // Specify the directory containing build artifacts + assets: "./**", + // Don't upload the source maps of dependencies + ignore: ["./node_modules/**"], + }, + + // Helps troubleshooting - set to false to make plugin less noisy + debug: true, + + // Use the following option if you're on an SDK version lower than 7.47.0: + // release: { + // uploadLegacySourcemaps: { + // include: ".", + // ignore: ["node_modules"], + // }, + // }, + + // Optionally uncomment the line below to override automatic release name detection + // release: env.RELEASE, + }), + ], +}; +``` + +#OPTIONS_SECTION_INSERT# + +## More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 72e886b38010..1cffbf75fc7d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -44,7 +44,8 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test" + "lint": "eslint ./src ./test", + "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { "@sentry/bundler-plugin-core": "0.7.2", @@ -69,6 +70,7 @@ "jest": "^28.1.1", "rimraf": "^3.0.2", "rollup": "2.75.7", + "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/webpack-plugin/src/prepack.ts b/packages/webpack-plugin/src/prepack.ts new file mode 100644 index 000000000000..55793e25fa95 --- /dev/null +++ b/packages/webpack-plugin/src/prepack.ts @@ -0,0 +1,7 @@ +import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; +import * as fs from "fs"; +import * as path from "path"; + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); From 5d30e0baea000e5544ec00d3db4982368d6f4f79 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 17 May 2023 16:39:05 +0100 Subject: [PATCH 194/640] build(webpack): Publish webpack plugin on release action (#250) --- .craft.yml | 3 +-- packages/webpack-plugin/package.json | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.craft.yml b/.craft.yml index a970baac1043..b033ca0f16df 100644 --- a/.craft.yml +++ b/.craft.yml @@ -8,8 +8,7 @@ requireNames: - /^sentry-esbuild-plugin-.*\.tgz$/ - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ -# TODO: Comment in when we replace the webpack plugin -# - /^sentry-webpack-plugin-*.tgz$/ + - /^sentry-webpack-plugin-*.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 1cffbf75fc7d..e13b4a21b621 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -8,13 +8,12 @@ "license": "MIT", "keywords": [ "Sentry", - "Vite", + "Webpack", "bundler", "plugin" ], - "private": true, "publishConfig": { - "access": "restricted" + "access": "public" }, "files": [ "dist" @@ -39,6 +38,7 @@ "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "build:npm": "npm pack", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", "clean:build": "rimraf ./dist *.tgz", From cfcecad2885d1cbb75573ab3ed708caed8ce22b9 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 17 May 2023 17:39:50 +0200 Subject: [PATCH 195/640] docs: Add migration docs for include option (#249) Co-authored-by: Luca Forstner --- MIGRATION.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/MIGRATION.md b/MIGRATION.md index 435667411e8f..7136bcfe5419 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -30,6 +30,34 @@ sentryWebpackPlugin({ }); ``` +### Removal of `include` for `sourcemap` option + +The `include` option was removed in favour of the new `sourcemaps` option. If you cannot migrate to the `sourcemaps`, `include` is still avaliable as the `uploadLegacySourcemaps` option. + +Use the `sourcemaps.assets` and `sourcemaps.ignore` options to indicate to the plugin which sourcemaps should be uploaded to Sentry. The plugin now also exposes `sourcemaps.deleteAfterUpload` to delete your sourcemaps after they have been uploaded to Sentry. With the `sourcemaps` options, you no longer need to set filename transforms like `urlPrefix` because the plugin uses a new debug IDs system to associate sourcemaps to your bundles. + +```js +// old initialization: +import SentryWebpackPlugin from "@sentry/webpack-plugin"; +new SentryWebpackPlugin({ + include: { + paths: ["./path1", "./path2"], + ignore: ["./path2/ignore"], + urlPrefix: "~/static/js", + }, +}); + +// new initialization: +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +sentryWebpackPlugin({ + sourcemaps: { + assets: ["./path1/**", "./path2/**"], + ignore: ["./path2/ignore/**"], + deleteFilesAfterUpload: ["./path1/**/*.map", "./path2/**/*.map"], + }, +}); +``` + ### Replacing `entries` option with `releaseInjectionTargets` Previously, the `entries` option was used to filter for _entrypoints_ that the plugin should inject the release into. From b83f967cc56c9df62b1864d4f4a19572f898da61 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 19 May 2023 16:11:42 +0200 Subject: [PATCH 196/640] fix: Typo in craft.yml --- .craft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index b033ca0f16df..85179f1c2adc 100644 --- a/.craft.yml +++ b/.craft.yml @@ -8,7 +8,7 @@ requireNames: - /^sentry-esbuild-plugin-.*\.tgz$/ - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - - /^sentry-webpack-plugin-*.tgz$/ + - /^sentry-webpack-plugin-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ From 5548db907e1c86bb85b3e6d5ec3dbf709d8dbcd9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 May 2023 10:09:54 +0200 Subject: [PATCH 197/640] fix(core): Account for undefined release name values (#251) --- packages/bundler-plugin-core/src/index.ts | 6 +++-- .../src/options-mapping.ts | 12 ++++------ .../src/plugins/debug-id-upload.ts | 23 +++++++++++-------- .../build-information-injection/setup.ts | 3 +++ packages/playground/build-esbuild.js | 6 +++-- packages/playground/build-webpack4.js | 11 ++++++--- packages/playground/build-webpack5.js | 11 ++++++--- packages/playground/config.json | 8 ------- packages/playground/rollup.config.mjs | 5 +++- packages/playground/vite.config.js | 6 +++-- 10 files changed, 53 insertions(+), 38 deletions(-) delete mode 100644 packages/playground/config.json diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 82c9223084df..78a9febe6a3f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -10,6 +10,7 @@ import { createLogger } from "./sentry/logger"; import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; import { Options } from "./types"; import { + determineReleaseName, generateGlobalInjectorCode, getDependencies, getPackageJson, @@ -134,7 +135,8 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } - if (!options.release.name) { + const releaseManagementPluginReleaseName = options.release.name ?? determineReleaseName(); + if (!releaseManagementPluginReleaseName) { logger.warn( "No release name provided. Will not create release. Please set the `release.name` option to identifiy your release." ); @@ -154,7 +156,7 @@ export function sentryUnpluginFactory({ plugins.push( releaseManagementPlugin({ logger, - releaseName: options.release.name, + releaseName: releaseManagementPluginReleaseName, shouldCreateRelease: options.release.create, shouldCleanArtifacts: options.release.cleanArtifacts, shouldFinalizeRelease: options.release.finalize, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ccaaaf950da4..1ae392de6571 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,6 +1,5 @@ import { Logger } from "./sentry/logger"; import { Options as UserOptions } from "./types"; -import { determineReleaseName } from "./utils"; export type NormalizedOptions = ReturnType; @@ -20,13 +19,12 @@ export function normalizeUserOptions(userOptions: UserOptions) { disable: userOptions.disable ?? false, sourcemaps: userOptions.sourcemaps, release: { - name: determineReleaseName(), - inject: true, - create: true, - finalize: true, - vcsRemote: process.env["SENTRY_VSC_REMOTE"] ?? "origin", - cleanArtifacts: false, ...userOptions.release, + inject: userOptions.release?.inject ?? true, + create: userOptions.release?.create ?? true, + finalize: userOptions.release?.finalize ?? true, + vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", + cleanArtifacts: userOptions.release?.cleanArtifacts ?? false, }, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts index a755167ca086..356309ff1a22 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts @@ -87,16 +87,19 @@ export function debugIdUploadPlugin({ }) ); - await cliInstance.releases.uploadSourceMaps(releaseName ?? "", { - include: [ - { - paths: [tmpUploadFolder], - rewrite: false, - dist: dist, - }, - ], - useArtifactBundle: true, - }); + await cliInstance.releases.uploadSourceMaps( + releaseName ?? "undefined", // unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow + { + include: [ + { + paths: [tmpUploadFolder], + rewrite: false, + dist: dist, + }, + ], + useArtifactBundle: true, + } + ); if (deleteFilesAfterUpload) { const filePathsToDelete = await glob(deleteFilesAfterUpload, { diff --git a/packages/integration-tests/fixtures/build-information-injection/setup.ts b/packages/integration-tests/fixtures/build-information-injection/setup.ts index 23b6a0a21ac9..901200d7eab6 100644 --- a/packages/integration-tests/fixtures/build-information-injection/setup.ts +++ b/packages/integration-tests/fixtures/build-information-injection/setup.ts @@ -5,5 +5,8 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { + release: { + name: "build-information-injection-test", + }, _experiments: { injectBuildInformation: true }, }); diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 48f1d7d4f0f1..9ab3d5faf706 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -1,13 +1,15 @@ const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); const { build } = require("esbuild"); -const placeHolderOptions = require("./config.json"); build({ entryPoints: ["./src/entrypoint1.js"], outdir: "./out/esbuild", plugins: [ sentryEsbuildPlugin({ - ...placeHolderOptions, + sourcemaps: { + assets: "./out/esbuild/**", + deleteFilesAfterUpload: "./out/esbuild/**/*.map", + }, }), ], minify: true, diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index 670858ddbee5..d238e58bb4e6 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -3,8 +3,6 @@ const path = require("path"); const webpack4 = require("webpack4"); const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); -const placeHolderOptions = require("./config.json"); - webpack4( { mode: "production", @@ -16,7 +14,14 @@ webpack4( library: "ExampleBundle", libraryTarget: "commonjs", }, - plugins: [sentryWebpackPlugin({ ...placeHolderOptions })], + plugins: [ + sentryWebpackPlugin({ + sourcemaps: { + assets: "./out/webpack4/**", + deleteFilesAfterUpload: "./out/webpack4/**/*.map", + }, + }), + ], devtool: "source-map", }, (err) => { diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index c9e2cebf9683..d4f56bf91481 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -3,8 +3,6 @@ const path = require("path"); const webpack5 = require("webpack"); const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); -const placeHolderOptions = require("./config.json"); - webpack5( { cache: false, @@ -18,7 +16,14 @@ webpack5( }, }, mode: "production", - plugins: [sentryWebpackPlugin({ ...placeHolderOptions })], + plugins: [ + sentryWebpackPlugin({ + sourcemaps: { + assets: "./out/webpack5/**", + deleteFilesAfterUpload: "./out/webpack5/**/*.map", + }, + }), + ], devtool: "source-map", }, (err) => { diff --git a/packages/playground/config.json b/packages/playground/config.json deleted file mode 100644 index aad27fecf9d6..000000000000 --- a/packages/playground/config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "release": "0.0.1", - "org": "some-org", - "project": "some-proj", - "authToken": "some-auth-token", - "include": "/dist", - "debug": true -} diff --git a/packages/playground/rollup.config.mjs b/packages/playground/rollup.config.mjs index 0be8cac35e05..f69ca7b844f8 100644 --- a/packages/playground/rollup.config.mjs +++ b/packages/playground/rollup.config.mjs @@ -8,7 +8,10 @@ export default { input, plugins: [ sentryRollupPlugin({ - ...JSON.parse(fs.readFileSync("./config.json", "utf-8")), + sourcemaps: { + assets: "./out/rollup/**", + deleteFilesAfterUpload: "./out/rollup/**/*.map", + }, }), ], output: { diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index 25e32a6bdbc2..074802dc31c7 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -2,7 +2,6 @@ import { sentryVitePlugin } from "@sentry/vite-plugin"; import { defineConfig } from "vite"; import * as path from "path"; -import placeHolderOptions from "./config.json"; export default defineConfig({ build: { @@ -17,7 +16,10 @@ export default defineConfig({ }, plugins: [ sentryVitePlugin({ - ...placeHolderOptions, + sourcemaps: { + assets: "./out/vite/**", + deleteFilesAfterUpload: "./out/vite/**/*.map", + }, }), ], }); From 127b18d52d1cf719565e7ad13dfed1bbb5d548e9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 May 2023 12:50:11 +0200 Subject: [PATCH 198/640] meta: Update changelog for 2.0.0 (#253) --- CHANGELOG.md | 23 +++++++++++++++++++++++ MIGRATION.md | 36 ++++++++---------------------------- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbc31c39b7df..284442c30bad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,29 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.0.0 + +Version 2.0.0 marks the official release of the `@sentry/vite-plugin`, `@sentry/esbuild-plugin` and `@sentry/rollup-plugin` packages. +They are now considered stable. + +For the `@sentry/webpack-plugin` this is a major release with breaking changes. +Please refer to the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md) for instructions on how to upgrade. + +- feat(core): Add `deleteFilesAfterUpload` option (#244) +- feat(core): Implements rewrite sources for debug ID upload (#243) +- fix(core): Account for undefined release name values (#251) +- fix(webpack): Inject different debug IDs for different bundles (#242) +- ref(core): Add new options type for future use (#216) +- ref(core): Extract debug ID injection into separate plugins (#230) +- ref(core): Extract debug ID sourcemap upload into a separate plugin (#231) +- ref(core): Extract release injection into separate plugins (#218) +- ref(core): Extract release management into a separate plugin (#232) +- ref(core): Extract telemetry into a separate plugin (#234) +- ref(core): Switch to v2 options (#237) +- ref(core): Use debug ID as filename for upload (#247) +- ref(core): Use factory function to create individual plugins (#229) +- ref: Remove `injectReleasesMap` option (#236) + ## 0.7.2 - fix(core): Use createRequire to not use built-in require in ESM (#212) diff --git a/MIGRATION.md b/MIGRATION.md index 7136bcfe5419..4bffab0f351a 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -2,14 +2,16 @@ This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins. -## Unreleased +## Upgrading to 2.x - Removed `injectReleasesMap` option. If you need to inject values based on the build, please use your bundler's way of injecting values ([rollup](https://www.npmjs.com/package/@rollup/plugin-replace), [vite](https://vitejs.dev/config/shared-options.html#define), [webpack](https://webpack.js.org/plugins/define-plugin/), [esbuild](https://esbuild.github.io/api/#define)). - The minimum compatible version of rollup is version `3.2.0`. - Removed functionality for the `releaseInjectionTargets` option. - `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. +- Removed `customHeader` option in favor of `headers` option which allows for multiple headers to be attached to outgoing requests. +- The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` -## [Unreleased] Upgrading from 1.x to 2.x (Webpack Plugin Only) +## Upgrading from 1.x to 2.x (Webpack Plugin Only) Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1, relying on bundler-agnostic code (based on [unjs/unplugin](https://github.com/unjs/unplugin)). While we tried to keep changes to v1 of the webpack plugin minimal, a adjustments are nevertheless necessary: @@ -20,13 +22,15 @@ In version 2, you simply need to call a function and pass the initialization opt ```js // old initialization: +import SentryCliPlugin from "@sentry/webpack-plugin"; new SentryCliPlugin({ - include: "./dist", + // ... options }); // new initialization: +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; sentryWebpackPlugin({ - include: "./dist", + // ... options }); ``` @@ -58,30 +62,6 @@ sentryWebpackPlugin({ }); ``` -### Replacing `entries` option with `releaseInjectionTargets` - -Previously, the `entries` option was used to filter for _entrypoints_ that the plugin should inject the release into. -Releases were only injected into entrypoint files of a bundle. -In version 2, releases are injected into every module that is part of a bundle. -Don't worry, your bundler will only include the injected release code once. -Instead of using the `entries` option to filter for _entrypoints_, the `releaseInjectionTargets` option can now be used to filter for _modules_ that the plugin should inject the release into. -Matching behaviour stays the same. - -### Injecting `SENTRY_RELEASES` Map - -Previously, the webpack plugin always injected a `SENTRY_RELEASES` variable into the global object which would map from `project@org` to the `release` value. In version 2, we made this behaviour opt-in by setting the `injectReleasesMap` option in the plugin options to `true`. - -The purpose of this option is to support module-federated projects or micro frontend setups where multiple projects would want to access the global release variable. However, Sentry SDKs by default never accessed this variable so it would require manual user-intervention to make use of it. Making this behaviour opt-in decreases the bundle size impact of our plugin for the majority of users. - -### Removal of the `customHeader` option - -The `customHeader` was used to attach an additional header to outgoing requests to Sentry when uploading source maps. -This option has been removed in favor of the `headers` option which allows for attaching multiple headers. - -### Renaming of `cliBinaryExists` to `sentryCliBinaryExists` - -The `cliBinaryExists` function was renamed to `sentryCliBinaryExists`. - ## Upgrading from 0.3.x to 0.4.x ### Replacing default exports with named exports From 15068666fcebc7b0b529fa44c811e0e494b850e6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 22 May 2023 10:54:20 +0000 Subject: [PATCH 199/640] release: 2.0.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index af800b220f52..6280f7dc2701 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.7.2", + "version": "2.0.0", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1f109f26429d..1255f5411f50 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "0.7.2", + "version": "2.0.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -67,8 +67,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b1a7d5414133..f6d7b61bc995 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index f50d649143ce..1312c4edc548 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "0.7.2", - "@sentry/rollup-plugin": "0.7.2", - "@sentry/vite-plugin": "0.7.2", - "@sentry/webpack-plugin": "0.7.2", + "@sentry/esbuild-plugin": "2.0.0", + "@sentry/rollup-plugin": "2.0.0", + "@sentry/vite-plugin": "2.0.0", + "@sentry/webpack-plugin": "2.0.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 3b1560c23ac2..253ed27f7dbb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "0.7.2", + "version": "2.0.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/bundler-plugin-core": "2.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 3172175dad99..2c7ecbeaf48c 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index f4bae920b775..16c0a0f65f35 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", - "@sentry/bundler-plugin-core": "0.7.2", - "@sentry/vite-plugin": "0.7.2", - "@sentry/webpack-plugin": "0.7.2", - "@sentry/esbuild-plugin": "0.7.2", - "@sentry/rollup-plugin": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/esbuild-plugin": "2.0.0", + "@sentry/rollup-plugin": "2.0.0", + "@sentry/vite-plugin": "2.0.0", + "@sentry/webpack-plugin": "2.0.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index c67ec9371015..3e8d4e4033c1 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/bundler-plugin-core": "2.0.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 7bdcf499337e..983d327b6fe9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "0.7.2", + "version": "2.0.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/bundler-plugin-core": "2.0.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 0010b766ac96..6ecdfd88847e 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "0.7.2", + "version": "2.0.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 84a1c47bb699..776d2c9505cb 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "0.7.2", + "version": "2.0.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/bundler-plugin-core": "2.0.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e13b4a21b621..0aeb3ae5e72a 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "0.7.2", + "version": "2.0.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "0.7.2", + "@sentry/bundler-plugin-core": "2.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0", "webpack-4": "npm:webpack@^4" @@ -59,8 +59,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "0.7.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "0.7.2", + "@sentry-internal/eslint-config": "2.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6851287cff4e360dc6821d516b03909fc75cb96e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 22 May 2023 14:33:06 +0200 Subject: [PATCH 200/640] docs: Fix anchor tags in READMEs (#254) --- packages/dev-utils/src/generate-documentation-table.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 5a07d7c571a8..ed5175ee0940 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -375,9 +375,7 @@ function generateDescriptions( .map((node) => { const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; const id = `${parentId}-${node.name.toLowerCase()}`; - let output = `### \`${name}\` - - + let output = `### \`${name}\` ${node.type === undefined ? "" : `Type: \`${node.type}\``} From 47d02ea2607508cca462f9a5a20ceafe2fc78abe Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 11:58:02 +0200 Subject: [PATCH 201/640] meta: Use npm registry (#258) --- .yarnrc | 1 + yarn.lock | 7227 ++++++++++++++++++++++++++++------------------------- 2 files changed, 3763 insertions(+), 3465 deletions(-) create mode 100644 .yarnrc diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 000000000000..19bac4f6d1a8 --- /dev/null +++ b/.yarnrc @@ -0,0 +1 @@ +registry: https://registry.npmjs.org/ diff --git a/yarn.lock b/yarn.lock index 5eeac389641d..60c2012e5061 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,29 +2,29 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.10", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" - integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== +"@babel/compat-data@^7.17.10", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": + version "7.21.9" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" + integrity sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ== "@babel/core@7.18.5": version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== dependencies: "@ampproject/remapping" "^2.1.0" @@ -44,85 +44,89 @@ semver "^6.3.0" "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" - integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.13" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.13" - "@babel/types" "^7.18.13" + version "7.21.8" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" + integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helpers" "^7.21.5" + "@babel/parser" "^7.21.8" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.1" + json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.18.13", "@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" - integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== +"@babel/generator@^7.18.2", "@babel/generator@^7.21.5", "@babel/generator@^7.7.2": + version "7.21.9" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" + integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== dependencies: - "@babel/types" "^7.18.13" + "@babel/types" "^7.21.5" "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" + integrity sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g== dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/types" "^7.21.5" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" + integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + "@babel/compat-data" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" - integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.8" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" + integrity sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.5" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.21.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" + semver "^6.3.0" -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.8" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" + integrity sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" + regexpu-core "^5.3.1" + semver "^6.3.0" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== +"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -131,76 +135,69 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" + integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== +"@babel/helper-member-expression-to-functions@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" + integrity sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.21.5" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== +"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" + integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-simple-access" "^7.21.5" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -208,132 +205,133 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" + integrity sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-member-expression-to-functions" "^7.21.5" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helper-wrap-function@^7.18.9": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" - integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.11" - "@babel/types" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" -"@babel/helpers@^7.18.2", "@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== +"@babel/helpers@^7.18.2", "@babel/helpers@^7.21.5": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" + integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.5": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" - integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": + version "7.21.9" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" + integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -341,7 +339,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.17.12": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -349,23 +347,23 @@ "@babel/plugin-proposal-json-strings@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -373,61 +371,61 @@ "@babel/plugin-proposal-numeric-separator@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.17.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== +"@babel/plugin-proposal-optional-chaining@^7.17.12", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -435,191 +433,193 @@ "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.21.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" + integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" + integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== + version "7.21.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -627,29 +627,29 @@ "@babel/plugin-transform-duplicate-keys@^7.17.12": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-for-of@^7.18.1": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" + integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.16.7": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" @@ -658,163 +658,161 @@ "@babel/plugin-transform-literals@^7.17.12": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" + integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-simple-access" "^7.21.5" "@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.0": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.17.12", "@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== +"@babel/plugin-transform-parameters@^7.17.12", "@babel/plugin-transform-parameters@^7.20.7": + version "7.21.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" + integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" + "@babel/helper-plugin-utils" "^7.21.5" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.17.12": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-shorthand-properties@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.17.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.2": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.17.12": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.17.12": - version "7.18.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz#712e9a71b9e00fde9f8c0238e0cceee86ab2f8fd" - integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== + version "7.21.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-typescript" "^7.18.6" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" + integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.16.7": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -822,7 +820,7 @@ "@babel/preset-env@7.18.2": version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== dependencies: "@babel/compat-data" "^7.17.10" @@ -903,7 +901,7 @@ "@babel/preset-modules@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -914,123 +912,157 @@ "@babel/preset-typescript@7.17.12": version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== dependencies: "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.17.12" -"@babel/runtime@^7.8.4": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.5", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" - integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" +"@babel/runtime@^7.8.4": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.21.9" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" + integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/parser" "^7.21.9" + "@babel/types" "^7.21.5" + +"@babel/traverse@^7.18.5", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" + integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.13" - "@babel/types" "^7.18.13" + "@babel/parser" "^7.21.5" + "@babel/types" "^7.21.5" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" - integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== +"@babel/types@^7.0.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.21.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" + integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-string-parser" "^7.21.5" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@esbuild/linux-loong64@0.14.54": version "0.14.54" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@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" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" + espree "^9.5.2" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.41.0": + version "8.41.0" + 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": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@humanwhocodes/config-array@^0.10.4": - version "0.10.4" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" - integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -1041,12 +1073,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" @@ -1058,7 +1090,7 @@ "@jest/console@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: "@jest/types" "^28.1.3" @@ -1070,7 +1102,7 @@ "@jest/core@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" + resolved "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== dependencies: "@jest/console" "^28.1.3" @@ -1105,14 +1137,14 @@ "@jest/create-cache-key-function@^27.4.2": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + 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.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" @@ -1122,7 +1154,7 @@ "@jest/environment@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== dependencies: "@jest/fake-timers" "^28.1.3" @@ -1132,14 +1164,14 @@ "@jest/expect-utils@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + 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.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== dependencies: expect "^28.1.3" @@ -1147,7 +1179,7 @@ "@jest/fake-timers@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" @@ -1159,7 +1191,7 @@ "@jest/fake-timers@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" + 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" @@ -1171,7 +1203,7 @@ "@jest/globals@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" @@ -1180,7 +1212,7 @@ "@jest/globals@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== dependencies: "@jest/environment" "^28.1.3" @@ -1189,7 +1221,7 @@ "@jest/reporters@27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -1220,7 +1252,7 @@ "@jest/reporters@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" + 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" @@ -1251,14 +1283,21 @@ "@jest/schemas@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + 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" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + "@jest/source-map@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" @@ -1267,7 +1306,7 @@ "@jest/source-map@^28.1.2": version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + 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" @@ -1276,7 +1315,7 @@ "@jest/test-result@27.5.1", "@jest/test-result@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" @@ -1286,7 +1325,7 @@ "@jest/test-result@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + 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" @@ -1296,7 +1335,7 @@ "@jest/test-sequencer@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" @@ -1306,7 +1345,7 @@ "@jest/test-sequencer@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" + 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" @@ -1316,7 +1355,7 @@ "@jest/transform@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" @@ -1337,7 +1376,7 @@ "@jest/transform@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + 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" @@ -1358,7 +1397,7 @@ "@jest/types@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -1369,7 +1408,7 @@ "@jest/types@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: "@jest/schemas" "^28.1.3" @@ -1379,234 +1418,85 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@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.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@lerna/add@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.1.tgz#6d71084fe7918c96c909bebdc5c27ed6006e09d6" - integrity sha512-cCQIlMODhi3KYyTDOp2WWL4Kj2dKK+MmCiaSf+USrbSWPVVXQGn5Eb11XOMUfYYq3Ula75sWL2urtYwuu8IbmA== - dependencies: - "@lerna/bootstrap" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/validation-error" "6.0.1" - dedent "^0.7.0" - npm-package-arg "8.1.1" - p-map "^4.0.0" - pacote "^13.6.1" - semver "^7.3.4" - -"@lerna/bootstrap@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.1.tgz#2af0b790b9ce426b78f12543159c8506d77afc28" - integrity sha512-a3DWchHFOiRmDN24VTdmTxKvAqw6Msp8pDCWXq4rgOQSFxqyYECd8BYvmy8dTW6LcC4EG0HqTGRguuEaKCasOw== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/has-npm-version" "6.0.1" - "@lerna/npm-install" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/rimraf-dir" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/symlink-binary" "6.0.1" - "@lerna/symlink-dependencies" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@npmcli/arborist" "5.3.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "8.1.1" - npmlog "^6.0.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - -"@lerna/changed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.1.tgz#58614a0c65bfab77fefd142d5edc8282e057ea83" - integrity sha512-b0KzqpNv25ZxH9M/7jtDQaXWUBhVzBVJ8DQ4PjjeoulOCQ+mA9tNQr8UVmeU1UZiaNtNz6Hcy55vyvVvNe07VA== - dependencies: - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/listable" "6.0.1" - "@lerna/output" "6.0.1" - -"@lerna/check-working-tree@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.1.tgz#ad71d53941b5c85523499b283e5f44b52eca6276" - integrity sha512-9Ti1EuE3IiJUvvAtFk+Xr9Uw6KehT78ghnI4f/hi4uew5q0Mf2+DMaBNexbhOTpRFBeIq4ucDFhiN091pNkUNw== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@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== dependencies: - "@lerna/collect-uncommitted" "6.0.1" - "@lerna/describe-ref" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@lerna/child-process@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.1.tgz#2141f643a4ed7d38fa9270a80403467a353a3b39" - integrity sha512-5smM8Or/RQkHysNFrUYdrCYlhpr3buNpCYU7T2DPYzOWRPm+X5rCvt/dDOcS3UgYT2jEyS86S5Y7pK2X7eXtmg== +"@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" + integrity sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.1.tgz#e59f94140e577cbb66f76f78794b97778f78a246" - integrity sha512-ZaWPzzYNkJM7Ib2GWPLSELVBf5nRCGOGBtR9DSLKAore0Me876JLgi4h2R+Y2PVyCvT1kmoQKAclnjxdZbCONA== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/rimraf-dir" "6.0.1" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - -"@lerna/cli@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.1.tgz#8a92386702cff815f36104792ad5dc14f11a61a8" - integrity sha512-AuAnUXkBGdts/rmHltrkZucYy11OwYPb/4HM3zxLeq4O30w2ocZIytkOtSkuVKOMPWBZR8b37fNuZBzvxe5OmA== - dependencies: - "@lerna/global-options" "6.0.1" - dedent "^0.7.0" - npmlog "^6.0.2" - yargs "^16.2.0" - -"@lerna/collect-uncommitted@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.1.tgz#b93f5acfa9c63fffe41bfaaac02a0efad9180b00" - integrity sha512-qPqwmIlSlf8XBJnqMc+6pz6qXQ0Pfjil70FB2IPvoWbfrLvMI6K3I/AXeub9X5fj5HYqNs1XtwhWHJcMFpJddw== - dependencies: - "@lerna/child-process" "6.0.1" - chalk "^4.1.0" - npmlog "^6.0.2" - -"@lerna/collect-updates@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.1.tgz#7b4be193ee51a72ccedc20acf845fe32fdee9ee2" - integrity sha512-OwRcLqD1N5znlZM/Ctf031RDkodHVO62byiD35AbHGoGM2EI2TSYyIbqnJ8QsQJMB05/KhIBndL8Mpcdle7/rg== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/describe-ref" "6.0.1" - minimatch "^3.0.4" - npmlog "^6.0.2" - slash "^3.0.0" - -"@lerna/command@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.1.tgz#a429e724237bc3c4a735e8eaef9816f2203cb7dc" - integrity sha512-V9w8M7pMU7KztxaL0+fetTSQYTa12bhTl86ll9VjlgYZ5qUAXk9E42Y8hbVThyYtHEhkRnIMinkWsmH/9YKU/A== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/project" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@lerna/write-log-file" "6.0.1" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^6.0.2" - -"@lerna/conventional-commits@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.1.tgz#72dd55aadc7c20eca5af3d03cdcfb613964dafc4" - integrity sha512-6oIGEZKy1GpooW28C0aEDkZ/rVkqpX44knP8Jyb5//1054QogqPhGC5q6J0lZxyhun8dQkpF6XTHlIintI8xow== - dependencies: - "@lerna/validation-error" "6.0.1" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.4" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - npm-package-arg "8.1.1" - npmlog "^6.0.2" - pify "^5.0.0" - semver "^7.3.4" - -"@lerna/create-symlink@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.1.tgz#5a9f75f8e5c0d83c39d70240f51284cc5d6770ad" - integrity sha512-ZmLx9SP5De6u1xkD7Z6gMMFuyLKCb+2bodreFe7ryOVP3cOLbmNOmgMgj+gtUgIwIv7BDwX3qFWlPY6B3VW3hQ== - dependencies: - cmd-shim "^5.0.0" - fs-extra "^9.1.0" - npmlog "^6.0.2" - -"@lerna/create@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.1.tgz#7905cef9196cb6a1caff5d7cd78a46fc7ea635a9" - integrity sha512-VuTdvBJDzvAaMBYoKTRMBQC+nfwnihxdA/ekUqBD+W8MMsqPLCGCneyl7JK9RaSSib/10LyRDEmfo79UAndcgQ== +"@lerna/create@6.6.2": + version "6.6.2" + resolved "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz#39a36d80cddb355340c297ed785aa76f4498177f" + integrity sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/child-process" "6.6.2" dedent "^0.7.0" fs-extra "^9.1.0" init-package-json "^3.0.2" npm-package-arg "8.1.1" p-reduce "^2.1.0" - pacote "^13.6.1" + pacote "15.1.1" pify "^5.0.0" semver "^7.3.4" slash "^3.0.0" @@ -1614,659 +1504,249 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.1.tgz#e9277bcc3c1c839fc7305b808f9dd02a5404aaf8" - integrity sha512-PcTVt4qgAXUPBtWHyqixtwE/eXe56+DFRnfTcJlb4x5F7LJ+7VNpdR/81qfP89Xj10U5IjELXbXmriz1KMwhfw== - dependencies: - "@lerna/child-process" "6.0.1" - npmlog "^6.0.2" +"@lerna/legacy-package-management@6.6.2": + version "6.6.2" + resolved "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz#411c395e72e563ab98f255df77e4068627a85bb0" + integrity sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg== + dependencies: + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + execa "5.0.0" + file-url "3.0.0" + find-up "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + inquirer "8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "14.0.3" + npmlog "6.0.2" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + pretty-format "29.4.3" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + semver "7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + tempy "1.0.0" + upath "2.0.1" + uuid "8.3.2" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" -"@lerna/diff@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.1.tgz#e8c5d541d74a9aa13a4ac6745f2f0d9531207fd1" - integrity sha512-/pGXH9txA8wX1YJ/KOBXzx0Z2opADBW4HKPCxxHAu+6dTGMbKABDljVT5Np3UpfIrAGDE5fTuf0aGL4vkKUWrg== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/validation-error" "6.0.1" - npmlog "^6.0.2" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@lerna/exec@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.1.tgz#d2d0785c46b7ceb3758fe75bb6d95d177a0a0ec3" - integrity sha512-x9puoI3091Alp45w7XOGRxThOw45p+tWGPR5TBCEQiiH7f8eF9Dc4WX5HXf31ooK6NmD40eKPYhBgy8oQnJY9w== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/profiler" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/validation-error" "6.0.1" - p-map "^4.0.0" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@lerna/filter-options@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.1.tgz#4dbd29a31fb2ac228f72c51b223f17623d1f2c71" - integrity sha512-6KxbBI/2skRl/yQdjugQ1PWrSLq19650z8mltF0HT7B686fj7LlDNtESFOtY6iZ8IPqKBkIavOP0DPmJZd7Szw== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@lerna/collect-updates" "6.0.1" - "@lerna/filter-packages" "6.0.1" - dedent "^0.7.0" - npmlog "^6.0.2" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -"@lerna/filter-packages@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.1.tgz#07f10dc78e852bbba44843b785ebc16f386cedaa" - integrity sha512-2bKhexeF07Urs2b0xYX2OgYUN0EzmS2FSgvw0KT6He48PGOkqgJjU7PIiWdPyOvZdukwm07qXTmJZulAHftceA== +"@npmcli/arborist@6.2.3": + version "6.2.3" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" + integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== dependencies: - "@lerna/validation-error" "6.0.1" - multimatch "^5.0.0" - npmlog "^6.0.2" + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + bin-links "^4.0.1" + cacache "^17.0.4" + common-ancestor-path "^1.0.1" + hosted-git-info "^6.1.1" + json-parse-even-better-errors "^3.0.0" + json-stringify-nice "^1.1.4" + minimatch "^6.1.6" + nopt "^7.0.0" + npm-install-checks "^6.0.0" + npm-package-arg "^10.1.0" + npm-pick-manifest "^8.0.1" + npm-registry-fetch "^14.0.3" + npmlog "^7.0.1" + pacote "^15.0.8" + parse-conflict-json "^3.0.0" + proc-log "^3.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.1" + treeverse "^3.0.0" + walk-up-path "^1.0.0" -"@lerna/get-npm-exec-opts@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.1.tgz#c766588d030c0ec7170650808957998e8ad70831" - integrity sha512-y2T+ODP8HNzHQn1ldrrPW+n823fGsN2sY0r78yURFxYZnxA9ZINyQ6IAejo5LqHrYN8Qhr++0RHo2tUisIHdKg== +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: - npmlog "^6.0.2" + "@gar/promisify" "^1.1.3" + semver "^7.3.5" -"@lerna/get-packed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.1.tgz#d31c10ec10658eeee4306886c100cd9600d6dd78" - integrity sha512-Z/5J5vbjdeGqZcPvUSiszvyizHdsTRiFlpPORWK3YfIsHllUB7QZnVHLg92UnSJrpPE0O1gH+k6ByhhR+3qEdA== +"@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: - fs-extra "^9.1.0" - ssri "^9.0.1" - tar "^6.1.0" + semver "^7.3.5" -"@lerna/github-client@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.1.tgz#081d13c2debf312d0e5a2bb2fad6e0c69e1501d6" - integrity sha512-UA7V3XUunJnrfCL2eyW9QsCjBWShv4dCRGUITXmpQJrNIMZIqVbBJzqN9LVHDNc/hEVZGt0EjtHWdpFCgD4ypg== +"@npmcli/git@^4.0.0": + version "4.0.4" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" + integrity sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg== dependencies: - "@lerna/child-process" "6.0.1" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^19.0.3" - git-url-parse "^13.1.0" - npmlog "^6.0.2" - -"@lerna/gitlab-client@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.1.tgz#1863b621a1530bc482113cac8791247664dedb2a" - integrity sha512-yyaBKf/OqBAau6xDk1tnMjfkxRpC/j3OwUyXFFGfJFSulWRHpbHoFSfvIgOn/hkjAr9FfHC7TXItRg8qdm38Wg== - dependencies: - node-fetch "^2.6.1" - npmlog "^6.0.2" - -"@lerna/global-options@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.1.tgz#83061d85759c105120ff55716959642ba6eb0eea" - integrity sha512-vzjDI3Bg2NR+cSgfjHWax2bF1HmQYjJF2tmZlT/hJbwhaVMIEnhzHnJ9Yycmm98cdV77xEMlbmk5YD7xgFdG2w== - -"@lerna/has-npm-version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.1.tgz#ed27a27cad2090069feb3108b105ceec765bec5e" - integrity sha512-ol1onJaauMXK0cQsfRX2rvbhNRyNBY9Ne5trrRjfMROa7Tnr8c3I4+aKQs7m4z1JdWaGBV4xBH+NSZ/esPuaWA== - dependencies: - "@lerna/child-process" "6.0.1" - semver "^7.3.4" - -"@lerna/import@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.1.tgz#9e869d6bbe82446ee3620c4310ca6232881b7952" - integrity sha512-GrTtIWUCnDf+FqRjenV2OKWU+khoZj0h/etgfXus45PBO2+V/SkkzIY4xof23XphiydUYrSrYtwx2i1aEmk3Wg== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/validation-error" "6.0.1" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" - -"@lerna/info@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.1.tgz#68395061ffbd81c7716d60b99b5220c90ade2862" - integrity sha512-QEW7JtJjoR1etUrcft7BnrwPZFHE2JPmt2DoSvSmLISLyy+HlmdXHK+p6Ej3g1ql8gS0GWCacgwmlRZ27CDp5A== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/output" "6.0.1" - envinfo "^7.7.4" - -"@lerna/init@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.1.tgz#babee56707bd19b3c1b82967e3360d1083c04cf9" - integrity sha512-zOMrSij09LSAVUUujpD3y32wkHp8dQ+/dVCp4USlfcGfI+kIPc5prkYCGDO8dEcqkze0pMfDMF23pVNvAf9g7w== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/project" "6.0.1" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/link@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.1.tgz#a94cf3aead92538835d955c6de281c65097f3471" - integrity sha512-VXZ77AWsJCycTu219ZLUHyRzMd5hgivLk5ZyBD1s/emArFvdEmGLscj2RXn3P3w/951b+DNG2Zbi6nek0iJ6DA== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/symlink-dependencies" "6.0.1" - "@lerna/validation-error" "6.0.1" - p-map "^4.0.0" - slash "^3.0.0" - -"@lerna/list@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.1.tgz#ab6d056c5d7b99ca0ed6a17d48bf907afd9d970a" - integrity sha512-M9Vneh866E1nlpU88rcUMLR+XTVi3VY0fLPr1OqXdYF+eTe6RkEHUQj8HIk94Rnt02HsWc4+FO31T4i5sf+PaA== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/listable" "6.0.1" - "@lerna/output" "6.0.1" - -"@lerna/listable@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.1.tgz#444e81f6642c198d116e9e6b86d96d10ddf2e147" - integrity sha512-+xEByVX0sbnBW3EBu3XCg71Bz9/dahncmCjNK0kVnZLnQZzfULCndaQeSt+f9KO0VCs8h1tnXdo2uLPm4lThnw== - dependencies: - "@lerna/query-graph" "6.0.1" - chalk "^4.1.0" - columnify "^1.6.0" - -"@lerna/log-packed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.1.tgz#20fe38b5f18e65392b42bf84cfdda0afc0b62330" - integrity sha512-HTJdZzfBbb5jyk/QU2O6o+yaWRwLoaPruhK+Q3ESTzQ2mlNCr0CI4UKWDcWURWx0EsVsYqsoUHuPZInpIHqCnA== - dependencies: - byte-size "^7.0.0" - columnify "^1.6.0" - has-unicode "^2.0.1" - npmlog "^6.0.2" - -"@lerna/npm-conf@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.1.tgz#fa242a36ef687c7b5207a9d9a85b9e7a4f38bdc5" - integrity sha512-VjxODCnl6QJGoQ8z8AWEID1GO9CtCr2yRyn6NoRdBOTYmzI5KhBBM+nWmyMSOUe0EZI+K5j04/GRzKHg2KXTAQ== - dependencies: - config-chain "^1.1.12" - pify "^5.0.0" - -"@lerna/npm-dist-tag@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.1.tgz#4718bdedd82f375ba619319070b694f1113e627b" - integrity sha512-jJKDgnhj6xGqSWGcbwdcbPtoo2m4mHRwqu8iln9e3TMOEyUO9aA4uvd0/18tEAsboOMiLUhhcQ8709iKv21ZEA== - dependencies: - "@lerna/otplease" "6.0.1" - npm-package-arg "8.1.1" - npm-registry-fetch "^13.3.0" - npmlog "^6.0.2" - -"@lerna/npm-install@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.1.tgz#5d6f0c62b34f2bfeb8f20b81b08f01ca0d3ed60b" - integrity sha512-saDJSyhhl/wxgZSzRx2/pr0wsMR+hZpdhLGd1lZgo5XzLq3ogK+BxPFz3AK3xhRnNaMq96gDQ3xmeetoV53lwQ== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/get-npm-exec-opts" "6.0.1" - fs-extra "^9.1.0" - npm-package-arg "8.1.1" - npmlog "^6.0.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" - -"@lerna/npm-publish@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.1.tgz#ffbca4be5b971df978a60917460ee8f28b1c62b7" - integrity sha512-hgzF9fOfp010z7PJtqNLxNXiHr6u4UDVwiX8g22rhJKBh9Ekrq7N9NS3mF0l+RcleRU/jJKYtZ0Ci3fICaaRUg== - dependencies: - "@lerna/otplease" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - fs-extra "^9.1.0" - libnpmpublish "^6.0.4" - npm-package-arg "8.1.1" - npmlog "^6.0.2" - pify "^5.0.0" - read-package-json "^5.0.1" - -"@lerna/npm-run-script@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.1.tgz#3a255aa6f37a5e2369a37a8ddcb2709f84019ed1" - integrity sha512-K+D4LEoVRuBoKRImprkVRHIORu0xouX+c6yI1B93KWHKJ60H8qCeB0gQkA30pFALx3qG07bXVnFmfK9SGQXD3Q== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/get-npm-exec-opts" "6.0.1" - npmlog "^6.0.2" - -"@lerna/otplease@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.1.tgz#da5467c603565940c1f91e65d077abf25d96df7f" - integrity sha512-RrP8GtfE9yz37GuuCFqddR3mVIQc1ulUpAaaDNK4AOTb7gM0aCsTN7V2gCGBk1zdIsBuvNvNqt5jpWm4U6/EAA== - dependencies: - "@lerna/prompt" "6.0.1" - -"@lerna/output@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.1.tgz#5e301ad0bed607ee139cf207fd75ed1e5fac7908" - integrity sha512-4jZ3fgaCbnsTZ353/lXE/3w20Cge6G3iUoESVip+JE2yhZ8rWgPISG8RFR0YGEtSgq2yC9AgGnGlvmOnAc4SAQ== - dependencies: - npmlog "^6.0.2" - -"@lerna/pack-directory@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.1.tgz#4a0bf61b7cb1b1b3f1fb95afec987a7c63ff9f95" - integrity sha512-vNgS5Rs7s6khOYuHE5nTds0VDfHBH8YNGvV1s0yGAg/Zkivi7bOTs8jDQFiYhQX3HOTC1/85BLhGQ3zcDHlrew== - dependencies: - "@lerna/get-packed" "6.0.1" - "@lerna/package" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/temp-write" "6.0.1" - npm-packlist "^5.1.1" - npmlog "^6.0.2" - tar "^6.1.0" - -"@lerna/package-graph@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.1.tgz#db72ab9ed45933d1518de7f7389a6c79e6059336" - integrity sha512-OMppRWpfSaI6HO/Tc5FVpNefgOsCc3/DzaMLme6QTTpbEwD3EhvQ3Xx0MgsGMPdmZhWp/WOoAJsVRnLa+l03gg== - dependencies: - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/validation-error" "6.0.1" - npm-package-arg "8.1.1" - npmlog "^6.0.2" - semver "^7.3.4" - -"@lerna/package@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.1.tgz#cb950e574b1ea3ef5cd8cf62b3c4308f6c869122" - integrity sha512-vCwyiLVJ4K3SR6KZleglq1dUXIiYGmk3b+NrFWP/Z3dhVE0C+RqgxSsAS4aaUNMSO2KSI0dBdce7BT/D+FdpIQ== - dependencies: - load-json-file "^6.2.0" - npm-package-arg "8.1.1" - write-pkg "^4.0.0" - -"@lerna/prerelease-id-from-version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.1.tgz#a47980aa6c78deaa36430d03b6300bc889960b50" - integrity sha512-aZBs/FinztKjNXlk0cW99FpABynZzZwlmJuW4h9nMrQPgWoaDAERfImbefIH/lcpxdRuuGtClyZUFBOSq8ppfg== - dependencies: - semver "^7.3.4" - -"@lerna/profiler@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.1.tgz#2b7a043e6999823ad97a7ddaea0ed7f338032f92" - integrity sha512-vZrgF5pDhYWY/Gx7MjtyOgTVMA6swDV2+xPZwkvRD1Z0XpWEIn5d79zRN/1SBpdMNozC7Lj++1oEbCGNWhy/ow== - dependencies: - fs-extra "^9.1.0" - npmlog "^6.0.2" - upath "^2.0.1" - -"@lerna/project@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.1.tgz#0d4a6dbca1943478d554d4a3a610968caf9b303a" - integrity sha512-/n2QuAEgImbwUqrJND15FxYu29p/mLTUpL/8cSg6IUlOQRFyXteESRyl8A2Ex7Wj00FMbtB13vgbmTdkTgKL0A== - dependencies: - "@lerna/package" "6.0.1" - "@lerna/validation-error" "6.0.1" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - js-yaml "^4.1.0" - load-json-file "^6.2.0" - npmlog "^6.0.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/prompt@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.1.tgz#2a744b168ce4a29b7c66d500258a3f65b3f028e2" - integrity sha512-faR7oVdHBO3QTJ6o9kUEDPpyjCftd/CCa1rAC6q8f3vlLfCPrTym0qT+DcOBFGpDQh4m2dmGfJZgpXIVi6bMbg== - dependencies: - inquirer "^8.2.4" - npmlog "^6.0.2" - -"@lerna/publish@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.1.tgz#9448a35a87e2c986c8919114698f3a314a9a2574" - integrity sha512-xIleRwCuPHtShNSPc6RDH33Z+EO1E4O0LOhPq5qTwanNPYh5eL6bDHBsox44BbMD9dhhI4PUrqIGTu3AoKdDxg== - dependencies: - "@lerna/check-working-tree" "6.0.1" - "@lerna/child-process" "6.0.1" - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/describe-ref" "6.0.1" - "@lerna/log-packed" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/npm-dist-tag" "6.0.1" - "@lerna/npm-publish" "6.0.1" - "@lerna/otplease" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/pack-directory" "6.0.1" - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@lerna/version" "6.0.1" - fs-extra "^9.1.0" - libnpmaccess "^6.0.3" - npm-package-arg "8.1.1" - npm-registry-fetch "^13.3.0" - npmlog "^6.0.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^13.6.1" - semver "^7.3.4" - -"@lerna/pulse-till-done@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.1.tgz#d23985aea1ba25bb33cf74b39f36f2b7a5d21791" - integrity sha512-DK5Ylh/O7Vzn9ObEggvoHdLxc1hiXsDZ4fUvSmi50kc5QrMrk+xo6OyPgIaDBhYxj6lm3TQ1KkvWnRgiEynKAg== - dependencies: - npmlog "^6.0.2" - -"@lerna/query-graph@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.1.tgz#f72b55f0ee4662d06167e639e975019e5c004c59" - integrity sha512-X8Z63Ax5a9nXgNBG+IAXEdCL4MG88akr7L4mBvKiTPrK5VgP46YzuZSaSoPI8bU67MlWBkSYQWAJJ5t0HEtKTw== - dependencies: - "@lerna/package-graph" "6.0.1" - -"@lerna/resolve-symlink@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.1.tgz#30c3ccf4c730451754ce7aa002772f26dd757c20" - integrity sha512-btosycLN+2lpqou6pz0Oeq4XIKHDIn0NvdnuCBLxtuBOBNIkdlx5QWKCtZ31GYKbCUt55w1DSGL64kfVuejVQQ== - dependencies: - fs-extra "^9.1.0" - npmlog "^6.0.2" - read-cmd-shim "^3.0.0" - -"@lerna/rimraf-dir@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.1.tgz#e52ba283a4c39ade75792c23d0c6dcec65dcbbf4" - integrity sha512-rBFkwrxEQWFfZV5IMiPfGVubOquvOTNsPJPUf5tZoPAqKHXVQi5iYZGB65VG8JA7eFenZxh5mVErX2gtWFh1Ew== - dependencies: - "@lerna/child-process" "6.0.1" - npmlog "^6.0.2" - path-exists "^4.0.0" - rimraf "^3.0.2" - -"@lerna/run-lifecycle@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.1.tgz#ab94838cf7daa1edd6228be0a161b38ec1a42a0b" - integrity sha512-gC7rnV3mrgFFIM8GlHc3d22ovYHoExu9CuIAxN26CVrMq7iEYxWoxYvweqVANsCHR7CVbs+dsDx8/TP1pQG8wg== - dependencies: - "@lerna/npm-conf" "6.0.1" - "@npmcli/run-script" "^4.1.7" - npmlog "^6.0.2" - p-queue "^6.6.2" - -"@lerna/run-topologically@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.1.tgz#dcf26259e57b224d4aad2e3b259555ecd2f226ea" - integrity sha512-p4J9RvOUyDUjQ21tDh7Durci9YnuBu3T8WXD8xu5ZwcxVnawK1h5B8kP4V1R5L/jwNqkXsAnlLwikPVGQ5Iptw== - dependencies: - "@lerna/query-graph" "6.0.1" - p-queue "^6.6.2" - -"@lerna/run@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.1.tgz#20d3c77fa8faad01b915214b95477ae5390c8b45" - integrity sha512-F1vvpaevsWCjaQs3NlBegH54izm3cO3Qbg/cRRzPZMK4Jo7gE1ddL7+zCIq0zGt6aeVqRGBOtUMk4SvNGkzI4w== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/npm-run-script" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/profiler" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/timer" "6.0.1" - "@lerna/validation-error" "6.0.1" - fs-extra "^9.1.0" - p-map "^4.0.0" - -"@lerna/symlink-binary@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.1.tgz#b9278650c3360cc518e0d313d9999cd740a2c054" - integrity sha512-TcwxDMgU9w+hGl0EeYihPytVRKV0KTeZZW4Bq6NEtjTCIIuKWxZjcY5ocxW22i6BClBvfFAJqkf+e+i3Nixlhg== - dependencies: - "@lerna/create-symlink" "6.0.1" - "@lerna/package" "6.0.1" - fs-extra "^9.1.0" - p-map "^4.0.0" - -"@lerna/symlink-dependencies@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.1.tgz#28c01b3f910c1d13b1d447d27c47f5c76efd0096" - integrity sha512-ImyqjLjMBu0ORGO9gYHr9oDgN/5QeeGuELtYNweLS5vMNSH1dokQW9fqZSrgfCJPbxeCizBcDTi/Knqg17ebkA== - dependencies: - "@lerna/create-symlink" "6.0.1" - "@lerna/resolve-symlink" "6.0.1" - "@lerna/symlink-binary" "6.0.1" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - -"@lerna/temp-write@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.1.tgz#84f8aa3f74b6150706a70430c68815517f5301cf" - integrity sha512-9eklYncDnwTnGF9o14GOrZU05ZK5n6/x5XYRQHbuLfK5T9pmOiUyl6sO1613cZygUMaWHHi7BLtBPiw2CklqXQ== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^8.3.2" - -"@lerna/timer@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.1.tgz#eb10242c48a1246e1bf216af305974fbd6332d39" - integrity sha512-FLoga8iprKmRkh9jO+LP4Bm7MZLO4wNHM4LML4Dlh9CPwcIOWTteI8wSgRXvEJpt33IRIoPOUnfL3iHh8WwaYA== - -"@lerna/validation-error@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.1.tgz#afcf6b193eae86d64df9561afb7698696257304f" - integrity sha512-kjAxfFY1pDltwoCTvMQCbnpBwMXBFuvE4hdi8qePhBQ1Lf0PlTOI4ZqMFIkaTud+oujzysDXraTJbYTjc+C+zw== - dependencies: - npmlog "^6.0.2" - -"@lerna/version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.1.tgz#988675be8ea29f1548cb4554c257c2cc94b78084" - integrity sha512-d/addeHVsRFWx3fb/XZIh6f23KuEC9Fn3ytpaMzA8rlLF3Nob1opIR98ZfUz7Nf+skpIV1QiIbXdJTZzIKvd9g== - dependencies: - "@lerna/check-working-tree" "6.0.1" - "@lerna/child-process" "6.0.1" - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/conventional-commits" "6.0.1" - "@lerna/github-client" "6.0.1" - "@lerna/gitlab-client" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/temp-write" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@nrwl/devkit" ">=14.8.6 < 16" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^6.0.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - write-json-file "^4.3.0" - -"@lerna/write-log-file@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.1.tgz#4335d5e08686f8250ebae9d7f56b64452bd90cd3" - integrity sha512-fJGDE8rlE35DwKSqV8M1VV2xw/vQlgwTwURjNOMvd1Ar23Aa9CkJC4XAwc9uUgIku34IsWUM8MNbw9ClSsJaqw== - dependencies: - npmlog "^6.0.2" - write-file-atomic "^4.0.1" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/arborist@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.3.0.tgz#321d9424677bfc08569e98a5ac445ee781f32053" - integrity sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^2.0.3" - "@npmcli/metavuln-calculator" "^3.0.1" - "@npmcli/move-file" "^2.0.0" - "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/package-json" "^2.0.0" - "@npmcli/run-script" "^4.1.3" - bin-links "^3.0.0" - cacache "^16.0.6" - common-ancestor-path "^1.0.1" - json-parse-even-better-errors "^2.3.1" - json-stringify-nice "^1.1.4" - mkdirp "^1.0.4" - mkdirp-infer-owner "^2.0.0" - nopt "^5.0.0" - npm-install-checks "^5.0.0" - npm-package-arg "^9.0.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.0" - npmlog "^6.0.2" - pacote "^13.6.1" - parse-conflict-json "^2.0.1" - proc-log "^2.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^1.0.1" - read-package-json-fast "^2.0.2" - readdir-scoped-modules "^1.1.0" - rimraf "^3.0.2" - semver "^7.3.7" - ssri "^9.0.0" - treeverse "^2.0.0" - walk-up-path "^1.0.0" - -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/git@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" - integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== - dependencies: - "@npmcli/promise-spawn" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" lru-cache "^7.4.4" - mkdirp "^1.0.4" - npm-pick-manifest "^7.0.0" - proc-log "^2.0.0" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" promise-inflight "^1.0.1" promise-retry "^2.0.1" semver "^7.3.5" - which "^2.0.2" + which "^3.0.0" -"@npmcli/installed-package-contents@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== +"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + version "2.0.2" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" + integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" -"@npmcli/map-workspaces@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" - integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== +"@npmcli/map-workspaces@^3.0.2": + version "3.0.4" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz#15ad7d854292e484f7ba04bc30187a8320dba799" + integrity sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg== dependencies: - "@npmcli/name-from-folder" "^1.0.1" - glob "^8.0.1" - minimatch "^5.0.1" - read-package-json-fast "^2.0.3" + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" -"@npmcli/metavuln-calculator@^3.0.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" - integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== +"@npmcli/metavuln-calculator@^5.0.0": + version "5.0.1" + resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz#426b3e524c2008bcc82dbc2ef390aefedd643d76" + integrity sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q== dependencies: - cacache "^16.0.0" - json-parse-even-better-errors "^2.3.1" - pacote "^13.0.3" + cacache "^17.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^15.0.0" semver "^7.3.5" "@npmcli/move-file@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" rimraf "^3.0.2" -"@npmcli/name-from-folder@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" - integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== "@npmcli/node-gyp@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== -"@npmcli/package-json@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" - integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.1.0.tgz#d9eb34083be4275520f3844d17fc74926d47cae1" + integrity sha512-qNPy6Yf9ruFST99xcrl5EWAvrb7qFrwgVbwdzcTJlIgxbArKOq5e/bgZ6rTL1X9hDgAdPbvL8RWx/OTLSB0ToA== dependencies: - json-parse-even-better-errors "^2.3.1" + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.1" "@npmcli/promise-spawn@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" - integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== + dependencies: + which "^3.0.0" + +"@npmcli/query@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz#51a0dfb85811e04f244171f164b6bc83b36113a7" + integrity sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/run-script@4.1.7": + version "4.1.7" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" + integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== dependencies: "@npmcli/node-gyp" "^2.0.0" "@npmcli/promise-spawn" "^3.0.0" @@ -2274,23 +1754,34 @@ read-package-json-fast "^2.0.3" which "^2.0.2" +"@npmcli/run-script@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" + integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + "@nrwl/cli@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.5.10.tgz#826c06a9a272523424f0c5690f5d745260ed1ea1" + resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.10.tgz#826c06a9a272523424f0c5690f5d745260ed1ea1" integrity sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ== dependencies: nx "14.5.10" -"@nrwl/cli@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" - integrity sha512-D0zAhZ375bQnoUM2HLifMzAa75A3/lC9OkkewsiVVbqaznjEIry8ezHZepgfjFRVzLr3ue7FIpDEH3iJIYzvVw== +"@nrwl/cli@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz#63b600dff1cdc126f234d16978a888f72c22a00c" + integrity sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw== dependencies: - nx "15.0.0" + nx "15.9.4" "@nrwl/devkit@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.5.10.tgz#b87bc3dad8e6d019c76adf7f65a56af19df70283" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.10.tgz#b87bc3dad8e6d019c76adf7f65a56af19df70283" integrity sha512-YVT0MRvyXwe0uczUZK4XUi1f2iLAqklFMfAoqwfgcgWToH8xN06NSlyUphD4eLHFgem3Sd0kimAJVsnse/PTlA== dependencies: "@phenomnomnominal/tsquery" "4.1.1" @@ -2299,20 +1790,20 @@ semver "7.3.4" tslib "^2.3.0" -"@nrwl/devkit@>=14.8.6 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.0.0.tgz#755bc07581a57e0ae87f68a7562ab86ff737e919" - integrity sha512-ALtPfILlxLDg77rV/XNdDGbhUkh0gZPj/4Ehy3ScvVqPhTrDIZNLGX13dXgUUF9xhGb7SXPmvzZkduBpqmHnfQ== +"@nrwl/devkit@>=15.5.2 < 16": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz#3f0a43a9637fcd0a46c06df2a9c36012b27f006b" + integrity sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ== dependencies: - "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" ignore "^5.0.4" semver "7.3.4" + tmp "~0.2.1" tslib "^2.3.0" "@nrwl/jest@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.5.10.tgz#1e808608665660c59e4b3026ba0eab7f86153163" + resolved "https://registry.npmjs.org/@nrwl/jest/-/jest-14.5.10.tgz#1e808608665660c59e4b3026ba0eab7f86153163" integrity sha512-gGqghwDcpBhk8TNK2Gfp/5PWqnnAPUjNfSCOz39kk9ZBtsyloozGwjg/VEF3k2p9uCifRfAyZOpDrSdALxBpdA== dependencies: "@jest/reporters" "27.5.1" @@ -2331,7 +1822,7 @@ "@nrwl/linter@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-14.5.10.tgz#c9c78c796667f985ebbc4e126dc37ae5b14f0921" + resolved "https://registry.npmjs.org/@nrwl/linter/-/linter-14.5.10.tgz#c9c78c796667f985ebbc4e126dc37ae5b14f0921" integrity sha512-3c6KhSLJmt8wMkYZw+f/KayPHkM+KV/z+QaYQL59XY5o9DdYyq6jHjnvu/CuW2JzU97yHkacYbwkSFQlDKCyIg== dependencies: "@nrwl/devkit" "14.5.10" @@ -2341,23 +1832,68 @@ tmp "~0.2.1" tslib "^2.3.0" +"@nrwl/nx-darwin-arm64@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz#e5a2f39d42a60397a01140a251f894788f5d1fda" + integrity sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ== + +"@nrwl/nx-darwin-x64@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz#97a810d4ff6b4bf395a43e4740890c0def2372da" + integrity sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw== + +"@nrwl/nx-linux-arm-gnueabihf@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz#b8dd23b8c755b7e640d744945ab2dec3fd3eda65" + integrity sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA== + +"@nrwl/nx-linux-arm64-gnu@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz#5bc150c2bdb2e0a2eaf8721b3c5fdb2eb93f8739" + integrity sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow== + +"@nrwl/nx-linux-arm64-musl@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz#df2f18f813828000dc52f1b7668339947b1a0862" + integrity sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w== + +"@nrwl/nx-linux-x64-gnu@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz#55547b07e6aeb0c36a43e05bd07c15b013f2de9f" + integrity sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg== + +"@nrwl/nx-linux-x64-musl@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz#29cd644736f643566d9c0e1a1171c49a62a08c09" + integrity sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q== + +"@nrwl/nx-win32-arm64-msvc@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz#55a38bf5dc201e9088729fb03e505dc63caf8b3a" + integrity sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA== + +"@nrwl/nx-win32-x64-msvc@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz#56bb859bfe47d08d14f8d5822d9a31d9098d95a9" + integrity sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw== + "@nrwl/tao@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.5.10.tgz#69c90f8b6e13f2bb521840a5903f7eb4884285ff" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.10.tgz#69c90f8b6e13f2bb521840a5903f7eb4884285ff" integrity sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA== dependencies: nx "14.5.10" -"@nrwl/tao@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" - integrity sha512-qup1eSWYwp/KVrw/wxeWBvYttQ9dcbQnqpXb5NQMD31SpXEZSpJB1i3GV/o6CF5qQQSNLwICXZx25rNTTQAqpg== +"@nrwl/tao@15.9.4": + version "15.9.4" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz#5e384af06d1fb68e326eda2c6a5d8f99ce1583b8" + integrity sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg== dependencies: - nx "15.0.0" + nx "15.9.4" "@nrwl/workspace@14.5.10": version "14.5.10" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.5.10.tgz#cf224886a983c53eded62fa3d5e55c80863eca64" + resolved "https://registry.npmjs.org/@nrwl/workspace/-/workspace-14.5.10.tgz#cf224886a983c53eded62fa3d5e55c80863eca64" integrity sha512-bJK2O5NcIYhU7z1mmWoONo2+tOt1VUYyOQUUrAcI00hiBhMJPOTwPPN+W5BbJsue95ndH6mRLo2UhTz20U2tNA== dependencies: "@nrwl/devkit" "14.5.10" @@ -2387,114 +1923,138 @@ yargs-parser "21.0.1" "@octokit/auth-token@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.2.tgz#a0fc8de149fd15876e1ac78f6525c1c5ab48435f" - integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== + version "3.0.3" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" + integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== dependencies: - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" -"@octokit/core@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.1.0.tgz#b6b03a478f1716de92b3f4ec4fd64d05ba5a9251" - integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== +"@octokit/core@^4.0.0": + version "4.2.1" + resolved "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz#fee6341ad0ce60c29cc455e056cd5b500410a588" + integrity sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/graphql" "^5.0.0" "@octokit/request" "^6.0.0" "@octokit/request-error" "^3.0.0" - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" before-after-hook "^2.2.0" universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.3.tgz#0b96035673a9e3bedf8bab8f7335de424a2147ed" - integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== + version "7.0.5" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" + integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== dependencies: - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.4.tgz#519dd5c05123868276f3ae4e50ad565ed7dff8c8" - integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== + version "5.0.6" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== dependencies: "@octokit/request" "^6.0.0" - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + "@octokit/openapi-types@^14.0.0": version "14.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== -"@octokit/plugin-enterprise-rest@^6.0.1": +"@octokit/openapi-types@^17.2.0": + version "17.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.2.0.tgz#f1800b5f9652b8e1b85cc6dfb1e0dc888810bdb5" + integrity sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ== + +"@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz#93d7e74f1f69d68ba554fa6b888c2a9cf1f99a83" - integrity sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw== +"@octokit/plugin-paginate-rest@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" + integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== dependencies: - "@octokit/types" "^8.0.0" + "@octokit/types" "^6.41.0" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^6.7.0": - version "6.7.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz#2f6f17f25b6babbc8b41d2bb0a95a8839672ce7c" - integrity sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw== +"@octokit/plugin-rest-endpoint-methods@^6.0.0": + version "6.8.1" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" + integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== dependencies: - "@octokit/types" "^8.0.0" + "@octokit/types" "^8.1.1" deprecation "^2.3.1" "@octokit/request-error@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.2.tgz#f74c0f163d19463b87528efe877216c41d6deb0a" - integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== + version "3.0.3" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== dependencies: - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" deprecation "^2.0.0" once "^1.4.0" "@octokit/request@^6.0.0": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.2.tgz#a2ba5ac22bddd5dcb3f539b618faa05115c5a255" - integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== + version "6.2.5" + resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.5.tgz#7beef1065042998f7455973ef3f818e7b84d6ec2" + integrity sha512-z83E8UIlPNaJUsXpjD8E0V5o/5f+vJJNbNcBwVZsX3/vC650U41cOkTLjq4PKk9BYonQGOnx7N17gvLyNjgGcQ== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" - "@octokit/types" "^8.0.0" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^19.0.3": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.5.tgz#4dbde8ae69b27dca04b5f1d8119d282575818f6c" - integrity sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow== +"@octokit/rest@19.0.3": + version "19.0.3" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" + integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== dependencies: - "@octokit/core" "^4.1.0" - "@octokit/plugin-paginate-rest" "^5.0.0" + "@octokit/core" "^4.0.0" + "@octokit/plugin-paginate-rest" "^3.0.0" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^6.7.0" + "@octokit/plugin-rest-endpoint-methods" "^6.0.0" -"@octokit/types@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.0.0.tgz#93f0b865786c4153f0f6924da067fe0bb7426a9f" - integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== +"@octokit/types@^6.41.0": + version "6.41.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + +"@octokit/types@^8.1.1": + version "8.2.1" + resolved "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" + integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== dependencies: "@octokit/openapi-types" "^14.0.0" +"@octokit/types@^9.0.0": + version "9.2.3" + resolved "https://registry.npmjs.org/@octokit/types/-/types-9.2.3.tgz#d0af522f394d74b585cefb7efd6197ca44d183a9" + integrity sha512-MMeLdHyFIALioycq+LFcA71v0S2xpQUX2cw6pPbHQjaibcHYwLnmK/kMZaWuGfGfjBJZ3wRUq+dOaWsvrPJVvA== + dependencies: + "@octokit/openapi-types" "^17.2.0" + "@parcel/watcher@2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== dependencies: node-addon-api "^3.2.1" @@ -2502,14 +2062,19 @@ "@phenomnomnominal/tsquery@4.1.1": version "4.1.1" - resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + resolved "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== dependencies: esquery "^1.0.1" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@rollup/plugin-babel@5.3.1": version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -2517,7 +2082,7 @@ "@rollup/plugin-commonjs@22.0.1": version "22.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" integrity sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2530,14 +2095,14 @@ "@rollup/plugin-json@4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13.3.0": version "13.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2549,7 +2114,7 @@ "@rollup/plugin-replace@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" integrity sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2557,7 +2122,7 @@ "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" @@ -2566,7 +2131,7 @@ "@sentry-internal/tracing@7.50.0": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" integrity sha512-4TQ4vN0aMBWsUXfJWk2xbe4x7fKfwCXgXKTtHC/ocwwKM+0EefV5Iw9YFG8IrIQN4vMtuRzktqcs9q0/Sbv7tg== dependencies: "@sentry/core" "7.50.0" @@ -2575,9 +2140,9 @@ tslib "^1.9.3" "@sentry/cli@^2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.17.0.tgz#fc809ecd721eb5323502625fa904b786af28ad89" - integrity sha512-CHIMEg8+YNCpEBDgUctu+DvG3S8+g8Zn9jTE5MMGINNmGkQTMG179LuDE04B/inaCYixLVNpFPTe6Iow3tXjnQ== + version "2.18.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.18.1.tgz#c44f189a1a72a83087a297c5fcc7668f86dd4308" + integrity sha512-lc/dX/cvcmznWNbLzDbzxn224vwY5zLIDBe3yOO6Usg3CDgkZZ3xfjN4AIUZwkiTEPIOELodrOfdoMxqpXyYDw== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2587,7 +2152,7 @@ "@sentry/core@7.50.0": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" integrity sha512-6oD1a3fYs4aiNK7tuJSd88LHjYJAetd7ZK/AfJniU7zWKj4jxIYfO8nhm0qdnhEDs81RcweVDmPhWm3Kwrzzsg== dependencies: "@sentry/types" "7.50.0" @@ -2596,7 +2161,7 @@ "@sentry/integrations@7.50": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" + resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" integrity sha512-HUmPN2sHNx37m+lOWIoCILHimILdI0Df9nGmWA13fIhny8mxJ6Dbazyis11AW4/lrZ1a6F1SQ2epLEq7ZesiRw== dependencies: "@sentry/types" "7.50.0" @@ -2606,7 +2171,7 @@ "@sentry/node@7.50", "@sentry/node@7.50.0": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" integrity sha512-11UJBKoQFMp7f8sbzeO2gENsKIUkVCNBTzuPRib7l2K1HMjSfacXmwwma7ZEs0mc3ofIZ1UYuyONAXmI1lK9cQ== dependencies: "@sentry-internal/tracing" "7.50.0" @@ -2620,229 +2185,213 @@ "@sentry/types@7.50.0": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== "@sentry/utils@7.50.0": version "7.50.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" integrity sha512-iyPwwC6fwJsiPhH27ZbIiSsY5RaccHBqADS2zEjgKYhmP4P9WGgHRDrvLEnkOjqQyKNb6c0yfmv83n0uxYnolw== dependencies: "@sentry/types" "7.50.0" tslib "^1.9.3" +"@sigstore/protobuf-specs@^0.1.0": + version "0.1.0" + 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.28" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.28.tgz#15aa0b416f82c268b1573ab653e4413c965fe794" - integrity sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow== + 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" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + version "1.8.6" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers@^9.1.2": version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + 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" -"@swc/core-android-arm-eabi@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.242.tgz#3ae5d8b178a0835ae0878094175d943f2d894bec" - integrity sha512-Ukx1LQAUbPRJdREF9FMgeUwIuRtWJNpPyPF7BWl4hIkw024q75mohMbp3S2wgrF1TsSsEGW37q0DkFxPJ2uJbQ== - dependencies: - "@swc/wasm" "1.2.122" - -"@swc/core-android-arm64@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.242.tgz#2c1885c08dd5720991a6fa7585d39a93df98e773" - integrity sha512-4E/y+reQWHVCV/0Sn174gsLQyqIKlBWKnwUfPa7MA53VBacp8HTYoPY+iwKPrngsH16gEOC7iByiTJHR/4kirg== - dependencies: - "@swc/wasm" "1.2.130" - -"@swc/core-darwin-arm64@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.242.tgz#1b8b16a132cc354ea3b31d26c46908dae2fe41ed" - integrity sha512-nIqtjxdbz0Fe0gFZwCygBwUrGEXj3c4mjHjNeveidVX/6U0HE/EAj+0iXuw8zjJLof8HCMnxq8CzzvhA6gd3ZA== - -"@swc/core-darwin-x64@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.242.tgz#cde041d520fcfb0865f49b395bb2c76af8ec3f3a" - integrity sha512-iZKzI76vYYHD/t8wkQ/uIVuIyxN1eift2nLvUU7/jtmoa6b8DH/45ykB/C3vkuvYVNMiGA8HIjJIzw7RJz5XIQ== - -"@swc/core-freebsd-x64@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.242.tgz#a95827311424dd86190fdb73bec996d24188c6d3" - integrity sha512-6JNi5/6JDvcTQzBkndELiIlJufWowoI2ZEmXlGIJpiGoj28PEDPwy5LO7KkXa4DnY5L4CSh15idFO/DxV0rGAQ== - dependencies: - "@swc/wasm" "1.2.130" - -"@swc/core-linux-arm-gnueabihf@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.242.tgz#1b0bd0ba96c59a9c4b87668521ce8ba55c8c7f55" - integrity sha512-NGL9A3cv8PCbeQ1SvPfApNlHvFbf7Jn305sCAy3iZYsmwm+EU4JNlOWXGgRioP7ABhz2kwLhfYs8UMYCDIVq8Q== - dependencies: - "@swc/wasm" "1.2.130" - -"@swc/core-linux-arm64-gnu@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.242.tgz#f97c1b655779788fff9a035f6a80180b1545423b" - integrity sha512-OJ0kAjgeoRDJlo6Rvd2GnJ92tiIndmC/8krD9gfnQEyAgpR+jajOxbKhyBN/QZPyD2q/TG2LPqxhGYZ79q5mWQ== - -"@swc/core-linux-arm64-musl@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.242.tgz#ad77a5c7fc79d42d64970ca1886eb9d626388ca2" - integrity sha512-VqnHSYb1a6xW5ARUx9kq88s1S3XvCw9TvQXsPcN4e5qsugrLzxWLnqIM6VnWW06prxN7pYlWo9QtrtdPfbppmA== - -"@swc/core-linux-x64-gnu@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.242.tgz#4c7f2c483876a4b0755a263133c25413fa69df88" - integrity sha512-DDqVJh0KpgHb+E0563+6PqAYDzYTSwgZXF/fOULwlHC7Yt50a9+ecisTFSHkWc74zPMtq27kMTuZyyLeD3gu7A== - -"@swc/core-linux-x64-musl@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.242.tgz#48f8769094cfde9d78dc32936666575470583b2a" - integrity sha512-P+9sWgd5eZ6kS1WxOJbCeSgWY7mLP742PhwAzpFrJqCq5nx8Q4FYo4L5mOVNAheYDWldsxR1nKXR1RIMK3S2Lw== - -"@swc/core-win32-arm64-msvc@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.242.tgz#e421a5a7a49d1effa71a22fea22a65256b447108" - integrity sha512-W5cevrf5aDJzdE++XeQi1BJKuigC3dlG2NaBUyt3inmep7nli6eoBJdj9Vyg5EPfFOdeI6wQiwOpFvQRoAle8Q== - dependencies: - "@swc/wasm" "1.2.130" - -"@swc/core-win32-ia32-msvc@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.242.tgz#1b836f5872195fef506a094eae7734b5fd28a1b5" - integrity sha512-XRQcgChvY9333hBre9F53EbiVfVu5MkSH4+XIiNMK14Jg8EqQ1nOcd+jvv2sEdEVbufCmBbWNjofUrCoQey60w== - dependencies: - "@swc/wasm" "1.2.130" - -"@swc/core-win32-x64-msvc@1.2.242": - version "1.2.242" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.242.tgz#61a6c7d4da1dec1188b912785bd8e0bb16ff8440" - integrity sha512-Cz1hZOxcfEVgzEr2sYIW9MxT+wEEbYz7aB87ZDmTUpr7vuvBiLMwsYItm8qG847wZeJfa+J7CC+tty5GJOBOOQ== +"@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.2.242" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.242.tgz#4392ef0012fe9667440c6eb5a419b6cc86a0a786" - integrity sha512-JQqSYVoLtHtztCNBgeCKyxmqw6AksHsC4WvVSSErLXJx6JXKaog1HFVuzd6rwx2lLCV+zBnbqJFug5OX0g2knw== + 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-android-arm-eabi" "1.2.242" - "@swc/core-android-arm64" "1.2.242" - "@swc/core-darwin-arm64" "1.2.242" - "@swc/core-darwin-x64" "1.2.242" - "@swc/core-freebsd-x64" "1.2.242" - "@swc/core-linux-arm-gnueabihf" "1.2.242" - "@swc/core-linux-arm64-gnu" "1.2.242" - "@swc/core-linux-arm64-musl" "1.2.242" - "@swc/core-linux-x64-gnu" "1.2.242" - "@swc/core-linux-x64-musl" "1.2.242" - "@swc/core-win32-arm64-msvc" "1.2.242" - "@swc/core-win32-ia32-msvc" "1.2.242" - "@swc/core-win32-x64-msvc" "1.2.242" + "@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" "@swc/jest@^0.2.21": - version "0.2.22" - resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" - integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== + 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" - -"@swc/wasm@1.2.122": - version "1.2.122" - resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" - integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== - -"@swc/wasm@1.2.130": - version "1.2.130" - resolved "https://registry.yarnpkg.com/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" - integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== + jsonc-parser "^3.2.0" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/models@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" + integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^9.0.0" "@types/axios@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" + resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== dependencies: axios "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + version "7.20.0" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.0.tgz#8134fd78cb39567465be65b9fdc16d378095f41f" - integrity sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw== + version "7.18.5" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" + integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -2850,215 +2399,239 @@ "@types/connect@*": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== + version "8.40.0" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" + integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + version "1.0.1" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/estree@0.0.39": version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/estree@^0.0.51": version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== -"@types/express-serve-static-core@^4.17.18": - version "4.17.30" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04" - integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ== +"@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" + "@types/send" "*" "@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + version "4.17.17" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" "@types/glob@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + 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== dependencies: "@types/node" "*" "@types/http-proxy@^1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" - integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== + version "1.17.11" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" + integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^28.1.3": - version "28.1.7" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.7.tgz#a680c5d05b69634c2d54a63cb106d7fb1adaba16" - integrity sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA== + 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.8", "@types/json-schema@^7.0.9": version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@*": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + "@types/minimatch@*": version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/minimatch@^3.0.3": version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^18.6.3": - version "18.7.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.11.tgz#486e72cfccde88da24e1f23ff1b7d8bfb64e6250" - integrity sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw== +"@types/node@*": + version "20.2.3" + resolved "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" + integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== + +"@types/node@^18.6.3": + version "18.16.14" + resolved "https://registry.npmjs.org/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631" + integrity sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg== "@types/normalize-package-data@^2.4.0": version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.1.5": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" - integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== + version "2.7.2" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== "@types/qs@*": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/resolve@1.17.1": version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + "@types/serve-static@*": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + version "1.15.1" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== dependencies: "@types/mime" "*" "@types/node" "*" "@types/source-list-map@*": version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/stack-utils@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/tapable@^1": version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/uglify-js@*": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.0.tgz#95271e7abe0bf7094c60284f76ee43232aef43b9" - integrity sha512-3HO6rm0y+/cqvOyA8xcYLweF0TKXlAxmQASjbOi49Co51A1N4nR4bEwBgRoD9kNM+rqFGArjKr654SLp2CoGmQ== + version "3.17.1" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: source-map "^0.6.1" "@types/uuid@^9.0.1": version "9.0.1" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.1.tgz#98586dc36aee8dacc98cc396dbca8d0429647aa6" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz#98586dc36aee8dacc98cc396dbca8d0429647aa6" integrity sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA== "@types/webpack-sources@*": version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== dependencies: "@types/node" "*" @@ -3067,7 +2640,7 @@ "@types/webpack4@npm:@types/webpack@4.41.32": version "4.41.32" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== dependencies: "@types/node" "*" @@ -3079,113 +2652,117 @@ "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + version "16.0.5" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.11.tgz#5e10ca33e219807c0eee0f08b5efcba9b6a42c06" - integrity sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA== + 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.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.34.0.tgz#d690f60e335596f38b01792e8f4b361d9bd0cb35" - integrity sha512-eRfPPcasO39iwjlUAMtjeueRGuIrW3TQ9WseIDl7i5UWuFbf83yYaU7YPs4j8+4CxUMIsj1k+4kV+E+G+6ypDQ== - dependencies: - "@typescript-eslint/scope-manager" "5.34.0" - "@typescript-eslint/type-utils" "5.34.0" - "@typescript-eslint/utils" "5.34.0" + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz#e470af414f05ecfdc05a23e9ce6ec8f91db56fe2" + integrity sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/type-utils" "5.59.7" + "@typescript-eslint/utils" "5.59.7" debug "^4.3.4" - functional-red-black-tree "^1.0.1" + grapheme-splitter "^1.0.4" ignore "^5.2.0" - regexpp "^3.2.0" + natural-compare-lite "^1.4.0" semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/experimental-utils@^5.0.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.34.0.tgz#f24200ee4d55ecf30a24e335d551fc6819f0c84b" - integrity sha512-bXDmphFgoQI4eY7r8Vp0mwrvU9Pic+KxuQPG8uoC33FlZLgsFhv8brhUUyniHEeDhApdg4/5a3qYEZbNGnRQYQ== + 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.34.0" + "@typescript-eslint/utils" "5.59.7" "@typescript-eslint/parser@^5.13.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.34.0.tgz#ca710858ea85dbfd30c9b416a335dc49e82dbc07" - integrity sha512-SZ3NEnK4usd2CXkoV3jPa/vo1mWX1fqRyIVUQZR4As1vyp4fneknBNJj+OFtV8WAVgGf+rOHMSqQbs2Qn3nFZQ== + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" + integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== dependencies: - "@typescript-eslint/scope-manager" "5.34.0" - "@typescript-eslint/types" "5.34.0" - "@typescript-eslint/typescript-estree" "5.34.0" + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527" - integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow== +"@typescript-eslint/scope-manager@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" + integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== dependencies: - "@typescript-eslint/types" "5.34.0" - "@typescript-eslint/visitor-keys" "5.34.0" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" -"@typescript-eslint/type-utils@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.34.0.tgz#7a324ab9ddd102cd5e1beefc94eea6f3eb32d32d" - integrity sha512-Pxlno9bjsQ7hs1pdWRUv9aJijGYPYsHpwMeCQ/Inavhym3/XaKt1ZKAA8FIw4odTBfowBdZJDMxf2aavyMDkLg== +"@typescript-eslint/type-utils@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d" + integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ== dependencies: - "@typescript-eslint/utils" "5.34.0" + "@typescript-eslint/typescript-estree" "5.59.7" + "@typescript-eslint/utils" "5.59.7" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78" - integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA== +"@typescript-eslint/types@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" + integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== -"@typescript-eslint/typescript-estree@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a" - integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A== +"@typescript-eslint/typescript-estree@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" + integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== dependencies: - "@typescript-eslint/types" "5.34.0" - "@typescript-eslint/visitor-keys" "5.34.0" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743" - integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ== +"@typescript-eslint/utils@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898" + integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ== dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.34.0" - "@typescript-eslint/types" "5.34.0" - "@typescript-eslint/typescript-estree" "5.34.0" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.34.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40" - integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw== +"@typescript-eslint/visitor-keys@5.59.7": + version "5.59.7" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" + integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== dependencies: - "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/types" "5.59.7" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: "@webassemblyjs/helper-numbers" "1.11.1" @@ -3193,7 +2770,7 @@ "@webassemblyjs/ast@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" @@ -3202,56 +2779,56 @@ "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + 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.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + 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.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" @@ -3260,17 +2837,17 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + 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.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3280,7 +2857,7 @@ "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3290,45 +2867,45 @@ "@webassemblyjs/ieee754@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/leb128@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/utf8@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3342,7 +2919,7 @@ "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3356,7 +2933,7 @@ "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3367,7 +2944,7 @@ "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3378,7 +2955,7 @@ "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3388,7 +2965,7 @@ "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3398,7 +2975,7 @@ "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3410,7 +2987,7 @@ "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3422,7 +2999,7 @@ "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3434,7 +3011,7 @@ "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3442,7 +3019,7 @@ "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -3451,37 +3028,37 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== "@yarnpkg/lockfile@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== "@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0-rc.26" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.26.tgz#353976e2c2dff453c824724532ab246772a4f6f6" - integrity sha512-F52Zryoi6uSHi43A/htykDD7l1707TQjHeAHTKxNWJBTwvrEKWYvuu1w8bzSHpFVc06ig2KyrpHPfmeiuOip8Q== + version "3.0.0-rc.44" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.44.tgz#43bf7943c039681da8f343cc6d73c2ab3184978b" + integrity sha512-UVAt9Icc8zfGXioeYJ8XMoSTxOYVmlal2TRNxy9Uh91taS72kQFalK7LpIslcvEBKy4XtarmfIwcFIU3ZY64lw== dependencies: js-yaml "^3.10.0" tslib "^2.4.0" "@zkochan/js-yaml@0.0.6": version "0.0.6" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== dependencies: argparse "^2.0.1" JSONStream@^1.0.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -3489,17 +3066,29 @@ JSONStream@^1.0.4: abab@^2.0.3, abab@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@1, abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -3507,76 +3096,71 @@ accepts@~1.3.8: acorn-globals@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + version "1.9.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.1.1: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^6.4.1: version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.1.1: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -acorn@^8.8.1: +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== add-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== agent-base@6, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + version "4.3.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== dependencies: debug "^4.1.0" - depd "^1.1.2" + depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -3584,17 +3168,17 @@ aggregate-error@^3.0.0: ajv-errors@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -3604,170 +3188,202 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== aproba@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" +are-we-there-yet@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" + integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== + dependencies: + delegates "^1.0.0" + readable-stream "^4.1.0" + arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== arr-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" is-string "^1.0.7" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== arrify@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - asn1.js@^5.2.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" @@ -3777,7 +3393,7 @@ asn1.js@^5.2.0: assert@^1.1.1: version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: object-assign "^4.1.1" @@ -3785,38 +3401,43 @@ assert@^1.1.1: assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + version "1.0.6" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== async@^3.2.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + axios@*, axios@^1.0.0, axios@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + version "1.4.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -3824,7 +3445,7 @@ axios@*, axios@^1.0.0, axios@^1.1.3: babel-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" @@ -3838,7 +3459,7 @@ babel-jest@^27.5.1: babel-jest@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + 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" @@ -3849,16 +3470,9 @@ babel-jest@^28.1.3: graceful-fs "^4.2.9" slash "^3.0.0" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -3869,7 +3483,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" @@ -3879,7 +3493,7 @@ babel-plugin-jest-hoist@^27.5.1: babel-plugin-jest-hoist@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + 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" @@ -3888,17 +3502,17 @@ babel-plugin-jest-hoist@^28.1.3: "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== + version "0.3.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.2" @@ -3906,14 +3520,14 @@ babel-plugin-polyfill-corejs3@^0.5.0: babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -3931,7 +3545,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: babel-plugin-jest-hoist "^27.5.1" @@ -3939,7 +3553,7 @@ babel-preset-jest@^27.5.1: babel-preset-jest@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + 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" @@ -3947,17 +3561,17 @@ babel-preset-jest@^28.1.3: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -3970,46 +3584,44 @@ base@^0.11.1: before-after-hook@^2.2.0: version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== big.js@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" - integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== +bin-links@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" + integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== dependencies: - cmd-shim "^5.0.0" - mkdirp-infer-owner "^2.0.0" - npm-normalize-package-bin "^2.0.0" - read-cmd-shim "^3.0.0" - rimraf "^3.0.0" - write-file-atomic "^4.0.0" + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" binary-extensions@^1.0.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -4018,23 +3630,23 @@ bl@^4.0.3, bl@^4.1.0: bluebird@^3.5.5: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.0.0, bn.js@^5.1.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -4044,14 +3656,14 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -4059,14 +3671,14 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -4082,24 +3694,24 @@ braces@^2.3.1, braces@^2.3.2: braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -4111,7 +3723,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" @@ -4120,7 +3732,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" @@ -4130,7 +3742,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: bn.js "^5.0.0" @@ -4138,7 +3750,7 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: browserify-sign@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" @@ -4153,41 +3765,41 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer@^4.3.0: version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" @@ -4196,47 +3808,55 @@ buffer@^4.3.0: buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + builtin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== builtin-status-codes@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== builtins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== builtins@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== dependencies: semver "^7.0.0" -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== +byte-size@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^12.0.2: version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" @@ -4255,9 +3875,9 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: +cacache@^16.1.0: version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" @@ -4279,9 +3899,27 @@ cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: tar "^6.1.11" unique-filename "^2.0.0" +cacache@^17.0.0, cacache@^17.0.4: + version "17.1.3" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" + integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -4296,7 +3934,7 @@ cache-base@^1.0.1: call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -4304,12 +3942,12 @@ call-bind@^1.0.0, call-bind@^1.0.2: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -4318,22 +3956,22 @@ camelcase-keys@^6.2.2: camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001370: - version "1.0.30001382" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz#4d37f0d0b6fffb826c8e5e1c0f4bf8ce592db949" - integrity sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg== +caniuse-lite@^1.0.30001449: + version "1.0.30001489" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" + integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== chalk@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" @@ -4341,7 +3979,7 @@ chalk@4.1.0: chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -4350,7 +3988,7 @@ chalk@^2.0.0, chalk@^2.4.1: chalk@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -4358,7 +3996,7 @@ chalk@^3.0.0: chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -4366,17 +4004,17 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^2.1.8: version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" @@ -4395,7 +4033,7 @@ chokidar@^2.1.8: chokidar@^3.4.1, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -4410,32 +4048,32 @@ chokidar@^3.4.1, chokidar@^3.5.1, chokidar@^3.5.3: chownr@^1.1.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== +ci-info@^3.2.0, ci-info@^3.6.1: + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -4443,12 +4081,12 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cjs-module-lexer@^1.0.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -4458,43 +4096,52 @@ class-utils@^0.3.5: clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.9.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -4503,29 +4150,34 @@ clone-deep@^4.0.1: clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -cmd-shim@^5.0.0: +cmd-shim@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" +cmd-shim@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" + integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== + co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" @@ -4533,36 +4185,36 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -columnify@^1.6.0: +columnify@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: strip-ansi "^6.0.1" @@ -4570,29 +4222,29 @@ columnify@^1.6.0: combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== common-ancestor-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -4600,17 +4252,17 @@ compare-func@^2.0.0: component-emitter@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.0: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -4620,7 +4272,7 @@ concat-stream@^1.5.0: concat-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" @@ -4628,52 +4280,52 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== +config-chain@1.1.12: + version "1.1.12" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" console-browserify@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== constants-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== +conventional-changelog-angular@5.0.12: + version "5.0.12" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== dependencies: compare-func "^2.0.0" q "^1.5.1" -conventional-changelog-core@^4.2.4: +conventional-changelog-core@4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: add-stream "^1.0.0" @@ -4693,12 +4345,12 @@ conventional-changelog-core@^4.2.4: conventional-changelog-preset-loader@^2.3.4: version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== dependencies: conventional-commits-filter "^2.0.7" @@ -4713,7 +4365,7 @@ conventional-changelog-writer@^5.0.0: conventional-commits-filter@^2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: lodash.ismatch "^4.4.0" @@ -4721,7 +4373,7 @@ conventional-commits-filter@^2.0.7: conventional-commits-parser@^3.2.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" @@ -4731,9 +4383,9 @@ conventional-commits-parser@^3.2.0: split2 "^3.0.0" through2 "^4.0.0" -conventional-recommended-bump@^6.1.0: +conventional-recommended-bump@6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== dependencies: concat-stream "^2.0.0" @@ -4746,30 +4398,28 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== cookie@^0.4.1: version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== copy-concurrently@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" @@ -4781,26 +4431,25 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.24.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.1.tgz#d1af84a17e18dfdd401ee39da9996f9a7ba887de" - integrity sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw== + version "3.30.2" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" + integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== dependencies: - browserslist "^4.21.3" - semver "7.0.0" + browserslist "^4.21.5" core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +cosmiconfig@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -4810,7 +4459,7 @@ cosmiconfig@^7.0.0: create-ecdh@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" @@ -4818,7 +4467,7 @@ create-ecdh@^4.0.0: create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -4829,7 +4478,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -4841,12 +4490,12 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -4857,7 +4506,7 @@ cross-spawn@^6.0.5: cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -4866,7 +4515,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypto-browserify@^3.11.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" @@ -4881,36 +4530,46 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssom@^0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" cyclist@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== dargs@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== data-urls@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" @@ -4919,136 +4578,140 @@ data-urls@^2.0.0: dateformat@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + version "1.1.1" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" decamelize@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: - version "10.4.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.0.tgz#97a7448873b01e92e5ff9117d89a7bca8e63e0fe" - integrity sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg== + version "10.4.3" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -dedent@^0.7.0: +dedent@0.7.0, dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" +del@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@2.0.0: +depd@2.0.0, depd@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== des.js@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" @@ -5056,50 +4719,37 @@ des.js@^1.0.0: destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-indent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + 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.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + 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.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diffie-hellman@^5.0.0: version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" @@ -5108,64 +4758,64 @@ diffie-hellman@^5.0.0: dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" domain-browser@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domexception@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.0.0" -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== +dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" dotenv@~10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== duplexer@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" @@ -5173,26 +4823,31 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + version "3.1.9" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.202: - version "1.4.227" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.227.tgz#28e46e2a701fed3188db3ca7bf0a3a475e484046" - integrity sha512-I9VVajA3oswIJOUFg2PSBqrHLF5Y+ahIfjOV9+v6uYyBqFZutmPxA6fxocDUUmgwYevRWFu1VjLyVG3w45qa/g== +electron-to-chromium@^1.4.284: + version "1.4.404" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.404.tgz#16baf653a7a2613e221da61480ad02fe84e40231" + integrity sha512-te57sWvQdpxmyd1GiswaodKdXdPgn9cN4ht8JlNa04QgtrfnUdWEo1261rY2vaC6TKaiHn0E7QerJWPKFCvMVw== elliptic@^6.5.3: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -5205,46 +4860,51 @@ elliptic@^6.5.3: emittery@^0.10.2: version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + 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.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enhanced-resolve@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" @@ -5252,93 +4912,113 @@ enhanced-resolve@^4.5.0: tapable "^1.0.0" enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== + 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== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" enquirer@~2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.4: version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== errno@^0.1.3, errno@~0.1.7: version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.0" + object-inspect "^1.12.3" object-keys "^1.1.1" - object.assign "^4.1.2" + object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" es-module-lexer@^0.9.0: version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +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" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -5347,207 +5027,207 @@ es-to-primitive@^1.2.1: esbuild-android-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== esbuild-android-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== esbuild-android-arm64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== esbuild-android-arm64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== esbuild-darwin-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== esbuild-darwin-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== esbuild-darwin-arm64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== esbuild-darwin-arm64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== esbuild-freebsd-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== esbuild-freebsd-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== esbuild-freebsd-arm64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== esbuild-freebsd-arm64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== esbuild-linux-32@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== esbuild-linux-32@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== esbuild-linux-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== esbuild-linux-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== esbuild-linux-arm64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== esbuild-linux-arm64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== esbuild-linux-arm@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== esbuild-linux-arm@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== esbuild-linux-mips64le@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== esbuild-linux-mips64le@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== esbuild-linux-ppc64le@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== esbuild-linux-ppc64le@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== esbuild-linux-riscv64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== esbuild-linux-riscv64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== esbuild-linux-s390x@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== esbuild-linux-s390x@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== esbuild-netbsd-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== esbuild-netbsd-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== esbuild-openbsd-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== esbuild-openbsd-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== esbuild-sunos-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== esbuild-sunos-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== esbuild-windows-32@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== esbuild-windows-32@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== esbuild-windows-64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== esbuild-windows-64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== esbuild-windows-arm64@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== esbuild-windows-arm64@0.14.54: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== esbuild@0.14.49: version "0.14.49" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" integrity sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw== optionalDependencies: esbuild-android-64 "0.14.49" @@ -5573,7 +5253,7 @@ esbuild@0.14.49: esbuild@^0.14.47: version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== optionalDependencies: "@esbuild/linux-loong64" "0.14.54" @@ -5600,32 +5280,32 @@ esbuild@^0.14.47: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" @@ -5636,45 +5316,46 @@ escodegen@^2.0.0: source-map "~0.6.1" eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + version "8.8.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.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + 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.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.29.4: - version "7.30.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" - integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== + version "7.32.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" prop-types "^15.8.1" - resolve "^2.0.0-next.3" + resolve "^2.0.0-next.4" semver "^6.3.0" - string.prototype.matchall "^4.0.7" + string.prototype.matchall "^4.0.8" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -5682,69 +5363,59 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== eslint@^8.14.0, eslint@^8.18.0: - version "8.22.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48" - integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.10.4" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + version "8.41.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" + integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.41.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.3" - esquery "^1.4.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" @@ -5752,91 +5423,109 @@ eslint@^8.14.0, eslint@^8.18.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - regexpp "^3.2.0" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^9.3.2, espree@^9.3.3: - version "9.3.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" - integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.0.1, esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + execa@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" @@ -5851,7 +5540,7 @@ execa@^4.0.0: execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -5866,12 +5555,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" @@ -5884,7 +5573,7 @@ expand-brackets@^2.1.4: expect@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" @@ -5894,7 +5583,7 @@ expect@^27.5.1: expect@^28.0.0, expect@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + resolved "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== dependencies: "@jest/expect-utils" "^28.1.3" @@ -5904,13 +5593,13 @@ expect@^28.0.0, expect@^28.1.3: jest-util "^28.1.3" express@^4.18.1: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -5929,7 +5618,7 @@ express@^4.18.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -5942,14 +5631,14 @@ express@^4.18.1: extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" @@ -5957,7 +5646,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -5966,7 +5655,7 @@ external-editor@^3.0.3: extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -5980,12 +5669,12 @@ extglob@^2.0.4: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -5995,9 +5684,9 @@ fast-glob@3.2.7: micromatch "^4.0.4" fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -6007,62 +5696,67 @@ fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" figgy-pudding@^3.5.1: version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figures@3.2.0, figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filelist@^1.0.1: +file-url@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" + integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== + +filelist@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" @@ -6072,14 +5766,14 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -6092,7 +5786,7 @@ finalhandler@1.2.0: find-cache-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" @@ -6101,7 +5795,7 @@ find-cache-dir@^2.1.0: find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -6109,21 +5803,21 @@ find-up@5.0.0, find-up@^5.0.0: find-up@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -6131,7 +5825,7 @@ find-up@^4.0.0, find-up@^4.1.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -6139,40 +5833,50 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== flush-write-stream@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0: - version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== - -follow-redirects@^1.15.0: +follow-redirects@^1.0.0, follow-redirects@^1.15.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -6181,7 +5885,7 @@ form-data@^3.0.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -6190,24 +5894,24 @@ form-data@^4.0.0: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== from2@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: inherits "^2.0.1" @@ -6215,38 +5919,54 @@ from2@^2.1.0: fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@9.1.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== +fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: - at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" +fs-minipass@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" + integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + dependencies: + minipass "^5.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: graceful-fs "^4.1.2" @@ -6256,12 +5976,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.7: version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" @@ -6269,17 +5989,17 @@ fsevents@^1.2.7: fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -6287,19 +6007,14 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2: +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -6311,33 +6026,48 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" +gauge@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz#1efc801b8ff076b86ef3e9a7a280a975df572112" + integrity sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^4.0.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-pkg-repo@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: "@hutson/parse-repository-url" "^3.0.0" @@ -6345,26 +6075,31 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" -get-port@^5.1.1: +get-port@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + get-stream@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -6372,12 +6107,12 @@ get-symbol-description@^1.0.0: get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== git-raw-commits@^2.0.8: version "2.0.11" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" @@ -6388,7 +6123,7 @@ git-raw-commits@^2.0.8: git-remote-origin-url@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== dependencies: gitconfiglocal "^1.0.0" @@ -6396,7 +6131,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== dependencies: meow "^8.0.0" @@ -6404,56 +6139,56 @@ git-semver-tags@^4.1.1: git-up@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: is-ssh "^1.4.0" parse-url "^8.1.0" -git-url-parse@^13.1.0: +git-url-parse@13.1.0: version "13.1.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== dependencies: ini "^1.3.2" +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@7.1.4: version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" @@ -6463,9 +6198,9 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@8.0.3, glob@^8.0.1: +glob@8.0.3: version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" @@ -6476,7 +6211,7 @@ glob@8.0.3, glob@^8.0.1: glob@9.3.2: version "9.3.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda" integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== dependencies: fs.realpath "^1.0.0" @@ -6484,9 +6219,20 @@ glob@9.3.2: minipass "^4.2.4" path-scurry "^1.6.1" +glob@^10.2.2: + version "10.2.6" + resolved "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1" + integrity sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2" + path-scurry "^1.7.0" + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -6496,21 +6242,49 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" -globby@^11.0.2, globby@^11.1.0: +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@11.1.0, globby@^11.0.1, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -6520,19 +6294,36 @@ globby@^11.0.2, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@4.2.10: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + handlebars@^4.7.7: version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" @@ -6544,56 +6335,61 @@ handlebars@^4.7.7: hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.1: +has-unicode@2.0.1, has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has-value@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" @@ -6602,7 +6398,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" @@ -6611,12 +6407,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" @@ -6624,14 +6420,14 @@ has-values@^1.0.0: has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" @@ -6640,7 +6436,7 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -6648,7 +6444,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" @@ -6657,50 +6453,57 @@ hmac-drbg@^1.0.1: hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^3.0.6: version "3.0.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== dependencies: lru-cache "^6.0.0" hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" hosted-git-info@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.1.0.tgz#9786123f92ef3627f24abc3f15c20d98ec4a6594" - integrity sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q== + version "5.2.1" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== dependencies: lru-cache "^7.5.1" html-encoding-sniffer@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== +http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -6711,7 +6514,7 @@ http-errors@2.0.0: http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -6720,7 +6523,7 @@ http-proxy-agent@^4.0.1: http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -6729,7 +6532,7 @@ http-proxy-agent@^5.0.0: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -6738,12 +6541,12 @@ http-proxy@^1.18.1: https-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -6751,77 +6554,84 @@ https-proxy-agent@^5.0.0: human-signals@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" husky@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" - integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + version "8.0.3" + resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" identity-obj-proxy@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== ignore-walk@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== dependencies: minimatch "^5.0.1" +ignore-walk@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz#0fcdb6decaccda35e308a7b0948645dd9523b7bb" + integrity sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA== + dependencies: + minimatch "^9.0.0" + ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immediate@~3.0.5: version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -6829,7 +6639,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -6837,22 +6647,22 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -6860,27 +6670,27 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@^1.3.2, ini@^1.3.4: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@^3.0.2: +init-package-json@3.0.2, init-package-json@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== dependencies: npm-package-arg "^9.0.1" @@ -6891,9 +6701,9 @@ init-package-json@^3.0.2: validate-npm-package-license "^3.0.4" validate-npm-package-name "^4.0.0" -inquirer@^8.2.4: +inquirer@8.2.4: version "8.2.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== dependencies: ansi-escapes "^4.2.1" @@ -6912,68 +6722,98 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +inquirer@^8.2.4: + version "8.2.5" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +internal-slot@^1.0.3, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.0" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: binary-extensions "^1.0.0" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -6981,73 +6821,59 @@ is-boolean-object@^1.1.0: is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^3.1.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: builtin-modules "^3.3.0" -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@^2.0.0: +is-ci@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" -is-core-module@^2.11.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== +is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.12.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -7056,7 +6882,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" @@ -7065,131 +6891,136 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: is-extglob "^2.1.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-reference@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -7197,109 +7028,125 @@ is-regex@^1.1.4: is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-ssh@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: protocols "^2.0.1" +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -7309,7 +7156,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -7318,7 +7165,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -7327,25 +7174,34 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jackspeak@^2.0.3: + version "2.2.1" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" + integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.6" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.6.tgz#227a96786a1e035214e0ba84b482d6223d41ef04" + integrity sha512-G43Ub9IYEFfu72sua6rzooi8V8Gz2lkfk48rW20vEWCGizeaEPlKB1Kh8JIA84yQbiAEfqlPmSpGgCKKxH3rDA== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" jest-changed-files@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" + 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" @@ -7353,7 +7209,7 @@ jest-changed-files@^28.1.3: jest-circus@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" @@ -7378,7 +7234,7 @@ jest-circus@^27.5.1: jest-circus@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" + 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" @@ -7403,7 +7259,7 @@ jest-circus@^28.1.3: jest-cli@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== dependencies: "@jest/core" "^28.1.3" @@ -7421,7 +7277,7 @@ jest-cli@^28.1.3: jest-config@27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" @@ -7451,7 +7307,7 @@ jest-config@27.5.1: jest-config@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" + 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" @@ -7479,7 +7335,7 @@ jest-config@^28.1.3: jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -7489,7 +7345,7 @@ jest-diff@^27.5.1: jest-diff@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + 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" @@ -7499,21 +7355,21 @@ jest-diff@^28.1.3: jest-docblock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" jest-docblock@^28.1.1: version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + 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.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" @@ -7524,7 +7380,7 @@ jest-each@^27.5.1: jest-each@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== dependencies: "@jest/types" "^28.1.3" @@ -7535,7 +7391,7 @@ jest-each@^28.1.3: jest-environment-jsdom@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" @@ -7548,7 +7404,7 @@ jest-environment-jsdom@^27.5.1: jest-environment-node@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" @@ -7560,7 +7416,7 @@ jest-environment-node@^27.5.1: jest-environment-node@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" + 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" @@ -7572,17 +7428,17 @@ jest-environment-node@^28.1.3: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + 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.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + 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.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" @@ -7602,7 +7458,7 @@ jest-haste-map@^27.5.1: jest-haste-map@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + 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" @@ -7621,7 +7477,7 @@ jest-haste-map@^28.1.3: jest-jasmine2@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" @@ -7644,7 +7500,7 @@ jest-jasmine2@^27.5.1: jest-leak-detector@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: jest-get-type "^27.5.1" @@ -7652,7 +7508,7 @@ jest-leak-detector@^27.5.1: jest-leak-detector@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" + 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" @@ -7660,7 +7516,7 @@ jest-leak-detector@^28.1.3: jest-matcher-utils@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -7670,7 +7526,7 @@ jest-matcher-utils@^27.5.1: jest-matcher-utils@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + 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" @@ -7680,7 +7536,7 @@ jest-matcher-utils@^28.1.3: jest-message-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" @@ -7695,7 +7551,7 @@ jest-message-util@^27.5.1: jest-message-util@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + 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" @@ -7710,7 +7566,7 @@ jest-message-util@^28.1.3: jest-mock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" @@ -7718,30 +7574,30 @@ jest-mock@^27.5.1: jest-mock@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" + 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.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + 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.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + 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.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" + 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" @@ -7749,7 +7605,7 @@ jest-resolve-dependencies@^28.1.3: jest-resolve@27.5.1, jest-resolve@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" @@ -7765,7 +7621,7 @@ jest-resolve@27.5.1, jest-resolve@^27.5.1: jest-resolve@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" + 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" @@ -7780,7 +7636,7 @@ jest-resolve@^28.1.3: jest-runner@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" @@ -7807,7 +7663,7 @@ jest-runner@^27.5.1: jest-runner@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" + 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" @@ -7834,7 +7690,7 @@ jest-runner@^28.1.3: jest-runtime@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" @@ -7862,7 +7718,7 @@ jest-runtime@^27.5.1: jest-runtime@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" + 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" @@ -7890,7 +7746,7 @@ jest-runtime@^28.1.3: jest-serializer@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" @@ -7898,7 +7754,7 @@ jest-serializer@^27.5.1: jest-snapshot@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" @@ -7926,7 +7782,7 @@ jest-snapshot@^27.5.1: jest-snapshot@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" + 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" @@ -7955,7 +7811,7 @@ jest-snapshot@^28.1.3: jest-util@27.5.1, jest-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" @@ -7967,7 +7823,7 @@ jest-util@27.5.1, jest-util@^27.5.1: jest-util@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: "@jest/types" "^28.1.3" @@ -7979,7 +7835,7 @@ jest-util@^28.1.3: jest-validate@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" @@ -7991,7 +7847,7 @@ jest-validate@^27.5.1: jest-validate@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== dependencies: "@jest/types" "^28.1.3" @@ -8003,7 +7859,7 @@ jest-validate@^28.1.3: jest-watcher@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + 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" @@ -8017,7 +7873,7 @@ jest-watcher@^28.1.3: jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -8026,7 +7882,7 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: jest-worker@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + 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" "*" @@ -8035,7 +7891,7 @@ jest-worker@^28.1.3: jest@^28.1.1, jest@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" + resolved "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== dependencies: "@jest/core" "^28.1.3" @@ -8045,19 +7901,19 @@ jest@^28.1.1, jest@^28.1.3: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -8065,7 +7921,7 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: jsdom@^16.6.0: version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" @@ -8098,69 +7954,74 @@ jsdom@^16.6.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-even-better-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" + integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== + json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-nice@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.1, json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.1, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-parser@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + 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.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -8169,93 +8030,146 @@ jsonfile@^6.0.1: jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: array-includes "^3.1.5" object.assign "^4.1.3" just-diff-apply@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.4.1.tgz#1debed059ad009863b4db0e8d8f333d743cdd83b" - integrity sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g== + version "5.5.0" + resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== -just-diff@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.1.1.tgz#8da6414342a5ed6d02ccd64f5586cbbed3146202" - integrity sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ== +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + 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.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== lerna@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.1.tgz#7b14f05d1e17dc628478d33f225a579a6088d317" - integrity sha512-aNodtj1jyuEqzYmkYh+vTfRuzLkG3RZkvYxFCuLeXXzIYD5pjMHtf+1q4m03SPsZt+cElhhwkgjdg6GjihraBw== - dependencies: - "@lerna/add" "6.0.1" - "@lerna/bootstrap" "6.0.1" - "@lerna/changed" "6.0.1" - "@lerna/clean" "6.0.1" - "@lerna/cli" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/create" "6.0.1" - "@lerna/diff" "6.0.1" - "@lerna/exec" "6.0.1" - "@lerna/import" "6.0.1" - "@lerna/info" "6.0.1" - "@lerna/init" "6.0.1" - "@lerna/link" "6.0.1" - "@lerna/list" "6.0.1" - "@lerna/publish" "6.0.1" - "@lerna/run" "6.0.1" - "@lerna/version" "6.0.1" - "@nrwl/devkit" ">=14.8.6 < 16" + version "6.6.2" + resolved "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" + integrity sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg== + dependencies: + "@lerna/child-process" "6.6.2" + "@lerna/create" "6.6.2" + "@lerna/legacy-package-management" "6.6.2" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-angular "5.0.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + envinfo "^7.7.4" + execa "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" import-local "^3.0.2" + init-package-json "3.0.2" inquirer "^8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + js-yaml "^4.1.0" + libnpmaccess "^6.0.3" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.3" npmlog "^6.0.2" - nx ">=14.8.6 < 16" + nx ">=15.5.2 < 16" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" typescript "^3 || ^4" + upath "^2.0.1" + uuid "8.3.2" + validate-npm-package-license "3.0.4" + validate-npm-package-name "4.0.0" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + yargs-parser "20.2.4" leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -8263,7 +8177,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" @@ -8271,7 +8185,7 @@ levn@~0.3.0: libnpmaccess@^6.0.3: version "6.0.4" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== dependencies: aproba "^2.0.0" @@ -8279,42 +8193,40 @@ libnpmaccess@^6.0.3: npm-package-arg "^9.0.1" npm-registry-fetch "^13.0.0" -libnpmpublish@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" - integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== - dependencies: - normalize-package-data "^4.0.0" - npm-package-arg "^9.0.1" - npm-registry-fetch "^13.0.0" +libnpmpublish@7.1.4: + version "7.1.4" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz#a0d138e00e52a0c71ffc82273acf0082fc2dfb36" + integrity sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg== + dependencies: + ci-info "^3.6.1" + normalize-package-data "^5.0.0" + npm-package-arg "^10.1.0" + npm-registry-fetch "^14.0.3" + proc-log "^3.0.0" semver "^7.3.7" - ssri "^9.0.0" + sigstore "^1.4.0" + ssri "^10.0.1" lie@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== dependencies: immediate "~3.0.5" lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" +lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== -load-json-file@^6.2.0: +load-json-file@6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== dependencies: graceful-fs "^4.1.15" @@ -8322,20 +8234,30 @@ load-json-file@^6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -8343,14 +8265,14 @@ loader-utils@^1.2.3: localforage@^1.8.1: version "1.10.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" + resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== dependencies: lie "3.1.1" locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" @@ -8358,7 +8280,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -8366,41 +8288,41 @@ locate-path@^3.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.ismatch@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -8408,77 +8330,77 @@ log-symbols@^4.1.0: loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -lru-cache@^7.14.1: +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.14.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" - integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== +lru-cache@^9.1.1: + version "9.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" + integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== lru_map@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== magic-string@0.27.0: version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" +make-dir@3.1.0, make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" @@ -8498,38 +8420,59 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: socks-proxy-agent "^7.0.0" ssri "^9.0.0" +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.0: + version "11.1.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -8538,12 +8481,12 @@ md5.js@^1.3.4: media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memory-fs@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== dependencies: errno "^0.1.3" @@ -8551,7 +8494,7 @@ memory-fs@^0.4.1: memory-fs@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: errno "^0.1.3" @@ -8559,12 +8502,12 @@ memory-fs@^0.5.0: memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== meow@^8.0.0: version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: "@types/minimist" "^1.2.0" @@ -8581,27 +8524,27 @@ meow@^8.0.0: merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -8620,7 +8563,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -8628,7 +8571,7 @@ micromatch@^4.0.4: miller-rabin@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" @@ -8636,98 +8579,114 @@ miller-rabin@^4.0.0: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== minimatch@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^6.1.6: + version "6.2.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== dependencies: brace-expansion "^2.0.1" minimatch@^7.4.1: - version "7.4.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.3.tgz#012cbf110a65134bb354ae9773b55256cdb045a2" - integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== + version "7.4.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" + integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== dependencies: brace-expansion "^2.0.1" minimist-options@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^2.0.3: version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: minipass "^3.1.6" @@ -8736,16 +8695,27 @@ minipass-fetch@^2.0.3: optionalDependencies: encoding "^0.1.13" +minipass-fetch@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" + integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== + dependencies: + minipass "^5.0.0" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: jsonparse "^1.3.1" @@ -8753,33 +8723,43 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minipass@^4.0.2, minipass@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" - integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== +minipass@^4.0.0, minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2": + version "6.0.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" + integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -8787,7 +8767,7 @@ minizlib@^2.1.1, minizlib@^2.1.2: mississippi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" @@ -8803,7 +8783,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" @@ -8811,7 +8791,7 @@ mixin-deep@^1.2.0: mkdirp-infer-owner@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== dependencies: chownr "^2.0.0" @@ -8820,24 +8800,24 @@ mkdirp-infer-owner@^2.0.0: mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== move-concurrently@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: aproba "^1.1.1" @@ -8849,28 +8829,28 @@ move-concurrently@^1.0.1: mri@^1.1.5: version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.0.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== +multimatch@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" array-differ "^3.0.0" @@ -8878,10 +8858,10 @@ multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== dependencies: "@types/minimatch" "^3.0.3" array-differ "^3.0.0" @@ -8891,22 +8871,22 @@ multimatch@^5.0.0: mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" - integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== nanomatch@^1.2.9: version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -8921,47 +8901,59 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-addon-api@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7: version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.7: + version "2.6.11" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== node-gyp@^9.0.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.0.tgz#f8eefe77f0ad8edb3b3b898409b53e697642b319" - integrity sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q== + version "9.3.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" + integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== dependencies: env-paths "^2.2.0" glob "^7.1.4" @@ -8976,12 +8968,12 @@ node-gyp@^9.0.0: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-libs-browser@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" @@ -9008,28 +9000,28 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" +node-releases@^2.0.8: + version "2.0.11" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.11.tgz#59d7cef999d13f908e43b5a70001cf3129542f0f" + integrity sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q== nopt@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" +nopt@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz#91f6a3366182176e72ecab93a09c19b63b485f28" + integrity sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q== + dependencies: + abbrev "^2.0.0" + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -9039,7 +9031,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: normalize-package-data@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" @@ -9049,7 +9041,7 @@ normalize-package-data@^3.0.0: normalize-package-data@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== dependencies: hosted-git-info "^5.0.0" @@ -9057,61 +9049,86 @@ normalize-package-data@^4.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.1.1: +npm-bundled@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" -npm-bundled@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" - integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== +npm-bundled@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" + integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== dependencies: - npm-normalize-package-bin "^2.0.0" + npm-normalize-package-bin "^3.0.0" -npm-install-checks@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" - integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== +npm-install-checks@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" + integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== dependencies: semver "^7.1.1" npm-normalize-package-bin@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-normalize-package-bin@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== +npm-normalize-package-bin@^3.0.0, npm-normalize-package-bin@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + npm-package-arg@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== dependencies: hosted-git-info "^3.0.6" semver "^7.0.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: +npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^9.0.1: version "9.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== dependencies: hosted-git-info "^5.0.0" @@ -9119,29 +9136,49 @@ npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: semver "^7.3.5" validate-npm-package-name "^4.0.0" -npm-packlist@^5.1.0, npm-packlist@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" - integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== +npm-packlist@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" + integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== dependencies: glob "^8.0.1" ignore-walk "^5.0.1" - npm-bundled "^2.0.0" - npm-normalize-package-bin "^2.0.0" + npm-bundled "^1.1.2" + npm-normalize-package-bin "^1.0.1" + +npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" -npm-pick-manifest@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" - integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== +npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" + integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== dependencies: - npm-install-checks "^5.0.0" - npm-normalize-package-bin "^2.0.0" - npm-package-arg "^9.0.0" + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" semver "^7.3.5" -npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: +npm-registry-fetch@14.0.3: + version "14.0.3" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" + integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-registry-fetch@^13.0.0: version "13.3.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== dependencies: make-fetch-happen "^10.0.6" @@ -9152,9 +9189,22 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3 npm-package-arg "^9.0.1" proc-log "^2.0.0" +npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: + version "14.0.5" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + npm-run-all@^4.1.5: version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: ansi-styles "^3.2.1" @@ -9169,14 +9219,14 @@ npm-run-all@^4.1.5: npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -npmlog@^6.0.0, npmlog@^6.0.2: +npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -9184,14 +9234,24 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== + dependencies: + are-we-there-yet "^4.0.0" + console-control-strings "^1.1.0" + gauge "^5.0.0" + set-blocking "^2.0.0" + nwsapi@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" - integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== + version "2.2.4" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" + integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== nx@14.5.10: version "14.5.10" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" + resolved "https://registry.npmjs.org/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" integrity sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg== dependencies: "@nrwl/cli" "14.5.10" @@ -9225,20 +9285,19 @@ nx@14.5.10: yargs "^17.4.0" yargs-parser "21.0.1" -nx@15.0.0, "nx@>=14.8.6 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" - integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== +nx@15.9.4, "nx@>=15.5.2 < 16": + version "15.9.4" + resolved "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz#1075bc33fe8ee6c6546c21ec6ffcfd2e000946c6" + integrity sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA== dependencies: - "@nrwl/cli" "15.0.0" - "@nrwl/tao" "15.0.0" + "@nrwl/cli" "15.9.4" + "@nrwl/tao" "15.9.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" "@zkochan/js-yaml" "0.0.6" axios "^1.0.0" - chalk "4.1.0" - chokidar "^3.5.1" + chalk "^4.1.0" cli-cursor "3.1.0" cli-spinners "2.6.1" cliui "^7.0.2" @@ -9247,11 +9306,12 @@ nx@15.0.0, "nx@>=14.8.6 < 16": fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" - fs-extra "^10.1.0" + fs-extra "^11.1.0" glob "7.1.4" ignore "^5.0.4" js-yaml "4.1.0" jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" @@ -9260,46 +9320,56 @@ nx@15.0.0, "nx@>=14.8.6 < 16": strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" - tsconfig-paths "^3.9.0" + tsconfig-paths "^4.1.2" tslib "^2.3.0" v8-compile-cache "2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.9.4" + "@nrwl/nx-darwin-x64" "15.9.4" + "@nrwl/nx-linux-arm-gnueabihf" "15.9.4" + "@nrwl/nx-linux-arm64-gnu" "15.9.4" + "@nrwl/nx-linux-arm64-musl" "15.9.4" + "@nrwl/nx-linux-x64-gnu" "15.9.4" + "@nrwl/nx-linux-x64-musl" "15.9.4" + "@nrwl/nx-win32-arm64-msvc" "15.9.4" + "@nrwl/nx-win32-x64-msvc" "15.9.4" object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3: +object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -9307,73 +9377,73 @@ object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -9381,7 +9451,7 @@ open@^8.4.0: optionator@^0.8.1: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -9393,7 +9463,7 @@ optionator@^0.8.1: optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -9405,7 +9475,7 @@ optionator@^0.9.1: ora@^5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -9420,157 +9490,178 @@ ora@^5.4.1: os-browserify@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" -p-map-series@^2.1.0: +p-map-series@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^4.0.0: +p-map@4.0.0, p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@^3.1.0: +p-pipe@3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== -p-queue@^6.6.2: +p-queue@6.6.2: version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-reduce@^2.0.0, p-reduce@^2.1.0: +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-timeout@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^2.1.1: +p-waterfall@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== - dependencies: - p-reduce "^2.0.0" - -pacote@^13.0.3, pacote@^13.6.1: - version "13.6.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" - integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== - dependencies: - "@npmcli/git" "^3.0.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/promise-spawn" "^3.0.0" - "@npmcli/run-script" "^4.1.0" - cacache "^16.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.6" - mkdirp "^1.0.4" - npm-package-arg "^9.0.0" - npm-packlist "^5.1.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.1" - proc-log "^2.0.0" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + +pacote@15.1.1: + version "15.1.1" + resolved "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" + integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^4.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" promise-retry "^2.0.1" - read-package-json "^5.0.0" - read-package-json-fast "^2.0.3" - rimraf "^3.0.2" - ssri "^9.0.0" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + +pacote@^15.0.0, pacote@^15.0.8: + version "15.2.0" + resolved "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" + integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^5.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.3.0" + ssri "^10.0.0" tar "^6.1.11" pako@~1.0.5: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: cyclist "^1.0.1" @@ -9579,14 +9670,14 @@ parallel-transform@^1.1.0: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: asn1.js "^5.2.0" @@ -9595,18 +9686,18 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-conflict-json@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" - integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== dependencies: - json-parse-even-better-errors "^2.3.1" - just-diff "^5.0.1" + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" just-diff-apply "^5.2.0" parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" @@ -9614,7 +9705,7 @@ parse-json@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -9624,101 +9715,101 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse-path@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: protocols "^2.0.0" parse-url@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: parse-path "^7.0.0" parse5@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== path-browserify@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.6.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.3.tgz#4eba7183d64ef88b63c7d330bddc3ba279dc6c40" - integrity sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g== +path-scurry@^1.6.1, path-scurry@^1.7.0: + version "1.9.2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" + integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== dependencies: - lru-cache "^7.14.1" - minipass "^4.0.2" + lru-cache "^9.1.1" + minipass "^5.0.0 || ^6.0.2" path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -9729,90 +9820,107 @@ pbkdf2@^3.0.3: picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== +pify@5.0.0, pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - pirates@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" posix-character-classes@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +postcss-selector-parser@^6.0.10: + version "6.0.13" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss@^8.4.14: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + version "8.4.23" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-format@29.4.3: + version "29.4.3" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -9821,7 +9929,7 @@ pretty-format@^27.5.1: pretty-format@^28.0.0, pretty-format@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + 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" @@ -9831,7 +9939,7 @@ pretty-format@^28.0.0, pretty-format@^28.1.3: pretty-quick@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" + resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" integrity sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA== dependencies: chalk "^3.0.0" @@ -9843,42 +9951,47 @@ pretty-quick@^3.1.3: proc-log@^2.0.0, proc-log@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-all-reject-late@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== promise-call-limit@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24" - integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== + version "1.0.2" + resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" + integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -9886,7 +9999,7 @@ promise-retry@^2.0.1: prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -9894,14 +10007,14 @@ prompts@^2.0.1: promzard@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== dependencies: read "1" prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -9910,17 +10023,17 @@ prop-types@^15.8.1: proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -9928,22 +10041,22 @@ proxy-addr@~2.0.7: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== prr@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" @@ -9955,7 +10068,7 @@ public-encrypt@^4.0.0: pump@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" @@ -9963,7 +10076,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -9971,7 +10084,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" @@ -9980,66 +10093,66 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^1.2.4: version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== q@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" querystring-es3@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== querystring@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" @@ -10047,12 +10160,12 @@ randomfill@^1.0.3: range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -10062,35 +10175,58 @@ raw-body@2.5.1: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-is@^18.0.0: version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -read-cmd-shim@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" - integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== +read-cmd-shim@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" + integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== + +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: +read-package-json-fast@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@^5.0.0, read-package-json@^5.0.1: +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-package-json@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" + integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== dependencies: glob "^8.0.1" @@ -10098,9 +10234,19 @@ read-package-json@^5.0.0, read-package-json@^5.0.1: normalize-package-data "^4.0.0" npm-normalize-package-bin "^2.0.0" +read-package-json@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz#726116b75e00eac2075240995f05681af4ca7122" + integrity sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ== + dependencies: + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: find-up "^2.0.0" @@ -10108,7 +10254,7 @@ read-pkg-up@^3.0.0: read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -10117,7 +10263,7 @@ read-pkg-up@^7.0.1: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" @@ -10126,7 +10272,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -10136,15 +10282,15 @@ read-pkg@^5.2.0: read@1, read@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -10155,27 +10301,27 @@ read@1, read@^1.0.7: util-deprecate "~1.0.1" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== +readable-stream@^4.1.0: + version "4.4.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" + integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" readdirp@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" @@ -10184,162 +10330,148 @@ readdirp@^2.2.1: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +regexp.prototype.flags@^1.4.3: + version "1.5.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + define-properties "^1.2.0" + functions-have-names "^1.2.3" -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + unicode-match-property-value-ecmascript "^2.1.0" -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve.exports@1.1.0, resolve.exports@^1.1.0: +resolve.exports@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve@^1.19.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: +resolve@^2.0.0-next.4: version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: is-core-module "^2.9.0" @@ -10348,7 +10480,7 @@ resolve@^2.0.0-next.3: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -10356,36 +10488,43 @@ restore-cursor@^3.1.0: ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" @@ -10393,97 +10532,106 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rollup@2.75.7: version "2.75.7" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== optionalDependencies: fsevents "~2.3.2" rollup@2.77.0: version "2.77.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== optionalDependencies: fsevents "~2.3.2" rollup@3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.0.tgz#a6f44074418e55217967c8eca622f9638d396388" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.2.0.tgz#a6f44074418e55217967c8eca622f9638d396388" integrity sha512-0ZkFPyBNvx717KvC700NoxUD31aEEX675u6INJVAmBgKtQuCL8jmmJCj1b9B/qDSnILAvASVKa7UpGS+FLN6AQ== optionalDependencies: fsevents "~2.3.2" rollup@^2.75.6: - version "2.78.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" - integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== + version "2.79.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: aproba "^1.1.1" rxjs@^6.5.4: version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" rxjs@^7.5.5: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== saxes@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" schema-utils@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" @@ -10491,9 +10639,9 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + version "3.1.2" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" + integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" @@ -10501,43 +10649,38 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@7.3.4: version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.0.0, semver@^7.1.1, semver@^7.3.4: +semver@7.3.8: version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.5.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -10556,21 +10699,21 @@ send@0.18.0: serialize-javascript@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -10580,12 +10723,12 @@ serve-static@1.15.0: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" @@ -10595,17 +10738,17 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -10613,72 +10756,86 @@ sha.js@^2.4.0, sha.js@^2.4.8: shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +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.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" + integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + +sigstore@^1.0.0, sigstore@^1.3.0, sigstore@^1.4.0: + version "1.5.2" + resolved "https://registry.npmjs.org/sigstore/-/sigstore-1.5.2.tgz#8d4c2a549341211cb08c687999843edc48c1a94c" + integrity sha512-X95v6xAAooVpn7PaB94TDmFeSO5SBfCtB1R23fvzr36WTfjtkiiyOeei979nbTjc8nzh6FSLeltQZuODsm1EjQ== + dependencies: + "@sigstore/protobuf-specs" "^0.1.0" + make-fetch-happen "^11.0.1" + tuf-js "^1.1.3" + sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^3.0.0: +slash@3.0.0, slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -10687,14 +10844,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -10708,7 +10865,7 @@ snapdragon@^0.8.1: socks-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" @@ -10717,7 +10874,7 @@ socks-proxy-agent@^7.0.0: socks@^2.6.2: version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" @@ -10725,31 +10882,24 @@ socks@^2.6.2: sort-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== dependencies: is-plain-obj "^1.0.0" -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - source-list-map@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-resolve@^0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" @@ -10760,7 +10910,7 @@ source-map-resolve@^0.5.0: source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + 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" @@ -10768,7 +10918,7 @@ source-map-support@0.5.13: 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.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -10776,105 +10926,112 @@ source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.2 source-map-url@^0.4.0: version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@^0.5.6: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.13" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split2@^3.0.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" split@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +ssri@9.0.1, ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +ssri@^10.0.0, ssri@^10.0.1: + version "10.0.4" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" + integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== + dependencies: + minipass "^5.0.0" + ssri@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" -ssri@^9.0.0, ssri@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" @@ -10882,12 +11039,12 @@ static-extend@^0.1.1: statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== stream-browserify@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" @@ -10895,7 +11052,7 @@ stream-browserify@^2.0.1: stream-each@^1.1.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" @@ -10903,7 +11060,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" @@ -10914,118 +11071,143 @@ stream-http@^2.7.2: stream-shift@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strong-log-transformer@^2.1.0: +strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: duplexer "^0.1.1" @@ -11034,56 +11216,56 @@ strong-log-transformer@^2.1.0: supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-stream@~2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" @@ -11092,9 +11274,9 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: +tar@6.1.11: version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: chownr "^2.0.0" @@ -11104,14 +11286,42 @@ tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^1.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" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + 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" + +temp-dir@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" + integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + terminal-link@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" @@ -11119,7 +11329,7 @@ terminal-link@^2.0.0: terser-webpack-plugin@^1.4.3: version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" @@ -11133,29 +11343,29 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@^5.1.3: - version "5.3.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc" - integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA== + 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== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" terser@^4.1.2: version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.14.1: - version "5.14.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" - integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== +terser@^5.16.8: + version "5.17.5" + resolved "https://registry.npmjs.org/terser/-/terser-5.17.5.tgz#557141b662b5978ac3d6a2f3d6455a26267ddcd4" + integrity sha512-NqFkzBX34WExkCbk3K5urmNCpEWqMPZnwGI1pMHwqvJ/zDlXC75u3NI7BrzoR8/pryy8Abx2e1i8ChrWkhH1Hg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -11164,7 +11374,7 @@ terser@^5.14.1: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -11173,22 +11383,22 @@ test-exclude@^6.0.0: text-extensions@^1.0.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + version "6.0.2" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== through2@^2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" @@ -11196,62 +11406,62 @@ through2@^2.0.0: through2@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== timers-browserify@^2.0.4: version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmp@~0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-arraybuffer@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" @@ -11259,14 +11469,14 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -11276,13 +11486,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.1.tgz#3600960f1e1c83545f130ac80043b9de8e5d488b" - integrity sha512-Ns3k8QxkEzIfLZbRwLOrMPDqRa1BEAl4BzNNAOYY4BhBmEkf+HvP467F4NrD9loK3NcYflWOpUH3LJg0ehq/rQ== + version "4.1.2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -11291,29 +11501,29 @@ tough-cookie@^4.0.0: tr46@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -treeverse@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" - integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== ts-node@^10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -11331,124 +11541,151 @@ ts-node@^10.9.1: yn "3.1.1" tsconfig-paths@^3.9.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + version "3.14.2" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + version "2.5.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tty-browserify@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== +tuf-js@^1.1.3: + version "1.1.6" + resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.6.tgz#ad3e7a20237b83b51c2a8f9d1ddf093279a10fc2" + integrity sha512-CXwFVIsXGbVY4vFiWF7TJKWmlKJAT8TWkH4RmiohJRcDJInix++F0dznDmoVbtJNzZ8yLprKUG4YrDIhv3nBMg== + dependencies: + "@tufjs/models" "1.0.4" + debug "^4.3.4" + make-fetch-happen "^11.1.0" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -"typescript@^3 || ^4": - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +"typescript@^3 || ^4", typescript@^4.7.4: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uglify-js@^3.1.4: - version "3.17.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.3.tgz#f0feedf019c4510f164099e8d7e72ff2d7304377" - integrity sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg== + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -11458,30 +11695,30 @@ unbox-primitive@^1.0.2: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== union-value@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" @@ -11491,55 +11728,76 @@ union-value@^1.0.0: unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-filename@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: unique-slug "^3.0.0" +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" unique-slug@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== dependencies: imurmurhash "^0.1.4" +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unplugin@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" + resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA== dependencies: acorn "^8.8.1" @@ -11549,45 +11807,45 @@ unplugin@1.0.1: unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" +upath@2.0.1, upath@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + upath@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upath@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: escalade "^3.1.1" picocolors "^1.0.0" uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -11595,7 +11853,7 @@ url-parse@^1.5.3: url@^0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: punycode "1.3.2" @@ -11603,56 +11861,56 @@ url@^0.11.0: use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@0.10.3: version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== dependencies: inherits "2.0.1" util@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: +uuid@8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: +v8-compile-cache@2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" @@ -11660,44 +11918,51 @@ v8-to-istanbul@^8.1.0: source-map "^0.7.3" v8-to-istanbul@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" - integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + 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.1, validate-npm-package-license@^3.0.4: +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.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" -validate-npm-package-name@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" - integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== +validate-npm-package-name@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== dependencies: builtins "^5.0.0" vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vite@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" + resolved "https://registry.npmjs.org/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" integrity sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA== dependencies: esbuild "^0.14.47" @@ -11709,45 +11974,45 @@ vite@3.0.0: vm-browserify@^1.0.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== w3c-hr-time@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walk-up-path@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + 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: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" watchpack-chokidar2@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" watchpack@^1.7.4: version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" @@ -11758,7 +12023,7 @@ watchpack@^1.7.4: watchpack@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" @@ -11766,29 +12031,29 @@ watchpack@^2.4.0: wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== "webpack-4@npm:webpack@^4", "webpack4@npm:webpack@4.46.0": version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -11817,7 +12082,7 @@ webidl-conversions@^6.1.0: webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" @@ -11825,17 +12090,17 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack-virtual-modules@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== webpack@5.74.0: version "5.74.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== dependencies: "@types/eslint-scope" "^3.7.3" @@ -11865,19 +12130,19 @@ webpack@5.74.0: whatwg-encoding@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-mimetype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -11885,7 +12150,7 @@ whatwg-url@^5.0.0: whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: lodash "^4.7.0" @@ -11894,7 +12159,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -11903,61 +12168,97 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +which@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== worker-farm@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write-file-atomic@^2.4.2: version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" @@ -11966,7 +12267,7 @@ write-file-atomic@^2.4.2: write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -11974,17 +12275,25 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: +write-file-atomic@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + 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" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + write-json-file@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== dependencies: detect-indent "^5.0.0" @@ -11994,21 +12303,9 @@ write-json-file@^3.2.0: sort-keys "^2.0.0" write-file-atomic "^2.4.2" -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: +write-pkg@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== dependencies: sort-keys "^2.0.0" @@ -12017,72 +12314,72 @@ write-pkg@^4.0.0: ws@^7.4.6: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@21.0.1: version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: +yargs@16.2.0, yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -12093,25 +12390,25 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.4.0: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== +yargs@^17.3.1, 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== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 7bdc9af42b7814df5da246c619de5e0379832de2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 12:36:59 +0200 Subject: [PATCH 202/640] ci: Use dependency cache (#259) --- .github/workflows/checks.yml | 74 +++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index eda9741377f3..b0d3719b1a19 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -16,7 +16,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn build type-check: @@ -28,7 +36,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn check:types formatting-check: @@ -39,7 +55,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn check:formatting test-unit: @@ -51,7 +75,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn test:unit test-integration: @@ -76,8 +108,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - # husky uses fs-extra which needs node >= 14 - we can ignore because its a dev dependency - - run: yarn --frozen-lockfile --ignore-engines + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn test:integration test-e2e: @@ -95,7 +134,15 @@ jobs: steps: - uses: actions/checkout@v3 - uses: volta-cli/action@v3 - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn test:e2e lint: @@ -107,7 +154,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Use dependency cache + uses: actions/cache@v3 + id: cache + with: + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.cache.outputs.cache-hit != 'true' - run: yarn lint artifacts: @@ -121,7 +176,8 @@ jobs: - uses: actions/setup-node@v3 with: node-version-file: "package.json" - - run: yarn --frozen-lockfile + - name: Install dependencies + run: yarn --frozen-lockfile - name: pack run: yarn build:npm - name: archive artifacts From 8a355581135eb50dbaa3701e98410768b17b213d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 15:21:29 +0200 Subject: [PATCH 203/640] ci: Use Nx cache (#262) --- .github/workflows/checks.yml | 77 +++++++++++++++++++++++++++++------- .gitignore | 4 +- .prettierignore | 3 +- lerna.json | 2 +- nx.json | 25 +++++++----- package.json | 2 +- yarn.lock | 2 +- 7 files changed, 87 insertions(+), 28 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index b0d3719b1a19..7feff5719c59 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -18,13 +18,20 @@ jobs: node-version-file: "package.json" - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn build type-check: @@ -38,13 +45,20 @@ jobs: node-version-file: "package.json" - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn check:types formatting-check: @@ -57,13 +71,20 @@ jobs: node-version-file: "package.json" - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn check:formatting test-unit: @@ -77,13 +98,20 @@ jobs: node-version-file: "package.json" - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn test:unit test-integration: @@ -110,13 +138,20 @@ jobs: node-version: ${{ matrix.node-version }} - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn test:integration test-e2e: @@ -136,13 +171,20 @@ jobs: - uses: volta-cli/action@v3 - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn test:e2e lint: @@ -156,13 +198,20 @@ jobs: node-version-file: "package.json" - name: Use dependency cache uses: actions/cache@v3 - id: cache + id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - name: Use build cache + uses: actions/cache@v3 + with: + path: .nxcache + key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + build-cache-key-${{ runner.os }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines - if: steps.cache.outputs.cache-hit != 'true' + if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn lint artifacts: diff --git a/.gitignore b/.gitignore index cdf43c383107..e462f7bc3c7a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ yarn-error.log .vscode/settings.json -*.tgz \ No newline at end of file +*.tgz + +.nxcache diff --git a/.prettierignore b/.prettierignore index a409bc299bed..9c714247645a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ packages/e2e-tests/scenarios/*/ref/**/* -packages/bundler-plugin-core/test/fixtures \ No newline at end of file +packages/bundler-plugin-core/test/fixtures +.nxcache diff --git a/lerna.json b/lerna.json index 6280f7dc2701..f9e81b623e57 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { + "$schema": "node_modules/lerna/schemas/lerna-schema.json", "version": "2.0.0", - "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true } diff --git a/nx.json b/nx.json index a8d43f5c31f6..a69e473cb755 100644 --- a/nx.json +++ b/nx.json @@ -1,30 +1,37 @@ { - "extends": "nx/presets/npm.json", "$schema": "./node_modules/nx/schemas/nx-schema.json", - "affected": { - "defaultBase": "main" - }, "tasksRunnerOptions": { "default": { "runner": "nx/tasks-runners/default", "options": { "cacheableOperations": ["build", "lint", "test"], - "parallel": 10 + "cacheDirectory": ".nxcache" } } }, + "namedInputs": { + "sharedGlobals": ["{workspaceRoot}/*.js", "{workspaceRoot}/*.json", "{workspaceRoot}/yarn.lock"] + }, "targetDefaults": { "build": { - "dependsOn": ["^build"] + "inputs": ["sharedGlobals"], + "dependsOn": ["^build"], + "outputs": ["{projectRoot}/dist"] }, "lint": { - "dependsOn": ["^build", "build"] + "inputs": ["sharedGlobals"], + "dependsOn": ["^build", "build"], + "outputs": [] }, "test": { - "dependsOn": ["^build"] + "inputs": ["sharedGlobals"], + "dependsOn": ["^build"], + "outputs": [] }, "check:types": { - "dependsOn": ["^build"] + "inputs": ["sharedGlobals"], + "dependsOn": ["^build"], + "outputs": [] }, "build:npm": { "dependsOn": ["build", "^build"] diff --git a/package.json b/package.json index 168f7ceb7427..94401948f721 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@nrwl/cli": "14.5.10", "@nrwl/workspace": "14.5.10", "husky": "^8.0.0", - "lerna": "^6.0.1", + "lerna": "^6.6.2", "nx": "14.5.10", "prettier": "^2.7.1", "pretty-quick": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index 60c2012e5061..7844cd4431cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8080,7 +8080,7 @@ kleur@^3.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lerna@^6.0.1: +lerna@^6.6.2: version "6.6.2" resolved "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" integrity sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg== From 4360395000b294888b908fad0a0077911b1adbc1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 15:21:38 +0200 Subject: [PATCH 204/640] docs: Add removal of `configFile` option to migration guide (#266) --- MIGRATION.md | 1 + 1 file changed, 1 insertion(+) diff --git a/MIGRATION.md b/MIGRATION.md index 4bffab0f351a..294c6cafcc5d 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -10,6 +10,7 @@ This document serves as a migration guide, documenting all breaking changes betw - `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. - Removed `customHeader` option in favor of `headers` option which allows for multiple headers to be attached to outgoing requests. - The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` +- Removed the `configFile` option. Options should now be set explicitly or via environment variables. ## Upgrading from 1.x to 2.x (Webpack Plugin Only) From e3fc9eeb78865f25905fe07f5c962ddcc17bdf51 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 16:37:28 +0200 Subject: [PATCH 205/640] fix: Don't show log message if telemetry is disabled (#267) --- packages/bundler-plugin-core/src/plugins/telemetry.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts index bd0403395a28..22d414071aa7 100644 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -18,10 +18,12 @@ export function telemetryPlugin({ return { name: "sentry-telemetry-plugin", buildStart() { - void shouldSendTelemetry.then(() => { - logger.info( - "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." - ); + void shouldSendTelemetry.then((willSendTelemetry) => { + if (willSendTelemetry) { + logger.info( + "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." + ); + } }); pluginExecutionTransaction.startTimestamp = Date.now() / 1000; }, From aaadca7e0e230c4923227a2da94dc0d7a5e73c6a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 16:53:24 +0200 Subject: [PATCH 206/640] ci: Different build caches for matrix --- .github/workflows/checks.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 7feff5719c59..fc1991fb950a 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -179,9 +179,9 @@ jobs: uses: actions/cache@v3 with: path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} + key: build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}-${{ github.run_id }} restore-keys: | - build-cache-key-${{ runner.os }}- + build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}- - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' From decb591a6a46823ec9fc93d66fec6577b23b512b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 23 May 2023 16:53:42 +0200 Subject: [PATCH 207/640] fix(esbuild): Use absolute path for virtual file resolving (#269) --- packages/esbuild-plugin/src/index.ts | 66 +++++++------ packages/playground/package.json | 2 +- yarn.lock | 138 +++++++++++++++++++++++++++ 3 files changed, 175 insertions(+), 31 deletions(-) diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 7ecb0f330253..26dffb670dd4 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,32 +1,36 @@ import { sentryUnpluginFactory, Options, getDebugIdSnippet } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; +import * as path from "path"; import { v4 as uuidv4 } from "uuid"; function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { const pluginName = "sentry-esbuild-release-injection-plugin"; - const virtualReleaseInjectionFilePath = "_sentry-release-injection-file"; + const virtualReleaseInjectionFilePath = path.resolve("_sentry-release-injection-stub"); // needs to be an absolute path for older eslint versions return { name: pluginName, esbuild: { - setup({ initialOptions, onLoad }) { + setup({ initialOptions, onLoad, onResolve }) { initialOptions.inject = initialOptions.inject || []; initialOptions.inject.push(virtualReleaseInjectionFilePath); - onLoad( - { - filter: /_sentry-release-injection-file$/, - }, - () => { - return { - loader: "js", - pluginName, - contents: injectionCode, - }; - } - ); + onResolve({ filter: /_sentry-release-injection-stub/ }, (args) => { + return { + path: args.path, + sideEffects: true, + pluginName, + }; + }); + + onLoad({ filter: /_sentry-release-injection-stub/ }, () => { + return { + loader: "js", + pluginName, + contents: injectionCode, + }; + }); }, }, }; @@ -34,30 +38,32 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { function esbuildDebugIdInjectionPlugin(): UnpluginOptions { const pluginName = "sentry-esbuild-debug-id-injection-plugin"; - const virtualReleaseInjectionFilePath = "_sentry-debug-id-injection-file"; - - const debugIdSnippet = getDebugIdSnippet(uuidv4()); + const virtualReleaseInjectionFilePath = path.resolve("_sentry-debug-id-injection-stub"); // needs to be an absolute path for older eslint versions return { name: pluginName, esbuild: { - setup({ initialOptions, onLoad }) { + setup({ initialOptions, onLoad, onResolve }) { initialOptions.inject = initialOptions.inject || []; initialOptions.inject.push(virtualReleaseInjectionFilePath); - onLoad( - { - filter: /_sentry-debug-id-injection-file$/, - }, - () => { - return { - loader: "js", - pluginName, - contents: debugIdSnippet, - }; - } - ); + onResolve({ filter: /_sentry-debug-id-injection-stub/ }, (args) => { + return { + path: args.path, + sideEffects: true, + pluginName, + suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved + }; + }); + + onLoad({ filter: /_sentry-debug-id-injection-stub/ }, () => { + return { + loader: "js", + pluginName, + contents: getDebugIdSnippet(uuidv4()), + }; + }); }, }, }; diff --git a/packages/playground/package.json b/packages/playground/package.json index 3e8d4e4033c1..9d241261681c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -23,7 +23,7 @@ "@sentry/node": "7.50", "@types/express": "^4.17.13", "@types/http-proxy": "^1.17.9", - "esbuild": "0.14.49", + "esbuild": "0.17.19", "express": "^4.18.1", "http-proxy": "^1.18.1", "rollup": "3.2.0", diff --git a/yarn.lock b/yarn.lock index 7844cd4431cf..d5770ba0ab17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -977,11 +977,121 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@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" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + +"@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" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + +"@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" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + +"@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" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== + +"@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" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + +"@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" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + +"@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" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + +"@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" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + +"@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" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + +"@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" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + "@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" integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + +"@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" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + +"@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" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + +"@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" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + +"@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" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + +"@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" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + +"@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" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + +"@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" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + +"@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" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + +"@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" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + +"@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" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + +"@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" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== + "@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" @@ -5251,6 +5361,34 @@ esbuild@0.14.49: esbuild-windows-64 "0.14.49" esbuild-windows-arm64 "0.14.49" +esbuild@0.17.19: + version "0.17.19" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== + optionalDependencies: + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" + esbuild@^0.14.47: version "0.14.54" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" From 707c8c9b9cdbdb1a8efe852936883381d8ac1c93 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 May 2023 11:06:36 +0200 Subject: [PATCH 208/640] feat: Auto detect build artifacts (#257) Co-authored-by: Lukas Stracke --- .../src/{plugins => }/debug-id-upload.ts | 114 ++++++++++-------- packages/bundler-plugin-core/src/index.ts | 79 +++++++----- packages/bundler-plugin-core/src/types.ts | 4 +- .../src/generate-documentation-table.ts | 2 +- packages/esbuild-plugin/README_TEMPLATE.md | 21 ---- packages/esbuild-plugin/src/index.ts | 18 +++ packages/playground/build-esbuild.js | 5 +- packages/playground/build-webpack4.js | 5 +- packages/playground/build-webpack5.js | 5 +- packages/playground/rollup.config.mjs | 5 +- packages/playground/vite.config.js | 5 +- packages/rollup-plugin/README_TEMPLATE.md | 27 +---- packages/rollup-plugin/src/index.ts | 11 ++ packages/vite-plugin/README_TEMPLATE.md | 21 ---- packages/vite-plugin/src/index.ts | 11 ++ packages/webpack-plugin/README_TEMPLATE.md | 21 ---- packages/webpack-plugin/src/index.ts | 32 +++-- 17 files changed, 191 insertions(+), 195 deletions(-) rename packages/bundler-plugin-core/src/{plugins => }/debug-id-upload.ts (74%) diff --git a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts similarity index 74% rename from packages/bundler-plugin-core/src/plugins/debug-id-upload.ts rename to packages/bundler-plugin-core/src/debug-id-upload.ts index 356309ff1a22..cd575670c6cd 100644 --- a/packages/bundler-plugin-core/src/plugins/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -3,8 +3,7 @@ import { glob } from "glob"; import os from "os"; import path from "path"; import * as util from "util"; -import { UnpluginOptions } from "unplugin"; -import { Logger } from "../sentry/logger"; +import { Logger } from "./sentry/logger"; import { promisify } from "util"; import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; @@ -15,7 +14,7 @@ interface RewriteSourcesHook { interface DebugIdUploadPluginOptions { logger: Logger; - assets: string | string[]; + assets?: string | string[]; ignore?: string | string[]; releaseName?: string; dist?: string; @@ -35,7 +34,7 @@ interface DebugIdUploadPluginOptions { }; } -export function debugIdUploadPlugin({ +export function createDebugIdUploadFunction({ assets, ignore, logger, @@ -47,34 +46,51 @@ export function debugIdUploadPlugin({ sentryCliOptions, rewriteSourcesHook, deleteFilesAfterUpload, -}: DebugIdUploadPluginOptions): UnpluginOptions { - return { - name: "sentry-debug-id-upload-plugin", - async writeBundle() { - let folderToCleanUp: string | undefined; +}: DebugIdUploadPluginOptions) { + return async (buildArtifactPaths: string[]) => { + let folderToCleanUp: string | undefined; - const cliInstance = new SentryCli(null, sentryCliOptions); + const cliInstance = new SentryCli(null, sentryCliOptions); - try { - const tmpUploadFolder = await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); + try { + const tmpUploadFolder = await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); - folderToCleanUp = tmpUploadFolder; + folderToCleanUp = tmpUploadFolder; - const debugIdChunkFilePaths = ( - await glob(assets, { - absolute: true, - nodir: true, - ignore: ignore, - }) - ).filter( - (debugIdChunkFilePath) => - debugIdChunkFilePath.endsWith(".js") || - debugIdChunkFilePath.endsWith(".mjs") || - debugIdChunkFilePath.endsWith(".cjs") + let globAssets; + if (assets) { + globAssets = assets; + } else { + logger.debug( + "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." ); + globAssets = buildArtifactPaths; + } + const debugIdChunkFilePaths = ( + await glob(globAssets, { + absolute: true, + nodir: true, + ignore: ignore, + }) + ).filter( + (debugIdChunkFilePath) => + debugIdChunkFilePath.endsWith(".js") || + debugIdChunkFilePath.endsWith(".mjs") || + debugIdChunkFilePath.endsWith(".cjs") + ); + + if (Array.isArray(assets) && assets.length === 0) { + logger.debug( + "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." + ); + } else if (debugIdChunkFilePaths.length === 0) { + logger.warn( + "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + ); + } else { await Promise.all( debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { await prepareBundleForDebugIdUpload( @@ -100,33 +116,33 @@ export function debugIdUploadPlugin({ useArtifactBundle: true, } ); + } - if (deleteFilesAfterUpload) { - const filePathsToDelete = await glob(deleteFilesAfterUpload, { - absolute: true, - nodir: true, - }); + if (deleteFilesAfterUpload) { + const filePathsToDelete = await glob(deleteFilesAfterUpload, { + absolute: true, + nodir: true, + }); - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }) - ) - ); - } - } catch (e) { - sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); - await sentryClient.flush(); - handleRecoverableError(e); - } finally { - if (folderToCleanUp) { - void fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); - } + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }) + ) + ); + } + } catch (e) { + sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); + await sentryClient.flush(); + handleRecoverableError(e); + } finally { + if (folderToCleanUp) { + void fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); } - }, + } }; } diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 78a9febe6a3f..4e4019c9ca09 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,9 +1,10 @@ import SentryCli from "@sentry/cli"; -import fs from "fs"; +import * as fs from "fs"; +import * as path from "path"; import MagicString from "magic-string"; import { createUnplugin, UnpluginOptions } from "unplugin"; import { normalizeUserOptions, validateOptions } from "./options-mapping"; -import { debugIdUploadPlugin } from "./plugins/debug-id-upload"; +import { createDebugIdUploadFunction } from "./debug-id-upload"; import { releaseManagementPlugin } from "./plugins/release-management"; import { telemetryPlugin } from "./plugins/telemetry"; import { createLogger } from "./sentry/logger"; @@ -21,6 +22,7 @@ import { interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: () => UnpluginOptions; + debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; } /** @@ -53,6 +55,7 @@ interface SentryUnpluginFactoryOptions { export function sentryUnpluginFactory({ releaseInjectionPlugin, debugIdInjectionPlugin, + debugIdUploadPlugin, }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions, unpluginMetaContext) => { const options = normalizeUserOptions(userOptions); @@ -180,35 +183,31 @@ export function sentryUnpluginFactory({ ); } - if (options.sourcemaps) { - if (!options.authToken) { - logger.warn( - "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" - ); - } else if (!options.org) { - logger.warn( - "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." - ); - } else if (!options.project) { - logger.warn( - "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." - ); - } else if (!options.sourcemaps.assets) { - logger.warn( - "No assets defined. Will not upload source maps. Please provide set the `assets` option to your build-output folder." - ); - } else { - plugins.push(debugIdInjectionPlugin()); - plugins.push( - debugIdUploadPlugin({ - assets: options.sourcemaps.assets, - ignore: options.sourcemaps.ignore, - deleteFilesAfterUpload: options.sourcemaps.deleteFilesAfterUpload, + if (!options.authToken) { + logger.warn( + "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + ); + } else if (!options.org) { + logger.warn( + "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + ); + } else if (!options.project) { + logger.warn( + "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + ); + } else { + plugins.push(debugIdInjectionPlugin()); + plugins.push( + debugIdUploadPlugin( + createDebugIdUploadFunction({ + assets: options.sourcemaps?.assets, + ignore: options.sourcemaps?.ignore, + deleteFilesAfterUpload: options.sourcemaps?.deleteFilesAfterUpload, dist: options.release.dist, releaseName: options.release.name, logger: logger, handleRecoverableError: handleRecoverableError, - rewriteSourcesHook: options.sourcemaps.rewriteSources, + rewriteSourcesHook: options.sourcemaps?.rewriteSources, sentryHub, sentryClient, sentryCliOptions: { @@ -221,8 +220,8 @@ export function sentryUnpluginFactory({ headers: options.headers, }, }) - ); - } + ) + ); } return plugins; @@ -341,6 +340,28 @@ export function createRollupDebugIdInjectionHooks() { }; } +export function createRollupDebugIdUploadHooks( + upload: (buildArtifacts: string[]) => Promise +) { + return { + async writeBundle( + outputOptions: { dir?: string; file?: string }, + bundle: { [fileName: string]: unknown } + ) { + if (outputOptions.dir) { + const outputDir = outputOptions.dir; + const buildArtifacts = Object.keys(bundle).map((asset) => path.join(outputDir, asset)); + await upload(buildArtifacts); + } else if (outputOptions.file) { + await upload([outputOptions.file]); + } else { + const buildArtifacts = Object.keys(bundle).map((asset) => path.join(path.resolve(), asset)); + await upload(buildArtifacts); + } + }, + }; +} + export function getDebugIdSnippet(debugId: string): string { return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index abb6d0f0ebfa..e33c91cbef08 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -93,11 +93,13 @@ export interface Options { /** * A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry. * + * If this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build. + * * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) * * Use the `debug` option to print information about which files end up being uploaded. */ - assets: string | string[]; + assets?: string | string[]; /** * A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry. diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index ed5175ee0940..e7f36c26c7dd 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -79,7 +79,7 @@ errorHandler: (err) => { name: "assets", type: "string | string[]", fullDescription: - "A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", + "A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry.\n\nIf this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", }, { name: "ignore", diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md index 0bec8eb35b5e..041084664239 100644 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -49,27 +49,6 @@ require("esbuild").build({ // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ // and need `project:releases` and `org:read` scopes authToken: process.env.SENTRY_AUTH_TOKEN, - - sourcemaps: { - // Specify the directory containing build artifacts - assets: "./**", - // Don't upload the source maps of dependencies - ignore: ["./node_modules/**"], - }, - - // Helps troubleshooting - set to false to make plugin less noisy - debug: true, - - // Use the following option if you're on an SDK version lower than 7.47.0: - // release: { - // uploadLegacySourcemaps: { - // include: ".", - // ignore: ["node_modules"], - // }, - // }, - - // Optionally uncomment the line below to override automatic release name detection - // release: process.env.RELEASE, }), ], }); diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 26dffb670dd4..74ef48c17e29 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -69,9 +69,27 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { }; } +function esbuildDebugIdUploadPlugin( + upload: (buildArtifacts: string[]) => Promise +): UnpluginOptions { + return { + name: "sentry-esbuild-debug-id-upload-plugin", + esbuild: { + setup({ initialOptions, onEnd }) { + initialOptions.metafile = true; + onEnd(async (result) => { + const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; + await upload(buildArtifacts); + }); + }, + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: esbuildReleaseInjectionPlugin, debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, + debugIdUploadPlugin: esbuildDebugIdUploadPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js index 9ab3d5faf706..dabb9fea96ee 100644 --- a/packages/playground/build-esbuild.js +++ b/packages/playground/build-esbuild.js @@ -6,10 +6,7 @@ build({ outdir: "./out/esbuild", plugins: [ sentryEsbuildPlugin({ - sourcemaps: { - assets: "./out/esbuild/**", - deleteFilesAfterUpload: "./out/esbuild/**/*.map", - }, + debug: true, }), ], minify: true, diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js index d238e58bb4e6..089820beb750 100644 --- a/packages/playground/build-webpack4.js +++ b/packages/playground/build-webpack4.js @@ -16,10 +16,7 @@ webpack4( }, plugins: [ sentryWebpackPlugin({ - sourcemaps: { - assets: "./out/webpack4/**", - deleteFilesAfterUpload: "./out/webpack4/**/*.map", - }, + debug: true, }), ], devtool: "source-map", diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index d4f56bf91481..060891e41ad2 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -18,10 +18,7 @@ webpack5( mode: "production", plugins: [ sentryWebpackPlugin({ - sourcemaps: { - assets: "./out/webpack5/**", - deleteFilesAfterUpload: "./out/webpack5/**/*.map", - }, + debug: true, }), ], devtool: "source-map", diff --git a/packages/playground/rollup.config.mjs b/packages/playground/rollup.config.mjs index f69ca7b844f8..4adf3b4c7613 100644 --- a/packages/playground/rollup.config.mjs +++ b/packages/playground/rollup.config.mjs @@ -8,10 +8,7 @@ export default { input, plugins: [ sentryRollupPlugin({ - sourcemaps: { - assets: "./out/rollup/**", - deleteFilesAfterUpload: "./out/rollup/**/*.map", - }, + debug: true, }), ], output: { diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js index 074802dc31c7..3efe02832c72 100644 --- a/packages/playground/vite.config.js +++ b/packages/playground/vite.config.js @@ -16,10 +16,7 @@ export default defineConfig({ }, plugins: [ sentryVitePlugin({ - sourcemaps: { - assets: "./out/vite/**", - deleteFilesAfterUpload: "./out/vite/**/*.map", - }, + debug: true, }), ], }); diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md index b84c027cea51..dbece44e324a 100644 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -42,33 +42,12 @@ export default { plugins: [ // Put the Sentry rollup plugin after all other plugins sentryRollupPlugin({ - org: "___ORG_SLUG___", - project: "___PROJECT_SLUG___", + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ // and need `project:releases` and `org:read` scopes - authToken: env.SENTRY_AUTH_TOKEN, - - sourcemaps: { - // Specify the directory containing build artifacts - assets: "./**", - // Don't upload the source maps of dependencies - ignore: ["./node_modules/**"], - }, - - // Helps troubleshooting - set to false to make plugin less noisy - debug: true, - - // Use the following option if you're on an SDK version lower than 7.47.0: - // release: { - // uploadLegacySourcemaps: { - // include: ".", - // ignore: ["node_modules"], - // }, - // }, - - // Optionally uncomment the line below to override automatic release name detection - // release: env.RELEASE, + authToken: process.env.SENTRY_AUTH_TOKEN, }), ], output: { diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 8e6da892eeef..8357e5c86e20 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -3,6 +3,7 @@ import { Options, createRollupReleaseInjectionHooks, createRollupDebugIdInjectionHooks, + createRollupDebugIdUploadHooks, } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; @@ -20,9 +21,19 @@ function rollupDebugIdInjectionPlugin(): UnpluginOptions { }; } +function rollupDebugIdUploadPlugin( + upload: (buildArtifacts: string[]) => Promise +): UnpluginOptions { + return { + name: "sentry-rollup-debug-id-upload-plugin", + rollup: createRollupDebugIdUploadHooks(upload), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: rollupReleaseInjectionPlugin, debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, + debugIdUploadPlugin: rollupDebugIdUploadPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index 4718ac924168..961ebff3c838 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -56,27 +56,6 @@ export default defineConfig({ // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ // and need `project:releases` and `org:read` scopes authToken: process.env.SENTRY_AUTH_TOKEN, - - sourcemaps: { - // Specify the directory containing build artifacts - assets: "./**", - // Don't upload the source maps of dependencies - ignore: ["./node_modules/**"], - }, - - // Helps troubleshooting - set to false to make plugin less noisy - debug: true, - - // Use the following option if you're on an SDK version lower than 7.47.0: - // release: { - // uploadLegacySourcemaps: { - // include: ".", - // ignore: ["node_modules"], - // }, - // }, - - // Optionally uncomment the line below to override automatic release name detection - // release: env.RELEASE, }), ], }); diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index d956aef73353..9b41a2104aa4 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -3,6 +3,7 @@ import { Options, createRollupReleaseInjectionHooks, createRollupDebugIdInjectionHooks, + createRollupDebugIdUploadHooks, } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; @@ -21,9 +22,19 @@ function viteDebugIdInjectionPlugin(): UnpluginOptions { }; } +function viteDebugIdUploadPlugin( + upload: (buildArtifacts: string[]) => Promise +): UnpluginOptions { + return { + name: "sentry-vite-debug-id-upload-plugin", + vite: createRollupDebugIdUploadHooks(upload), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: viteReleaseInjectionPlugin, debugIdInjectionPlugin: viteDebugIdInjectionPlugin, + debugIdUploadPlugin: viteDebugIdUploadPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index 1df0741f0941..07f4b55ec3f6 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -50,27 +50,6 @@ module.exports = { // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ // and need `project:releases` and `org:read` scopes authToken: process.env.SENTRY_AUTH_TOKEN, - - sourcemaps: { - // Specify the directory containing build artifacts - assets: "./**", - // Don't upload the source maps of dependencies - ignore: ["./node_modules/**"], - }, - - // Helps troubleshooting - set to false to make plugin less noisy - debug: true, - - // Use the following option if you're on an SDK version lower than 7.47.0: - // release: { - // uploadLegacySourcemaps: { - // include: ".", - // ignore: ["node_modules"], - // }, - // }, - - // Optionally uncomment the line below to override automatic release name detection - // release: env.RELEASE, }), ], }; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 0ee18bbbf58d..99b409dc83cc 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,4 +1,5 @@ import { getDebugIdSnippet, Options, sentryUnpluginFactory } from "@sentry/bundler-plugin-core"; +import * as path from "path"; import { UnpluginOptions } from "unplugin"; import { v4 as uuidv4 } from "uuid"; @@ -7,11 +8,8 @@ import { v4 as uuidv4 } from "uuid"; import { BannerPlugin as Webpack4BannerPlugin } from "webpack-4"; function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { - const pluginName = "sentry-webpack-release-injection-plugin"; - return { - name: pluginName, - + name: "sentry-webpack-release-injection-plugin", webpack(compiler) { if (compiler?.webpack?.BannerPlugin) { compiler.options.plugins.push( @@ -36,11 +34,8 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { } function webpackDebugIdInjectionPlugin(): UnpluginOptions { - const pluginName = "sentry-webpack-debug-id-injection-plugin"; - return { - name: pluginName, - + name: "sentry-webpack-debug-id-injection-plugin", webpack(compiler) { if (compiler?.webpack?.BannerPlugin) { compiler.options.plugins.push( @@ -64,9 +59,30 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { }; } +function webpackDebugIdUploadPlugin( + upload: (buildArtifacts: string[]) => Promise +): UnpluginOptions { + const pluginName = "sentry-webpack-debug-id-upload-plugin"; + return { + name: pluginName, + webpack(compiler) { + compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback) => { + const outputPath = compilation.outputOptions.path ?? path.resolve(); + const buildArtifacts = Object.keys(compilation.assets).map((asset) => + path.join(outputPath, asset) + ); + void upload(buildArtifacts).then(() => { + callback(); + }); + }); + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: webpackReleaseInjectionPlugin, debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, + debugIdUploadPlugin: webpackDebugIdUploadPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any From 635a60f989c4318538d8229ca89449e7edb370b3 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 May 2023 11:29:54 +0200 Subject: [PATCH 209/640] fix: Use automatic release name detection for release injection (#271) --- packages/bundler-plugin-core/src/index.ts | 6 ++---- packages/bundler-plugin-core/src/options-mapping.ts | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 4e4019c9ca09..79634b82e624 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -11,7 +11,6 @@ import { createLogger } from "./sentry/logger"; import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; import { Options } from "./types"; import { - determineReleaseName, generateGlobalInjectorCode, getDependencies, getPackageJson, @@ -138,8 +137,7 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } - const releaseManagementPluginReleaseName = options.release.name ?? determineReleaseName(); - if (!releaseManagementPluginReleaseName) { + if (!options.release.name) { logger.warn( "No release name provided. Will not create release. Please set the `release.name` option to identifiy your release." ); @@ -159,7 +157,7 @@ export function sentryUnpluginFactory({ plugins.push( releaseManagementPlugin({ logger, - releaseName: releaseManagementPluginReleaseName, + releaseName: options.release.name, shouldCreateRelease: options.release.create, shouldCleanArtifacts: options.release.cleanArtifacts, shouldFinalizeRelease: options.release.finalize, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 1ae392de6571..49a078047e22 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,5 +1,6 @@ import { Logger } from "./sentry/logger"; import { Options as UserOptions } from "./types"; +import { determineReleaseName } from "./utils"; export type NormalizedOptions = ReturnType; @@ -20,6 +21,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { sourcemaps: userOptions.sourcemaps, release: { ...userOptions.release, + name: userOptions.release?.name ?? determineReleaseName(), inject: userOptions.release?.inject ?? true, create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, From f98243580b965df6059ceba9ed82f44cfd122308 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 May 2023 13:27:01 +0200 Subject: [PATCH 210/640] fix(core): Ignore query and hash in filepaths for release injection (#272) --- packages/bundler-plugin-core/src/index.ts | 12 ++++++++++-- packages/bundler-plugin-core/src/utils.ts | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 79634b82e624..663a6497a77c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -16,6 +16,7 @@ import { getPackageJson, parseMajorVersion, stringToUUID, + stripQueryAndHashFromPath, } from "./utils"; interface SentryUnpluginFactoryOptions { @@ -278,11 +279,18 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { return null; } - if (id.match(/\\node_modules\\|\/node_modules\//)) { + // id may contain query and hash which will trip up our file extension logic below + const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); + + if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) { return null; } - if (![".js", ".ts", ".jsx", ".tsx", ".mjs"].some((ending) => id.endsWith(ending))) { + if ( + ![".js", ".ts", ".jsx", ".tsx", ".mjs"].some((ending) => + idWithoutQueryAndHash.endsWith(ending) + ) + ) { return null; } diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index eb98a9f09225..16cb2e1bd7fe 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -271,3 +271,8 @@ function getBuildInformation() { nodeVersion: parseMajorVersion(process.version), }; } + +export function stripQueryAndHashFromPath(path: string): string { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return path.split("?")[0]!.split("#")[0]!; +} From 8f509c481ef06077f921e4260d5882cef8e1cbd1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 May 2023 14:45:46 +0200 Subject: [PATCH 211/640] meta: Update changelog for 2.1.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 284442c30bad..889afdd8518a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.1.0 + +- docs: Add removal of `configFile` option to migration guide (#266) +- feat: Auto detect build artifacts (#257) +- fix(core): Ignore query and hash in filepaths for release injection (#272) +- fix(esbuild): Use absolute path for virtual file resolving (#269) +- fix: Don't show log message if telemetry is disabled (#267) +- fix: Use automatic release name detection for release injection (#271) + ## 2.0.0 Version 2.0.0 marks the official release of the `@sentry/vite-plugin`, `@sentry/esbuild-plugin` and `@sentry/rollup-plugin` packages. From 53231276ee36fa6cb75d73bf03f31c06cc5d3bf6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 24 May 2023 13:08:12 +0000 Subject: [PATCH 212/640] release: 2.1.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index f9e81b623e57..d04f55b27502 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.0.0", + "version": "2.1.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1255f5411f50..4705263126e9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.0.0", + "version": "2.1.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -67,8 +67,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index f6d7b61bc995..d1ec64288d78 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 1312c4edc548..4d6b8556a832 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.0.0", - "@sentry/rollup-plugin": "2.0.0", - "@sentry/vite-plugin": "2.0.0", - "@sentry/webpack-plugin": "2.0.0", + "@sentry/esbuild-plugin": "2.1.0", + "@sentry/rollup-plugin": "2.1.0", + "@sentry/vite-plugin": "2.1.0", + "@sentry/webpack-plugin": "2.1.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 253ed27f7dbb..617cdfaca7f2 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/bundler-plugin-core": "2.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2c7ecbeaf48c..ef8479099c46 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 16c0a0f65f35..5221b42f758b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", - "@sentry/bundler-plugin-core": "2.0.0", - "@sentry/esbuild-plugin": "2.0.0", - "@sentry/rollup-plugin": "2.0.0", - "@sentry/vite-plugin": "2.0.0", - "@sentry/webpack-plugin": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/esbuild-plugin": "2.1.0", + "@sentry/rollup-plugin": "2.1.0", + "@sentry/vite-plugin": "2.1.0", + "@sentry/webpack-plugin": "2.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@4.41.32", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9d241261681c..e09474df38b5 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/bundler-plugin-core": "2.1.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 983d327b6fe9..febabe5131d0 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/bundler-plugin-core": "2.1.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6ecdfd88847e..c1e7508d480d 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 776d2c9505cb..608165783c04 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/bundler-plugin-core": "2.1.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 0aeb3ae5e72a..3177ffc1df87 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.0.0", + "@sentry/bundler-plugin-core": "2.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0", "webpack-4": "npm:webpack@^4" @@ -59,8 +59,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.0.0", + "@sentry-internal/eslint-config": "2.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 66c9ab9229e2b57732cccb6f30682504898ebbc4 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 24 May 2023 15:33:15 +0200 Subject: [PATCH 213/640] ref(webpack): Use webpack peer dependency (#273) --- packages/e2e-tests/package.json | 6 +- .../e2e-tests/utils/create-cjs-bundles.ts | 2 +- .../build-information-injection.test.ts | 4 +- packages/integration-tests/package.json | 6 +- .../utils/create-cjs-bundles.ts | 2 +- packages/playground/build-webpack5.js | 2 +- packages/playground/package.json | 2 +- packages/webpack-plugin/package.json | 10 +- packages/webpack-plugin/rollup.config.js | 2 +- packages/webpack-plugin/src/index.ts | 75 +++---- yarn.lock | 208 +++++++++++++++--- 11 files changed, 235 insertions(+), 84 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4d6b8556a832..489cb5bc69dd 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -28,7 +28,7 @@ "@types/axios": "^0.14.0", "@types/glob": "8.0.0", "@types/jest": "^28.1.3", - "@types/webpack4": "npm:@types/webpack@4.41.32", + "@types/webpack4": "npm:@types/webpack@^4", "esbuild": "0.14.49", "eslint": "^8.18.0", "glob": "8.0.3", @@ -36,8 +36,8 @@ "rollup": "2.77.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack": "5.74.0", - "webpack4": "npm:webpack@4.46.0" + "webpack5": "npm:webpack@5.74.0", + "webpack4": "npm:webpack@^4" }, "volta": { "extends": "../../package.json" diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index c434311bce74..ebd5515106df 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -2,7 +2,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 "webpack"; +import { webpack as webpack5 } from "webpack5"; import * as esbuild from "esbuild"; import type { Options } from "@sentry/bundler-plugin-core"; 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 f05f382213cc..83cbad196971 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 @@ -19,10 +19,10 @@ function checkBundle(bundlePath: string): void { "esbuild", "rollup", "vite", - "webpack", "webpack4", + "webpack5", ]) as string[], - depsVersions: { rollup: 3, vite: 3, webpack: 5 }, + depsVersions: { rollup: 3, vite: 3 }, // This will differ based on what env this is run on nodeVersion: expectedNodeVersion, }) diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5221b42f758b..44988910b37a 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -24,15 +24,15 @@ "@sentry/webpack-plugin": "2.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", - "@types/webpack4": "npm:@types/webpack@4.41.32", + "@types/webpack4": "npm:@types/webpack@^4", "esbuild": "0.14.49", "eslint": "^8.18.0", "jest": "^28.1.3", "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack": "5.74.0", - "webpack4": "npm:webpack@4.46.0" + "webpack5": "npm:webpack@5.74.0", + "webpack4": "npm:webpack@^4" }, "volta": { "extends": "../../package.json" diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index a00a22cb6731..5f85d8ecede9 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -2,7 +2,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 "webpack"; +import { webpack as webpack5 } from "webpack5"; import * as esbuild from "esbuild"; import { Options } from "@sentry/bundler-plugin-core"; import { sentryVitePlugin } from "@sentry/vite-plugin"; diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack5.js index 060891e41ad2..6f95647f20d1 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack5.js @@ -1,6 +1,6 @@ // @ts-check const path = require("path"); -const webpack5 = require("webpack"); +const webpack5 = require("webpack5"); const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); webpack5( diff --git a/packages/playground/package.json b/packages/playground/package.json index e09474df38b5..ca44f742104e 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -28,7 +28,7 @@ "http-proxy": "^1.18.1", "rollup": "3.2.0", "vite": "3.0.0", - "webpack": "5.74.0", + "webpack5": "npm:webpack@5", "webpack4": "npm:webpack@4.46.0" }, "volta": { diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3177ffc1df87..39cd90925179 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -50,8 +50,7 @@ "dependencies": { "@sentry/bundler-plugin-core": "2.1.0", "unplugin": "1.0.1", - "uuid": "^9.0.0", - "webpack-4": "npm:webpack@^4" + "uuid": "^9.0.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -66,12 +65,17 @@ "@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", "rimraf": "^3.0.2", "rollup": "2.75.7", "ts-node": "^10.9.1", - "typescript": "^4.7.4" + "typescript": "^4.7.4", + "webpack": "npm:webpack@^4" + }, + "peerDependencies": { + "webpack": ">=4" }, "volta": { "extends": "../../package.json" diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index 95b1158525af..c6aa4f18685e 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -9,7 +9,7 @@ const extensions = [".ts"]; export default { input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], onwarn: (warning) => { throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them }, diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 99b409dc83cc..1a2ddd6a6477 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -4,31 +4,26 @@ import { UnpluginOptions } from "unplugin"; import { v4 as uuidv4 } from "uuid"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore No typedefs for webpack 4 -import { BannerPlugin as Webpack4BannerPlugin } from "webpack-4"; +// @ts-ignore webpack is a peer dep +import * as webback4or5 from "webpack"; function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { return { name: "sentry-webpack-release-injection-plugin", webpack(compiler) { - if (compiler?.webpack?.BannerPlugin) { - compiler.options.plugins.push( - new compiler.webpack.BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: injectionCode, - }) - ); - } else { - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new Webpack4BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: injectionCode, - }) - ); - } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: injectionCode, + }) + ); }, }; } @@ -37,24 +32,19 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { return { name: "sentry-webpack-debug-id-injection-plugin", webpack(compiler) { - if (compiler?.webpack?.BannerPlugin) { - compiler.options.plugins.push( - new compiler.webpack.BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: () => getDebugIdSnippet(uuidv4()), - }) - ); - } else { - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new Webpack4BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: () => getDebugIdSnippet(uuidv4()), - }) - ); - } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: () => getDebugIdSnippet(uuidv4()), + }) + ); }, }; } @@ -66,10 +56,11 @@ function webpackDebugIdUploadPlugin( return { name: pluginName, webpack(compiler) { - compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback) => { - const outputPath = compilation.outputOptions.path ?? path.resolve(); - const buildArtifacts = Object.keys(compilation.assets).map((asset) => - path.join(outputPath, asset) + compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback: () => void) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const outputPath = (compilation.outputOptions.path as string | undefined) ?? path.resolve(); + const buildArtifacts = Object.keys(compilation.assets as Record).map( + (asset) => path.join(outputPath, asset) ); void upload(buildArtifacts).then(() => { callback(); diff --git a/yarn.lock b/yarn.lock index d5770ba0ab17..71b04dada529 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2530,7 +2530,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== @@ -2748,10 +2748,10 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack4@npm:@types/webpack@4.41.32": - version "4.41.32" - resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" - integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== +"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@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" @@ -2878,6 +2878,14 @@ "@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" @@ -2892,6 +2900,11 @@ 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" @@ -2902,6 +2915,11 @@ 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" @@ -2912,6 +2930,11 @@ 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" @@ -2945,11 +2968,25 @@ "@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" @@ -2965,6 +3002,16 @@ "@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" @@ -2982,6 +3029,13 @@ 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" @@ -2996,6 +3050,13 @@ 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" @@ -3008,6 +3069,11 @@ 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" @@ -3041,6 +3107,20 @@ "@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" @@ -3052,6 +3132,17 @@ "@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" @@ -3073,6 +3164,16 @@ "@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" @@ -3095,6 +3196,18 @@ "@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" @@ -3127,6 +3240,14 @@ "@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" @@ -5021,7 +5142,7 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.10.0: +enhanced-resolve@^5.10.0, enhanced-resolve@^5.14.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== @@ -5110,6 +5231,11 @@ 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-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" @@ -10776,7 +10902,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== @@ -11480,7 +11606,7 @@ 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.1.3, terser-webpack-plugin@^5.3.7: 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== @@ -12189,7 +12315,25 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -"webpack-4@npm:webpack@^4", "webpack4@npm:webpack@4.46.0": +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + 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== + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + +"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@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== @@ -12218,25 +12362,37 @@ webidl-conversions@^6.1.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== +"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: - source-list-map "^2.0.0" - 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== - -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + "@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" + 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" + 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" -webpack@5.74.0: +"webpack5@npm:webpack@5.74.0": version "5.74.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== From 006cceb43e8351dbd5597314700f789d523a3449 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 25 May 2023 10:57:54 +0200 Subject: [PATCH 214/640] ref(core): Make better use of Sentry (#246) --- packages/bundler-plugin-core/package.json | 2 +- packages/bundler-plugin-core/src/index.ts | 42 +++++++++++----- .../src/plugins/telemetry.ts | 27 +++++------ .../src/sentry/telemetry.ts | 27 ++++------- .../test/sentry/telemetry.test.ts | 4 +- yarn.lock | 48 ++++++++++++++++++- 6 files changed, 99 insertions(+), 51 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4705263126e9..0b7555284be0 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,7 +53,7 @@ }, "dependencies": { "@sentry/cli": "^2.17.0", - "@sentry/node": "7.50.0", + "@sentry/node": "7.53.1", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 663a6497a77c..7114b7f01776 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -74,10 +74,17 @@ export function sentryUnpluginFactory({ shouldSendTelemetry, unpluginMetaContext.framework ); - const pluginExecutionTransaction = sentryHub.startTransaction({ - name: "Sentry Bundler Plugin execution", + const sentrySession = sentryHub.startSession(); + sentryHub.captureSession(); + + let sentEndSession = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out + // We also need to manually end sesisons on errors because beforeExit is not called on crashes + process.on("beforeExit", () => { + if (!sentEndSession) { + sentryHub.endSession(); + sentEndSession = true; + } }); - sentryHub.getScope().setSpan(pluginExecutionTransaction); const logger = createLogger({ prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, @@ -86,16 +93,25 @@ export function sentryUnpluginFactory({ }); function handleRecoverableError(unknownError: unknown) { - pluginExecutionTransaction.setStatus("internal_error"); - - if (options.errorHandler) { - if (unknownError instanceof Error) { - options.errorHandler(unknownError); + sentrySession.status = "abnormal"; + try { + if (options.errorHandler) { + try { + if (unknownError instanceof Error) { + options.errorHandler(unknownError); + } else { + options.errorHandler(new Error("An unknown error occured")); + } + } catch (e) { + sentrySession.status = "crashed"; + throw e; + } } else { - options.errorHandler(new Error("An unknown error occured")); + sentrySession.status = "crashed"; + throw unknownError; } - } else { - throw unknownError; + } finally { + sentryHub.endSession(); } } @@ -115,10 +131,10 @@ export function sentryUnpluginFactory({ plugins.push( telemetryPlugin({ - pluginExecutionTransaction, + sentryClient, + sentryHub, logger, shouldSendTelemetry, - sentryClient, }) ); diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts index 22d414071aa7..4b256b6bd8e5 100644 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -1,35 +1,30 @@ -import { NodeClient, Transaction } from "@sentry/node"; +import { Hub, NodeClient } from "@sentry/node"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; interface TelemetryPluginOptions { + sentryHub: Hub; sentryClient: NodeClient; - pluginExecutionTransaction: Transaction; shouldSendTelemetry: Promise; logger: Logger; } export function telemetryPlugin({ + sentryHub, sentryClient, - pluginExecutionTransaction, shouldSendTelemetry, logger, }: TelemetryPluginOptions): UnpluginOptions { return { name: "sentry-telemetry-plugin", - buildStart() { - void shouldSendTelemetry.then((willSendTelemetry) => { - if (willSendTelemetry) { - logger.info( - "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." - ); - } - }); - pluginExecutionTransaction.startTimestamp = Date.now() / 1000; - }, - async writeBundle() { - pluginExecutionTransaction.finish(); - await sentryClient.flush(); + async buildStart() { + if (await shouldSendTelemetry) { + logger.info( + "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." + ); + sentryHub.startTransaction({ name: "Sentry Bundler Plugin execution" }).finish(); + await sentryClient.flush(3000); + } }, }; } diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 2b08f0f16e74..a5b63ef17761 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -62,6 +62,7 @@ export function createSentryInstance( export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bundler: string) { const { org, project, release, errorHandler, sourcemaps } = options; + hub.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); if (release.uploadLegacySourcemaps) { hub.setTag( "uploadLegacySourcemapsEntries", @@ -70,29 +71,19 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund } // Optional release pipeline steps - if (release.cleanArtifacts) { - hub.setTag("clean-artifacts", true); - } + hub.setTag("clean-artifacts", release.cleanArtifacts); if (release.setCommits) { hub.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); + } else { + hub.setTag("set-commits", "undefined"); } - if (release.finalize) { - hub.setTag("finalize-release", true); - } - if (release.deploy) { - hub.setTag("add-deploy", true); - } + hub.setTag("finalize-release", release.finalize); + hub.setTag("deploy-options", !!release.deploy); // Miscelaneous options - if (errorHandler) { - hub.setTag("error-handler", "custom"); - } - if (sourcemaps?.assets) { - hub.setTag("debug-id-upload", true); - } - if (sourcemaps?.deleteFilesAfterUpload) { - hub.setTag("delete-after-upload", true); - } + hub.setTag("custom-error-handler", !!errorHandler); + hub.setTag("sourcemaps-assets", !!sourcemaps?.assets); + hub.setTag("delete-after-upload", !!sourcemaps?.deleteFilesAfterUpload); hub.setTag("node", process.version); diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index c6d2b8269781..67b3f8716a5a 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -70,7 +70,7 @@ describe("addPluginOptionTagsToHub", () => { mockedHub as unknown as Hub, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("add-deploy", true); + expect(mockedHub.setTag).toHaveBeenCalledWith("deploy-options", true); }); it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { @@ -80,7 +80,7 @@ describe("addPluginOptionTagsToHub", () => { mockedHub as unknown as Hub, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("error-handler", "custom"); + expect(mockedHub.setTag).toHaveBeenCalledWith("custom-error-handler", true); }); it.each([ diff --git a/yarn.lock b/yarn.lock index 71b04dada529..9ce828f86aed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2249,6 +2249,16 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" +"@sentry-internal/tracing@7.53.1": + version "7.53.1" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.53.1.tgz#85517ba93ee721424c865706f7ff4eaab1569e6d" + integrity sha512-a4H4rvVdz0XDGgNfRqc7zg6rMt2P1P05xBmgfIfztYy94Vciw1QMdboNiT7einr8ra8wogdEaK4Pe2AzYAPBJQ== + dependencies: + "@sentry/core" "7.53.1" + "@sentry/types" "7.53.1" + "@sentry/utils" "7.53.1" + tslib "^1.9.3" + "@sentry/cli@^2.17.0": version "2.18.1" resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.18.1.tgz#c44f189a1a72a83087a297c5fcc7668f86dd4308" @@ -2269,6 +2279,15 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" +"@sentry/core@7.53.1": + version "7.53.1" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.53.1.tgz#c091a9d7fd010f8a2cb1dd71d949a8e453e35d4c" + integrity sha512-DAH8IJNORJJ7kQLqsZuhMkN6cwJjXzFuuUoZor7IIDHIHjtl51W+2F3Stg3+I3ZoKDfJfUNKqhipk2WZjG0FBg== + dependencies: + "@sentry/types" "7.53.1" + "@sentry/utils" "7.53.1" + tslib "^1.9.3" + "@sentry/integrations@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" @@ -2279,7 +2298,7 @@ localforage "^1.8.1" tslib "^1.9.3" -"@sentry/node@7.50", "@sentry/node@7.50.0": +"@sentry/node@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" integrity sha512-11UJBKoQFMp7f8sbzeO2gENsKIUkVCNBTzuPRib7l2K1HMjSfacXmwwma7ZEs0mc3ofIZ1UYuyONAXmI1lK9cQ== @@ -2293,11 +2312,30 @@ lru_map "^0.3.3" tslib "^1.9.3" +"@sentry/node@7.53.1": + version "7.53.1" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.53.1.tgz#d4c47477cf4305e352b511635d1d3d4d160e8bd7" + integrity sha512-B4ax8sRd54xj4ad+4eY2EOKNt0Mh1NjuLW1zUKS8HW3h0bmuaDFzGuhEVvEY5H4SaV6tZKj1c0dvnMnyUbYkhA== + dependencies: + "@sentry-internal/tracing" "7.53.1" + "@sentry/core" "7.53.1" + "@sentry/types" "7.53.1" + "@sentry/utils" "7.53.1" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== +"@sentry/types@7.53.1": + version "7.53.1" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.53.1.tgz#3eefbad851f2d0deff67285d7e976d23d7d06a41" + integrity sha512-/ijchRIu+jz3+j/zY+7KRPfLSCY14fTx5xujjbOdmEKjmIHQmwPBdszcQm40uwofrR8taV4hbt5MFN+WnjCkCw== + "@sentry/utils@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" @@ -2306,6 +2344,14 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" +"@sentry/utils@7.53.1": + version "7.53.1" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.53.1.tgz#b1f9f1dd4de7127287ad5027c2bd1133c5590486" + integrity sha512-DKJA1LSUOEv4KOR828MzVuLh+drjeAgzyKgN063OEKmnirgjgRgNNS8wUgwpG0Tn2k6ANZGCwrdfzPeSBxshKg== + dependencies: + "@sentry/types" "7.53.1" + tslib "^1.9.3" + "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" From d306f2e57adeaf372352792540788e802dc2e5b8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 25 May 2023 11:00:25 +0200 Subject: [PATCH 215/640] meta: Update changelog for 2.2.0 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 889afdd8518a..45b1d9033038 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.2.0 + +- ref(core): Make better use of Sentry (#246) +- ref(webpack): Use webpack peer dependency (#273) + +Work in this release was made possible with help from @wojtekmaj and @dobladov. Thank you for your contributions! + ## 2.1.0 - docs: Add removal of `configFile` option to migration guide (#266) From 4d5a646dcbb3407899a6b1a34e953134a9f6e98a Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 25 May 2023 09:25:00 +0000 Subject: [PATCH 216/640] release: 2.2.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 18 +++++++++--------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 20 ++++++++++---------- packages/playground/package.json | 8 ++++---- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 46 insertions(+), 46 deletions(-) diff --git a/lerna.json b/lerna.json index d04f55b27502..52e0a6c54f21 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.1.0", + "version": "2.2.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 0b7555284be0..40454041aa2d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.1.0", + "version": "2.2.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -67,8 +67,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index d1ec64288d78..2c208b9585fb 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 489cb5bc69dd..120bb95624b4 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.1.0", - "@sentry/rollup-plugin": "2.1.0", - "@sentry/vite-plugin": "2.1.0", - "@sentry/webpack-plugin": "2.1.0", + "@sentry/esbuild-plugin": "2.2.0", + "@sentry/rollup-plugin": "2.2.0", + "@sentry/vite-plugin": "2.2.0", + "@sentry/webpack-plugin": "2.2.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", @@ -36,8 +36,8 @@ "rollup": "2.77.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack5": "npm:webpack@5.74.0", - "webpack4": "npm:webpack@^4" + "webpack4": "npm:webpack@^4", + "webpack5": "npm:webpack@5.74.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 617cdfaca7f2..432dc45da0df 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.1.0", + "version": "2.2.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/bundler-plugin-core": "2.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index ef8479099c46..7d80291bc37f 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 44988910b37a..eb506d994295 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", - "@sentry/bundler-plugin-core": "2.1.0", - "@sentry/esbuild-plugin": "2.1.0", - "@sentry/rollup-plugin": "2.1.0", - "@sentry/vite-plugin": "2.1.0", - "@sentry/webpack-plugin": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/esbuild-plugin": "2.2.0", + "@sentry/rollup-plugin": "2.2.0", + "@sentry/vite-plugin": "2.2.0", + "@sentry/webpack-plugin": "2.2.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", @@ -31,8 +31,8 @@ "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack5": "npm:webpack@5.74.0", - "webpack4": "npm:webpack@^4" + "webpack4": "npm:webpack@^4", + "webpack5": "npm:webpack@5.74.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/playground/package.json b/packages/playground/package.json index ca44f742104e..cb8119a7857b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/bundler-plugin-core": "2.2.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", @@ -28,8 +28,8 @@ "http-proxy": "^1.18.1", "rollup": "3.2.0", "vite": "3.0.0", - "webpack5": "npm:webpack@5", - "webpack4": "npm:webpack@4.46.0" + "webpack4": "npm:webpack@4.46.0", + "webpack5": "npm:webpack@5" }, "volta": { "extends": "../../package.json" diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index febabe5131d0..ea60b9f0fce7 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.1.0", + "version": "2.2.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/bundler-plugin-core": "2.2.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c1e7508d480d..0fceb850e5d8 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 608165783c04..b43c8398ba83 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.1.0", + "version": "2.2.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/bundler-plugin-core": "2.2.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 39cd90925179..8751715a85be 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.1.0", + "version": "2.2.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.1.0", + "@sentry/bundler-plugin-core": "2.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.1.0", + "@sentry-internal/eslint-config": "2.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 04a942a1b0119edc157aa68c19b35069ca644521 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 26 May 2023 09:38:08 +0200 Subject: [PATCH 217/640] ref: Improve log message when sourcemap cannot be found (#287) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index cd575670c6cd..b29cbe809856 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -249,7 +249,9 @@ async function determineSourceMapPathFromBundle( } // This is just a debug message because it can be quite spammy for some frameworks - logger.debug(`Could not determine source map path for bundle: ${bundlePath}`); + logger.debug( + `Could not determine source map path for bundle: ${bundlePath} - Did you turn on source map generation in your bundler?` + ); return undefined; } From 013f7ff05ca95dcbdacff1b533fd533c02e44ef4 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 1 Jun 2023 14:05:54 +0200 Subject: [PATCH 218/640] feat(core): Set custom user agent when interacting with Sentry (#296) --- packages/bundler-plugin-core/src/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7114b7f01776..a3c6f591698a 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -92,6 +92,11 @@ export function sentryUnpluginFactory({ debug: options.debug, }); + // Set the User-Agent that Sentry CLI will use when interacting with Sentry + process.env[ + "SENTRY_PIPELINE" + ] = `${unpluginMetaContext.framework}-plugin/${__PACKAGE_VERSION__}`; + function handleRecoverableError(unknownError: unknown) { sentrySession.status = "abnormal"; try { From 8d5dfb6aa7615f2bc6358fe0f666a795cd1e4c22 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 5 Jun 2023 15:59:16 +0200 Subject: [PATCH 219/640] feat(core): Improve telemetry (#294) --- packages/bundler-plugin-core/package.json | 1 + .../src/debug-id-upload.ts | 77 ++++++++++++++++--- .../src/sentry/telemetry.ts | 1 + .../bundler-plugin-core/types.tsconfig.json | 3 +- 4 files changed, 70 insertions(+), 12 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 40454041aa2d..5195f8369638 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,6 +54,7 @@ "dependencies": { "@sentry/cli": "^2.17.0", "@sentry/node": "7.53.1", + "@sentry/utils": "7.53.1", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index b29cbe809856..84f8278760bf 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -7,6 +7,7 @@ import { Logger } from "./sentry/logger"; import { promisify } from "util"; import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; +import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; interface RewriteSourcesHook { (source: string, map: any): string; @@ -48,14 +49,18 @@ export function createDebugIdUploadFunction({ deleteFilesAfterUpload, }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { - let folderToCleanUp: string | undefined; + const artifactBundleUploadTransaction = sentryHub.startTransaction({ + name: "debug-id-sourcemap-upload", + }); - const cliInstance = new SentryCli(null, sentryCliOptions); + let folderToCleanUp: string | undefined; try { + const mkdtempSpan = artifactBundleUploadTransaction.startChild({ description: "mkdtemp" }); const tmpUploadFolder = await fs.promises.mkdtemp( path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") ); + mkdtempSpan.finish(); folderToCleanUp = tmpUploadFolder; @@ -69,13 +74,15 @@ export function createDebugIdUploadFunction({ globAssets = buildArtifactPaths; } - const debugIdChunkFilePaths = ( - await glob(globAssets, { - absolute: true, - nodir: true, - ignore: ignore, - }) - ).filter( + const globSpan = artifactBundleUploadTransaction.startChild({ description: "glob" }); + const globResult = await glob(globAssets, { + absolute: true, + nodir: true, + ignore: ignore, + }); + globSpan.finish(); + + const debugIdChunkFilePaths = globResult.filter( (debugIdChunkFilePath) => debugIdChunkFilePath.endsWith(".js") || debugIdChunkFilePath.endsWith(".mjs") || @@ -91,6 +98,9 @@ export function createDebugIdUploadFunction({ "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." ); } else { + const prepareSpan = artifactBundleUploadTransaction.startChild({ + description: "prepare-bundles", + }); await Promise.all( debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { await prepareBundleForDebugIdUpload( @@ -102,6 +112,33 @@ export function createDebugIdUploadFunction({ ); }) ); + prepareSpan.finish(); + + const files = await fs.promises.readdir(tmpUploadFolder); + const stats = files.map((file) => fs.promises.stat(path.join(tmpUploadFolder, file))); + const uploadSize = (await Promise.all(stats)).reduce( + (accumulator, { size }) => accumulator + size, + 0 + ); + + artifactBundleUploadTransaction.setMeasurement("files", files.length, "none"); + artifactBundleUploadTransaction.setMeasurement("upload_size", uploadSize, "byte"); + + const uploadSpan = artifactBundleUploadTransaction.startChild({ + description: "upload", + }); + + const cliInstance = new SentryCli(null, { + ...sentryCliOptions, + headers: { + "sentry-trace": uploadSpan.toTraceparent(), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + baggage: dynamicSamplingContextToSentryBaggageHeader( + artifactBundleUploadTransaction.getDynamicSamplingContext() + )!, + ...sentryCliOptions.headers, + }, + }); await cliInstance.releases.uploadSourceMaps( releaseName ?? "undefined", // unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow @@ -116,32 +153,50 @@ export function createDebugIdUploadFunction({ useArtifactBundle: true, } ); + + uploadSpan.finish(); } if (deleteFilesAfterUpload) { + const deleteGlobSpan = artifactBundleUploadTransaction.startChild({ + description: "delete-glob", + }); const filePathsToDelete = await glob(deleteFilesAfterUpload, { absolute: true, nodir: true, }); + deleteGlobSpan.finish(); filePathsToDelete.forEach((filePathToDelete) => { logger.debug(`Deleting asset after upload: ${filePathToDelete}`); }); + const deleteSpan = artifactBundleUploadTransaction.startChild({ + description: "delete-files-after-upload", + }); await Promise.all( filePathsToDelete.map((filePathToDelete) => fs.promises.rm(filePathToDelete, { force: true }) ) ); + deleteSpan.finish(); } } catch (e) { - sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); - await sentryClient.flush(); + sentryHub.withScope((scope) => { + scope.setSpan(artifactBundleUploadTransaction); + sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); + }); handleRecoverableError(e); } finally { if (folderToCleanUp) { + const cleanupSpan = artifactBundleUploadTransaction.startChild({ + description: "cleanup", + }); void fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); + cleanupSpan.finish(); } + artifactBundleUploadTransaction.finish(); + await sentryClient.flush(); } }; } diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index a5b63ef17761..528fd13a24ab 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -86,6 +86,7 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund hub.setTag("delete-after-upload", !!sourcemaps?.deleteFilesAfterUpload); hub.setTag("node", process.version); + hub.setTag("platform", process.platform); hub.setTags({ organization: org, diff --git a/packages/bundler-plugin-core/types.tsconfig.json b/packages/bundler-plugin-core/types.tsconfig.json index 2d84052b318f..6997260318ad 100644 --- a/packages/bundler-plugin-core/types.tsconfig.json +++ b/packages/bundler-plugin-core/types.tsconfig.json @@ -6,6 +6,7 @@ "rootDir": "./src", "declaration": true, "emitDeclarationOnly": true, - "declarationDir": "./dist/types" + "declarationDir": "./dist/types", + "declarationMap": true } } From 015d8fbd99c00d21e1ccb63ef3a6e0f9f66cf063 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 5 Jun 2023 16:00:16 +0200 Subject: [PATCH 220/640] fix(webpack): Set minimum webpack 4 peer dep to `4.40.0` (#290) --- packages/webpack-plugin/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8751715a85be..f84809341d96 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -75,7 +75,7 @@ "webpack": "npm:webpack@^4" }, "peerDependencies": { - "webpack": ">=4" + "webpack": ">=4.40.0" }, "volta": { "extends": "../../package.json" From 2a22ed853a1bde2654a02fbfd3b17edaadeb1e96 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Jun 2023 14:58:08 +0200 Subject: [PATCH 221/640] fix(esbuild): Inject different debug IDs into different output bundles (#301) --- packages/esbuild-plugin/src/index.ts | 41 ++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 74ef48c17e29..da7dd4da1e36 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -38,26 +38,57 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { function esbuildDebugIdInjectionPlugin(): UnpluginOptions { const pluginName = "sentry-esbuild-debug-id-injection-plugin"; - const virtualReleaseInjectionFilePath = path.resolve("_sentry-debug-id-injection-stub"); // needs to be an absolute path for older eslint versions + const proxyNamespace = "sentry-debug-id-proxy"; + const stubNamespace = "sentry-debug-id-stub"; return { name: pluginName, esbuild: { - setup({ initialOptions, onLoad, onResolve }) { - initialOptions.inject = initialOptions.inject || []; - initialOptions.inject.push(virtualReleaseInjectionFilePath); + setup({ onLoad, onResolve }) { + onResolve({ filter: /.*/ }, (args) => { + if (args.kind !== "entry-point") { + return; + } + return { + pluginName, + path: args.path, + namespace: proxyNamespace, + pluginData: { + originalPath: args.path, + originalResolveDir: args.resolveDir, + }, + }; + }); + + onLoad({ filter: /.*/, namespace: proxyNamespace }, (args) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const originalPath = args.pluginData.originalPath as string; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const originalResolveDir = args.pluginData.originalResolveDir as string; + return { + loader: "js", + pluginName, + contents: ` + import "_sentry-debug-id-injection-stub"; + import * as OriginalModule from "${originalPath}"; + export default OriginalModule.default; + export * from "${originalPath}";`, + resolveDir: originalResolveDir, + }; + }); onResolve({ filter: /_sentry-debug-id-injection-stub/ }, (args) => { return { path: args.path, sideEffects: true, pluginName, + namespace: stubNamespace, suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved }; }); - onLoad({ filter: /_sentry-debug-id-injection-stub/ }, () => { + onLoad({ filter: /_sentry-debug-id-injection-stub/, namespace: stubNamespace }, () => { return { loader: "js", pluginName, From b02821a36d0a9f7b700f58a5d6c780982e850d1a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Jun 2023 15:16:43 +0200 Subject: [PATCH 222/640] fix: Use magic-string `appendLeft` instead of `replace` (#303) --- packages/bundler-plugin-core/src/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a3c6f591698a..ebd26c0e6bc9 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -346,9 +346,11 @@ export function createRollupDebugIdInjectionHooks() { // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. /^(?:\s*|\/\*(?:.|\r|\n)*\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; - if (code.match(commentUseStrictRegex)?.[0]) { + const match = code.match(commentUseStrictRegex)?.[0]; + + if (match) { // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.replace(commentUseStrictRegex, (match) => `${match}${codeToInject}`); + ms.appendLeft(match.length, codeToInject); } else { // ms.replace() doesn't work when there is an empty string match (which happens if // there is neither, a comment, nor a "use strict" at the top of the chunk) so we From 4fe2c5f5298e1374903f9af1c6bb291ffd8dea90 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Jun 2023 16:09:57 +0200 Subject: [PATCH 223/640] meta: Update changelog for 2.2.1 (#304) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b1d9033038..5cfda46965bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.2.1 + +- fix(esbuild): Inject different debug IDs into different output bundles (#301) +- fix(webpack): Set minimum webpack 4 peer dep to `4.40.0` (#290) +- fix: Use magic-string `appendLeft` instead of `replace` (#303) +- ref: Improve log message when sourcemap cannot be found (#287) + ## 2.2.0 - ref(core): Make better use of Sentry (#246) From c73d2d3b5bd8c96aac242370177c02fb6ddc7b95 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 6 Jun 2023 14:13:07 +0000 Subject: [PATCH 224/640] release: 2.2.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 52e0a6c54f21..5147f7111470 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.2.0", + "version": "2.2.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5195f8369638..fc4d3638b0a1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.2.0", + "version": "2.2.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 2c208b9585fb..421652018918 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 120bb95624b4..775b0a842507 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.2.0", - "@sentry/rollup-plugin": "2.2.0", - "@sentry/vite-plugin": "2.2.0", - "@sentry/webpack-plugin": "2.2.0", + "@sentry/esbuild-plugin": "2.2.1", + "@sentry/rollup-plugin": "2.2.1", + "@sentry/vite-plugin": "2.2.1", + "@sentry/webpack-plugin": "2.2.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 432dc45da0df..d6275930acdb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.2.0", + "version": "2.2.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 7d80291bc37f..7b5b96ea2e86 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index eb506d994295..4d88cbf3280d 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", - "@sentry/bundler-plugin-core": "2.2.0", - "@sentry/esbuild-plugin": "2.2.0", - "@sentry/rollup-plugin": "2.2.0", - "@sentry/vite-plugin": "2.2.0", - "@sentry/webpack-plugin": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/esbuild-plugin": "2.2.1", + "@sentry/rollup-plugin": "2.2.1", + "@sentry/vite-plugin": "2.2.1", + "@sentry/webpack-plugin": "2.2.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index cb8119a7857b..844c49c35d59 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ea60b9f0fce7..d1c19c654b11 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.2.0", + "version": "2.2.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 0fceb850e5d8..63eab81408dd 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.2.0", + "version": "2.2.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b43c8398ba83..28b70a54891f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.2.0", + "version": "2.2.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f84809341d96..ee9b96b172e4 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.2.0", + "version": "2.2.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.0", + "@sentry/bundler-plugin-core": "2.2.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.0", + "@sentry-internal/eslint-config": "2.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 7bc04dc118ecbada065dcb6750dc39a27c11c453 Mon Sep 17 00:00:00 2001 From: Jake Kenneally Date: Thu, 8 Jun 2023 11:47:28 -0400 Subject: [PATCH 225/640] fix: Update commentUseStrictRegex to be lazy instead of greedy (#309) --- packages/bundler-plugin-core/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index ebd26c0e6bc9..646352d128ea 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -344,7 +344,7 @@ export function createRollupDebugIdInjectionHooks() { // As an additional complication `"use strict";`s may come after any number of comments. const commentUseStrictRegex = // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. - /^(?:\s*|\/\*(?:.|\r|\n)*\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; + /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; const match = code.match(commentUseStrictRegex)?.[0]; From 68472b5c37a266fb786bfeaaf6783474c78600ec Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Jun 2023 11:05:26 +0200 Subject: [PATCH 226/640] fix(esbuild): Don't use namespace for esbuild proxy resolving (#311) --- packages/esbuild-plugin/src/index.ts | 29 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index da7dd4da1e36..3f40193640b0 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -38,7 +38,6 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { function esbuildDebugIdInjectionPlugin(): UnpluginOptions { const pluginName = "sentry-esbuild-debug-id-injection-plugin"; - const proxyNamespace = "sentry-debug-id-proxy"; const stubNamespace = "sentry-debug-id-stub"; return { @@ -49,23 +48,31 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { onResolve({ filter: /.*/ }, (args) => { if (args.kind !== "entry-point") { return; + } else { + return { + pluginName, + // needs to be an abs path, otherwise esbuild will complain + path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), + pluginData: { + isProxyResolver: true, + originalPath: args.path, + originalResolveDir: args.resolveDir, + }, + }; } - return { - pluginName, - path: args.path, - namespace: proxyNamespace, - pluginData: { - originalPath: args.path, - originalResolveDir: args.resolveDir, - }, - }; }); - onLoad({ filter: /.*/, namespace: proxyNamespace }, (args) => { + onLoad({ filter: /.*/ }, (args) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (!(args.pluginData?.isProxyResolver as undefined | boolean)) { + return null; + } + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const originalPath = args.pluginData.originalPath as string; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const originalResolveDir = args.pluginData.originalResolveDir as string; + return { loader: "js", pluginName, From bdfbfa6f4a8fe6c82f038e7e40117dd49967fc78 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Jun 2023 11:12:16 +0200 Subject: [PATCH 227/640] meta: Update changelog for 2.2.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cfda46965bb..b9749ccef45e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.2.2 + +- fix(esbuild): Don't use namespace for esbuild proxy resolving (#311) +- fix: Update commentUseStrictRegex to be lazy instead of greedy (#309) + +Work in this release contributed by @jdk2pq. Thank you for your contribution! + ## 2.2.1 - fix(esbuild): Inject different debug IDs into different output bundles (#301) From d8a47a055c7ea41c8b6741fa0eec4b13dcf79b3c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 12 Jun 2023 09:17:20 +0000 Subject: [PATCH 228/640] release: 2.2.2 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 5147f7111470..b62afa933b3f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.2.1", + "version": "2.2.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index fc4d3638b0a1..f3cf0fb5b727 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.2.1", + "version": "2.2.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 421652018918..c5f2891b063a 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 775b0a842507..01f331d7d1fe 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.2.1", - "@sentry/rollup-plugin": "2.2.1", - "@sentry/vite-plugin": "2.2.1", - "@sentry/webpack-plugin": "2.2.1", + "@sentry/esbuild-plugin": "2.2.2", + "@sentry/rollup-plugin": "2.2.2", + "@sentry/vite-plugin": "2.2.2", + "@sentry/webpack-plugin": "2.2.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d6275930acdb..b0d55c0e1daf 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.2.1", + "version": "2.2.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 7b5b96ea2e86..9a1756790c2b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 4d88cbf3280d..1feb4f048350 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", - "@sentry/bundler-plugin-core": "2.2.1", - "@sentry/esbuild-plugin": "2.2.1", - "@sentry/rollup-plugin": "2.2.1", - "@sentry/vite-plugin": "2.2.1", - "@sentry/webpack-plugin": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/esbuild-plugin": "2.2.2", + "@sentry/rollup-plugin": "2.2.2", + "@sentry/vite-plugin": "2.2.2", + "@sentry/webpack-plugin": "2.2.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 844c49c35d59..71f635b916eb 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d1c19c654b11..d1e3d101095e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.2.1", + "version": "2.2.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 63eab81408dd..5cd271144da5 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 28b70a54891f..e5a7766b45e9 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.2.1", + "version": "2.2.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index ee9b96b172e4..6b1a9538da23 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.2.1", + "version": "2.2.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.1", + "@sentry/bundler-plugin-core": "2.2.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.1", + "@sentry-internal/eslint-config": "2.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From d7f191ca90b3164c205119cfe52202925cad0a49 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Jun 2023 12:07:56 +0200 Subject: [PATCH 229/640] feat: Add `filesToDeleteAfterUpload` alias for `deleteFilesAfterUpload` (#313) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 8 ++++---- packages/bundler-plugin-core/src/index.ts | 4 +++- packages/bundler-plugin-core/src/sentry/telemetry.ts | 5 ++++- packages/bundler-plugin-core/src/types.ts | 12 ++++++++++++ .../dev-utils/src/generate-documentation-table.ts | 2 +- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 84f8278760bf..c9b5b4b50602 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -23,7 +23,7 @@ interface DebugIdUploadPluginOptions { handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; - deleteFilesAfterUpload?: string | string[]; + filesToDeleteAfterUpload?: string | string[]; sentryCliOptions: { url: string; authToken: string; @@ -46,7 +46,7 @@ export function createDebugIdUploadFunction({ sentryClient, sentryCliOptions, rewriteSourcesHook, - deleteFilesAfterUpload, + filesToDeleteAfterUpload, }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { const artifactBundleUploadTransaction = sentryHub.startTransaction({ @@ -157,11 +157,11 @@ export function createDebugIdUploadFunction({ uploadSpan.finish(); } - if (deleteFilesAfterUpload) { + if (filesToDeleteAfterUpload) { const deleteGlobSpan = artifactBundleUploadTransaction.startChild({ description: "delete-glob", }); - const filePathsToDelete = await glob(deleteFilesAfterUpload, { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { absolute: true, nodir: true, }); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 646352d128ea..84424480c137 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -222,7 +222,9 @@ export function sentryUnpluginFactory({ createDebugIdUploadFunction({ assets: options.sourcemaps?.assets, ignore: options.sourcemaps?.ignore, - deleteFilesAfterUpload: options.sourcemaps?.deleteFilesAfterUpload, + filesToDeleteAfterUpload: + options.sourcemaps?.filesToDeleteAfterUpload ?? + options.sourcemaps?.deleteFilesAfterUpload, dist: options.release.dist, releaseName: options.release.name, logger: logger, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 528fd13a24ab..a25c17975599 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -83,7 +83,10 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund // Miscelaneous options hub.setTag("custom-error-handler", !!errorHandler); hub.setTag("sourcemaps-assets", !!sourcemaps?.assets); - hub.setTag("delete-after-upload", !!sourcemaps?.deleteFilesAfterUpload); + hub.setTag( + "delete-after-upload", + !!sourcemaps?.deleteFilesAfterUpload || !!sourcemaps?.filesToDeleteAfterUpload + ); hub.setTag("node", process.version); hub.setTag("platform", process.platform); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index e33c91cbef08..9235d28f36f9 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -125,8 +125,20 @@ export interface Options { * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) * * Use the `debug` option to print information about which files end up being deleted. + * + * @deprecated Use `filesToDeleteAfterUpload` instead. */ + // TODO(v3): Remove this option. deleteFilesAfterUpload?: string | string[]; + + /** + * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. + * + * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * + * Use the `debug` option to print information about which files end up being deleted. + */ + filesToDeleteAfterUpload?: string | string[]; }; /** diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index e7f36c26c7dd..a22ac8c6976f 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -94,7 +94,7 @@ errorHandler: (err) => { "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nDefaults to making all sources relative to `process.cwd()` while building.", }, { - name: "deleteFilesAfterUpload", + name: "filesToDeleteAfterUpload", type: "string | string[]", fullDescription: "A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", From 2c8e290ef1b5c3a0f573ceeea25b790b720f7336 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 13 Jun 2023 14:40:59 +0200 Subject: [PATCH 230/640] feat: Log upon successful upload (#314) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index c9b5b4b50602..0e978ee669c2 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -155,6 +155,7 @@ export function createDebugIdUploadFunction({ ); uploadSpan.finish(); + logger.info("Successfully uploaded source maps to Sentry"); } if (filesToDeleteAfterUpload) { From 64fe2c19768ddefb1b83dbbd8ac8f4f936c4441e Mon Sep 17 00:00:00 2001 From: Stephen Broadley Date: Wed, 14 Jun 2023 12:02:19 +0100 Subject: [PATCH 231/640] feat: Sort globbed files to ensure deterministic bundle IDs (#318) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/debug-id-upload.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 0e978ee669c2..fd50a17dbb5b 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -89,6 +89,10 @@ export function createDebugIdUploadFunction({ debugIdChunkFilePath.endsWith(".cjs") ); + // The order of the files output by glob() is not deterministic + // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent + debugIdChunkFilePaths.sort(); + if (Array.isArray(assets) && assets.length === 0) { logger.debug( "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." From d5dc44163b5441fdb5992ebf70c2ff6ac9a9d94f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 14 Jun 2023 14:37:39 +0200 Subject: [PATCH 232/640] fix: Use `SENTRY_RELEASE` environment variable to set `release.name` option (#317) --- packages/bundler-plugin-core/src/options-mapping.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 49a078047e22..04ff712d2468 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -21,7 +21,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { sourcemaps: userOptions.sourcemaps, release: { ...userOptions.release, - name: userOptions.release?.name ?? determineReleaseName(), + name: userOptions.release?.name ?? process.env["SENTRY_RELEASE"] ?? determineReleaseName(), inject: userOptions.release?.inject ?? true, create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, From 743bb1b0207db0be1828982a15e7a350e2410210 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Jun 2023 15:53:10 +0200 Subject: [PATCH 233/640] fix(esbuild): Don't override user code with proxy module (#322) --- packages/bundler-plugin-core/src/index.ts | 3 +- packages/esbuild-plugin/src/index.ts | 7 ++++ .../fixtures/basic-release-injection/setup.ts | 1 + .../build-information-injection/setup.ts | 1 + .../disabled-release-injection/setup.ts | 1 + .../dont-mess-up-user-code.test.ts | 40 +++++++++++++++++++ .../dont-mess-up-user-code/input/import.js | 4 ++ .../dont-mess-up-user-code/input/index.js | 4 ++ .../fixtures/dont-mess-up-user-code/setup.ts | 12 ++++++ 9 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js create mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js create mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 84424480c137..9f35c814c8ce 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -203,6 +203,8 @@ export function sentryUnpluginFactory({ ); } + plugins.push(debugIdInjectionPlugin()); + if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" @@ -216,7 +218,6 @@ export function sentryUnpluginFactory({ "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." ); } else { - plugins.push(debugIdInjectionPlugin()); plugins.push( debugIdUploadPlugin( createDebugIdUploadFunction({ diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 3f40193640b0..c30b780d8bdd 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -58,6 +58,13 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { originalPath: args.path, originalResolveDir: args.resolveDir, }, + // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse + // the module tree any further down past the proxy module because we're essentially creating a dependency + // loop back to the proxy module. + // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, + // making it re-resolve the entrypoint when it is imported from the proxy module. + // Super confusing? Yes. Works? Apparently... Let's see. + suffix: "?sentryProxyModule=true", }; } }); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts index f7da397aa998..ef32aaf3e0ee 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/setup.ts @@ -5,5 +5,6 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { + telemetry: false, release: { name: "I AM A RELEASE!", create: false }, }); diff --git a/packages/integration-tests/fixtures/build-information-injection/setup.ts b/packages/integration-tests/fixtures/build-information-injection/setup.ts index 901200d7eab6..3b260c9c7163 100644 --- a/packages/integration-tests/fixtures/build-information-injection/setup.ts +++ b/packages/integration-tests/fixtures/build-information-injection/setup.ts @@ -8,5 +8,6 @@ createCjsBundles({ index: entryPointPath }, outputDir, { release: { name: "build-information-injection-test", }, + telemetry: false, _experiments: { injectBuildInformation: true }, }); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts index 759db2f6ca3f..84548ae6085b 100644 --- a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts +++ b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts @@ -5,6 +5,7 @@ const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); const outputDir = path.resolve(__dirname, "out"); createCjsBundles({ index: entryPointPath }, outputDir, { + telemetry: false, release: { name: "I AM A RELEASE!", inject: false, create: false }, project: "releasesProject", org: "releasesOrg", 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 new file mode 100644 index 000000000000..bf1c3b2298c1 --- /dev/null +++ b/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts @@ -0,0 +1,40 @@ +import childProcess from "child_process"; +import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +/** + * Runs a node file in a seprate process. + * + * @param bundlePath Path of node file to run + * @returns Stdout of the process + */ +function checkBundle(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput).toMatch("I am import!"); + expect(processOutput).toMatch("I am index!"); +} + +test("esbuild bundle", () => { + expect.assertions(2); + checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); +}); + +test("rollup bundle", () => { + expect.assertions(2); + checkBundle(path.join(__dirname, "out", "rollup", "index.js")); +}); + +test("vite bundle", () => { + expect.assertions(2); + checkBundle(path.join(__dirname, "out", "vite", "index.js")); +}); + +testIfNodeMajorVersionIsLessThan18("webpack 4 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")); +}); diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts b/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts new file mode 100644 index 000000000000..04689b2b370a --- /dev/null +++ b/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts @@ -0,0 +1,12 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const entryPointPath = path.resolve(__dirname, "input", "index.js"); +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + telemetry: false, + release: { name: "I am release!", create: false }, + project: "releasesProject", + org: "releasesOrg", +}); From dee55bb01957cdd48d94f6ad48b21d5058964111 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Jun 2023 16:47:14 +0200 Subject: [PATCH 234/640] docs: Fix anchor tags in READMEs (#324) --- packages/dev-utils/src/generate-documentation-table.ts | 6 ++++-- packages/esbuild-plugin/src/index.ts | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index a22ac8c6976f..9b12b6f8c6ee 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -356,7 +356,9 @@ function generateTableOfContents( return nodes .map((node) => { const id = `${parentId}-${node.name.toLowerCase()}`; - let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id})`; + let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id + .replace(/\./g, "") + .toLowerCase()})`; if (node.children && depth <= 0) { output += "\n"; output += generateTableOfContents(depth + 1, id, node.children); @@ -375,7 +377,7 @@ function generateDescriptions( .map((node) => { const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; const id = `${parentId}-${node.name.toLowerCase()}`; - let output = `### \`${name}\` + let output = `### \`${name}\` ${node.type === undefined ? "" : `Type: \`${node.type}\``} diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index c30b780d8bdd..8e6fd3c9159a 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -51,8 +51,6 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { } else { return { pluginName, - // needs to be an abs path, otherwise esbuild will complain - path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), pluginData: { isProxyResolver: true, originalPath: args.path, From db8e34707c3252cac9fd8a987badfacf7e310547 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 16 Jun 2023 11:35:48 +0200 Subject: [PATCH 235/640] fix: Fix esbuild debug ID generation (#325) --- packages/bundler-plugin-core/src/utils.ts | 8 ++- .../bundler-plugin-core/test/utils.test.ts | 2 +- packages/esbuild-plugin/src/index.ts | 7 ++- .../debug-id-injection.test.ts | 62 +++++++++++++++++++ .../debug-id-injection/input/bundle1.js | 5 ++ .../debug-id-injection/input/bundle2.js | 5 ++ .../fixtures/debug-id-injection/setup.ts | 16 +++++ 7 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts create mode 100644 packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js create mode 100644 packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js create mode 100644 packages/integration-tests/fixtures/debug-id-injection/setup.ts diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 16cb2e1bd7fe..cdafa84d876b 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -175,6 +175,11 @@ export function stringToUUID(str: string): string { const md5sum = crypto.createHash("md5"); md5sum.update(str); const md5Hash = md5sum.digest("hex"); + + // Position 16 is fixed to either 8, 9, a, or b in the uuid v4 spec (10xx in binary) + // RFC 4122 section 4.4 + const v4variant = ["8", "9", "a", "b"][md5Hash.substring(16, 17).charCodeAt(0) % 4] as string; + return ( md5Hash.substring(0, 8) + "-" + @@ -182,7 +187,8 @@ export function stringToUUID(str: string): string { "-4" + md5Hash.substring(13, 16) + "-" + - md5Hash.substring(16, 20) + + v4variant + + md5Hash.substring(17, 20) + "-" + md5Hash.substring(20) ).toLowerCase(); diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index ad5a6af40e14..d587432ba7c5 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -172,6 +172,6 @@ describe("getDependencies", () => { describe("stringToUUID", () => { test("should return a deterministic UUID", () => { - expect(stringToUUID("Nothing personnel kid")).toBe("52c7a762-5ddf-49a7-6f16-6874a8cb2512"); + expect(stringToUUID("Nothing personnel kid")).toBe("52c7a762-5ddf-49a7-af16-6874a8cb2512"); }); }); diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 8e6fd3c9159a..4e4bf88f8497 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -51,6 +51,8 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { } else { return { pluginName, + // needs to be an abs path, otherwise esbuild will complain + path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), pluginData: { isProxyResolver: true, originalPath: args.path, @@ -81,11 +83,12 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { return { loader: "js", pluginName, + // We need to use JSON.stringify below so that any escape backslashes stay escape backslashes, in order not to break paths on windows contents: ` import "_sentry-debug-id-injection-stub"; - import * as OriginalModule from "${originalPath}"; + import * as OriginalModule from ${JSON.stringify(originalPath)}; export default OriginalModule.default; - export * from "${originalPath}";`, + export * from ${JSON.stringify(originalPath)};`, resolveDir: originalResolveDir, }; }); 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 new file mode 100644 index 000000000000..96f39589bc04 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts @@ -0,0 +1,62 @@ +/* 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"; + +function checkBundle(bundlePath1: string, bundlePath2: string): string[] { + const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); + const debugIdMap1 = JSON.parse(process1Output) as Record; + const debugIds1 = Object.values(debugIdMap1); + expect(debugIds1.length).toBeGreaterThan(0); + expect(debugIds1).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + + const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); + const debugIdMap2 = JSON.parse(process2Output) as Record; + const debugIds2 = Object.values(debugIdMap2); + expect(debugIds2.length).toBeGreaterThan(0); + expect(debugIds2).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + + expect(debugIds1).not.toEqual(debugIds2); + + return [...debugIds1, ...debugIds2]; +} + +test("esbuild bundle", () => { + checkBundle( + path.join(__dirname, "out", "esbuild", "bundle1.js"), + path.join(__dirname, "out", "esbuild", "bundle2.js") + ); +}); + +test("rollup bundle", () => { + checkBundle( + path.join(__dirname, "out", "rollup", "bundle1.js"), + path.join(__dirname, "out", "rollup", "bundle2.js") + ); +}); + +test("vite bundle", () => { + checkBundle( + path.join(__dirname, "out", "vite", "bundle1.js"), + path.join(__dirname, "out", "vite", "bundle2.js") + ); +}); + +testIfNodeMajorVersionIsLessThan18("webpack 4 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") + ); +}); diff --git a/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js b/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js new file mode 100644 index 000000000000..b6aa931ae685 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js @@ -0,0 +1,5 @@ +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryDebugIds)); + +// Just so the two bundles generate different hashes: +global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js b/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js new file mode 100644 index 000000000000..97e6dbd93d42 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js @@ -0,0 +1,5 @@ +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryDebugIds)); + +// Just so the two bundles generate different hashes: +global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/debug-id-injection/setup.ts b/packages/integration-tests/fixtures/debug-id-injection/setup.ts new file mode 100644 index 000000000000..5748ce1e738f --- /dev/null +++ b/packages/integration-tests/fixtures/debug-id-injection/setup.ts @@ -0,0 +1,16 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle1: path.resolve(__dirname, "input", "bundle1.js"), + bundle2: path.resolve(__dirname, "input", "bundle2.js"), + }, + outputDir, + { + telemetry: false, + release: { name: "I AM A RELEASE!", create: false }, + } +); From d09ed80fe70eb381aac92d17909759f37df151ee Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 16 Jun 2023 16:20:55 +0200 Subject: [PATCH 236/640] feat(webpack): Generate deterministic debug IDs (#321) --- packages/bundler-plugin-core/src/index.ts | 2 + .../deterministic-debug-ids/build-rollup.ts | 19 +++++ .../deterministic-debug-ids/build-vite.ts | 21 +++++ .../deterministic-debug-ids/build-webpack4.ts | 25 ++++++ .../deterministic-debug-ids/build-webpack5.ts | 26 ++++++ .../deterministic-debug-ids.test.ts | 82 +++++++++++++++++++ .../deterministic-debug-ids/input/.gitignore | 1 + .../deterministic-debug-ids/input/index.js | 4 + .../deterministic-debug-ids/plugin-options.ts | 4 + .../scripts/run-fixture-setups.ts | 5 +- packages/webpack-plugin/src/index.ts | 18 +++- 11 files changed, 204 insertions(+), 3 deletions(-) create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js create mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 9f35c814c8ce..0132b73e3612 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -398,4 +398,6 @@ export function getDebugIdSnippet(debugId: string): string { return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } +export { stringToUUID } from "./utils"; + export type { Options } from "./types"; diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts new file mode 100644 index 000000000000..c21a0ff7e148 --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts @@ -0,0 +1,19 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import * as path from "path"; +import * as rollup from "rollup"; +import pluginOptions from "./plugin-options"; + +void rollup + .rollup({ + input: { + index: path.join(__dirname, "input", "index.js"), + }, + plugins: [sentryRollupPlugin(pluginOptions)], + }) + .then((bundle) => + bundle.write({ + dir: path.join(__dirname, "out", "rollup"), + format: "cjs", + exports: "named", + }) + ); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts new file mode 100644 index 000000000000..4d53ff980ec5 --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import * as path from "path"; +import * as vite from "vite"; +import pluginOptions from "./plugin-options"; + +void vite.build({ + clearScreen: false, + build: { + outDir: path.join(__dirname, "out", "vite"), + rollupOptions: { + input: { + index: path.join(__dirname, "input", "index.js"), + }, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(pluginOptions)], +}); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts new file mode 100644 index 000000000000..e6e60b5cc7c1 --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts @@ -0,0 +1,25 @@ +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/build-webpack5.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts new file mode 100644 index 000000000000..37bb553d8865 --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts @@ -0,0 +1,26 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import * as path from "path"; +import { webpack as webpack5 } from "webpack5"; +import pluginOptions from "./plugin-options"; + +webpack5( + { + cache: false, + entry: { + index: path.join(__dirname, "input", "index.js"), + }, + output: { + path: path.join(__dirname, "out", "webpack5"), + library: { + type: "commonjs", + }, + }, + mode: "production", + 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 new file mode 100644 index 000000000000..9a557f40390a --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts @@ -0,0 +1,82 @@ +/* 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); + +function executeAndGetDebugIds(bundlePath: string): string[] { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + const debugIdMap = JSON.parse(processOutput) as Record; + return Object.values(debugIdMap); +} + +beforeEach(async () => { + await fs.writeFile( + path.join(__dirname, "input", "dynamic-variable.js"), + `global.dynamicVariable = 1;` + ); +}); + +afterEach(async () => { + await fs.unlink(path.join(__dirname, "input", "dynamic-variable.js")); +}); + +describe("Same debug IDs for multiple identical builds", () => { + const bundlers = ["rollup", "vite", "webpack5"]; + + if (parseInt(nodejsMajorversion) < 18) { + bundlers.push("webpack4"); + } + + test.each(bundlers)( + "%s", + (bundler) => { + // build + childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); + + const debugIds1 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); + + // rebuild + childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); + + const debugIds2 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); + + expect(debugIds1).toStrictEqual(debugIds2); + }, + 20_000 + ); +}); + +describe("Different debug IDs for different builds", () => { + const bundlers = ["rollup", "vite", "webpack5"]; + + if (parseInt(nodejsMajorversion) < 18) { + bundlers.push("webpack4"); + } + + test.each(bundlers)( + "%s", + async (bundler) => { + // build + childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); + + const debugIds1 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); + + await fs.writeFile( + path.join(__dirname, "input", "dynamic-variable.js"), + `global.dynamicVariable = 2;` + ); + + // rebuild + childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); + + const debugIds2 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); + + expect(debugIds1).not.toEqual(debugIds2); + }, + 20_000 + ); +}); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore b/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore new file mode 100644 index 000000000000..0776f7c70b43 --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore @@ -0,0 +1 @@ +dynamic-variable.js diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js b/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js new file mode 100644 index 000000000000..6b835c6d083a --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js @@ -0,0 +1,4 @@ +import "./dynamic-variable"; + +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryDebugIds)); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts new file mode 100644 index 000000000000..dd575328a4ef --- /dev/null +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts @@ -0,0 +1,4 @@ +export default { + telemetry: false, + release: { name: "release", create: false }, +}; diff --git a/packages/integration-tests/scripts/run-fixture-setups.ts b/packages/integration-tests/scripts/run-fixture-setups.ts index 0020b3769951..7bd4ec6f74e3 100644 --- a/packages/integration-tests/scripts/run-fixture-setups.ts +++ b/packages/integration-tests/scripts/run-fixture-setups.ts @@ -6,5 +6,8 @@ const fixturePaths = fs .map((fixtureDir) => path.join(__dirname, "..", "fixtures", fixtureDir)); fixturePaths.forEach((fixturePath) => { - require(path.join(fixturePath, "setup.ts")); + const setupScriptPath = path.join(fixturePath, "setup.ts"); + if (fs.existsSync(setupScriptPath)) { + require(setupScriptPath); + } }); diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 1a2ddd6a6477..36b2ddf3d906 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,4 +1,9 @@ -import { getDebugIdSnippet, Options, sentryUnpluginFactory } from "@sentry/bundler-plugin-core"; +import { + getDebugIdSnippet, + Options, + sentryUnpluginFactory, + stringToUUID, +} from "@sentry/bundler-plugin-core"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; import { v4 as uuidv4 } from "uuid"; @@ -7,6 +12,12 @@ import { v4 as uuidv4 } from "uuid"; // @ts-ignore webpack is a peer dep import * as webback4or5 from "webpack"; +interface BannerPluginCallbackArg { + chunk?: { + hash?: string; + }; +} + function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { return { name: "sentry-webpack-release-injection-plugin", @@ -42,7 +53,10 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { new BannerPlugin({ raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, - banner: () => getDebugIdSnippet(uuidv4()), + banner: (arg?: BannerPluginCallbackArg) => { + const debugId = arg?.chunk?.hash ? stringToUUID(arg.chunk.hash) : uuidv4(); + return getDebugIdSnippet(debugId); + }, }) ); }, From 9e0d31469238aa558bba721f292d918e18036720 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 16 Jun 2023 16:26:17 +0200 Subject: [PATCH 237/640] meta: Update changelog for 2.3.0 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9749ccef45e..d6490979a4bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.3.0 + +- feat(webpack): Generate deterministic debug IDs (#321) +- feat: Add `filesToDeleteAfterUpload` alias for `deleteFilesAfterUpload` (#313) +- feat: Sort globbed files to ensure deterministic bundle IDs (#318) +- fix(esbuild): Don't override user code with proxy module (#322) +- fix(esbuild): Fix debug ID generation (#325) +- fix: Use `SENTRY_RELEASE` environment variable to set `release.name` option (#317) + +Work in this release contributed by @smbroadley. Thank you for your contribution! + ## 2.2.2 - fix(esbuild): Don't use namespace for esbuild proxy resolving (#311) From 1c9873266d0731d3f8e344f3582c39f1dc69a09d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 19 Jun 2023 09:13:15 +0200 Subject: [PATCH 238/640] docs: Fix anchor links in readme --- packages/dev-utils/src/generate-documentation-table.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 9b12b6f8c6ee..b5549d031b10 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -357,7 +357,7 @@ function generateTableOfContents( .map((node) => { const id = `${parentId}-${node.name.toLowerCase()}`; let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id - .replace(/\./g, "") + .replace(/-/g, "") .toLowerCase()})`; if (node.children && depth <= 0) { output += "\n"; From 3e24f22462f7857f52107f4461f97dbdaf087fe3 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 19 Jun 2023 07:41:15 +0000 Subject: [PATCH 239/640] release: 2.3.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index b62afa933b3f..aebcab96ecc3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.2.2", + "version": "2.3.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index f3cf0fb5b727..9d561c2e7301 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.2.2", + "version": "2.3.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c5f2891b063a..5a16cb9d7b42 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 01f331d7d1fe..1efa5ad14c77 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.2.2", - "@sentry/rollup-plugin": "2.2.2", - "@sentry/vite-plugin": "2.2.2", - "@sentry/webpack-plugin": "2.2.2", + "@sentry/esbuild-plugin": "2.3.0", + "@sentry/rollup-plugin": "2.3.0", + "@sentry/vite-plugin": "2.3.0", + "@sentry/webpack-plugin": "2.3.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index b0d55c0e1daf..f045bd984039 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.2.2", + "version": "2.3.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/bundler-plugin-core": "2.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9a1756790c2b..a9c8468eb09c 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1feb4f048350..0c178bff64e7 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", - "@sentry/bundler-plugin-core": "2.2.2", - "@sentry/esbuild-plugin": "2.2.2", - "@sentry/rollup-plugin": "2.2.2", - "@sentry/vite-plugin": "2.2.2", - "@sentry/webpack-plugin": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/esbuild-plugin": "2.3.0", + "@sentry/rollup-plugin": "2.3.0", + "@sentry/vite-plugin": "2.3.0", + "@sentry/webpack-plugin": "2.3.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 71f635b916eb..2c897808bb42 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/bundler-plugin-core": "2.3.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d1e3d101095e..321e186c79e7 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.2.2", + "version": "2.3.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/bundler-plugin-core": "2.3.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5cd271144da5..0b05a7ca726a 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.2.2", + "version": "2.3.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e5a7766b45e9..47398f8045fc 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.2.2", + "version": "2.3.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/bundler-plugin-core": "2.3.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6b1a9538da23..efa45127dd7d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.2.2", + "version": "2.3.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.2.2", + "@sentry/bundler-plugin-core": "2.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.2.2", + "@sentry-internal/eslint-config": "2.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 456e3191e1a3af32f7859d2ca51cc8010bfc4793 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 19 Jun 2023 09:49:09 +0200 Subject: [PATCH 240/640] docs: Fix anchor links in readme --- packages/dev-utils/src/generate-documentation-table.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index b5549d031b10..798c4456cfdd 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -370,13 +370,11 @@ function generateTableOfContents( function generateDescriptions( parentName: string | undefined, - parentId: string, nodes: OptionDocumentation[] ): string { return nodes .map((node) => { const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; - const id = `${parentId}-${node.name.toLowerCase()}`; let output = `### \`${name}\` ${node.type === undefined ? "" : `Type: \`${node.type}\``} @@ -384,7 +382,7 @@ ${node.type === undefined ? "" : `Type: \`${node.type}\``} ${node.fullDescription} `; if (node.children) { - output += generateDescriptions(name, id, node.children); + output += generateDescriptions(name, node.children); } return output; }) @@ -394,8 +392,8 @@ ${node.fullDescription} export function generateOptionsDocumentation(): string { return `## Options -${generateTableOfContents(0, "option", options)} +${generateTableOfContents(0, "", options)} -${generateDescriptions(undefined, "option", options)} +${generateDescriptions(undefined, options)} `; } From 5aee8501870e4b9bd2670b12ed8c1731c3b5f64e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 20 Jun 2023 09:36:52 +0200 Subject: [PATCH 241/640] docs: Update minimum supported Node.js version to 14 (#327) --- MIGRATION.md | 1 + packages/bundler-plugin-core/package.json | 2 +- packages/esbuild-plugin/package.json | 2 +- packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 294c6cafcc5d..d6bc43692efe 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -11,6 +11,7 @@ This document serves as a migration guide, documenting all breaking changes betw - Removed `customHeader` option in favor of `headers` option which allows for multiple headers to be attached to outgoing requests. - The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` - Removed the `configFile` option. Options should now be set explicitly or via environment variables. +- The minimum supported Node.js version is now 14 and newer. ## Upgrading from 1.x to 2.x (Webpack Plugin Only) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9d561c2e7301..7f49f0621037 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -84,7 +84,7 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 10" + "node": ">= 14" }, "sideEffects": [ "./sentry-release-injection-file.js", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index f045bd984039..49aa0246a129 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -76,6 +76,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 10" + "node": ">= 14" } } diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 321e186c79e7..8316e1b0ecab 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -78,6 +78,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 10" + "node": ">= 14" } } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 47398f8045fc..98c521b9cd11 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -74,6 +74,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 10" + "node": ">= 14" } } diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index efa45127dd7d..49870375c87d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -81,6 +81,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 10" + "node": ">= 14" } } From 0760aa2ae7aa0289bb68d19059f311c3d2f9c1cb Mon Sep 17 00:00:00 2001 From: Emil Sivervik Date: Thu, 22 Jun 2023 10:25:17 +0200 Subject: [PATCH 242/640] docs: Fix typo (#329) --- packages/bundler-plugin-core/src/types.ts | 2 +- packages/dev-utils/src/generate-documentation-table.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 9235d28f36f9..d67ffa81e983 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -50,7 +50,7 @@ export interface Options { silent?: boolean; /** - * When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. + * When an error occurs during release creation or sourcemaps upload, the plugin will call this function. * * By default, the plugin will simply throw an error, thereby stopping the bundling process. * If an `errorHandler` callback is provided, compilation will continue, unless an error is diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 798c4456cfdd..2009b4852e71 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -46,7 +46,7 @@ const options: OptionDocumentation[] = [ { name: "errorHandler", type: "(err: Error) => void", - fullDescription: `When an error occurs during rlease creation or sourcemaps upload, the plugin will call this function. + fullDescription: `When an error occurs during release creation or sourcemaps upload, the plugin will call this function. By default, the plugin will simply throw an error, thereby stopping the bundling process. If an \`errorHandler\` callback is provided, compilation will continue, unless an error is thrown in the provided callback. From 47bd10e719b944ddab95b16cf851ab83d7f6f7a8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 23 Jun 2023 13:27:08 +0200 Subject: [PATCH 243/640] ref: Use full git SHA for release name (#330) --- packages/bundler-plugin-core/src/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index cdafa84d876b..dc37f0fb797b 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -200,7 +200,7 @@ export function stringToUUID(str: string): string { export function determineReleaseName(): string | undefined { let gitRevision: string | undefined; try { - gitRevision = childProcess.execSync("git rev-parse --short HEAD").toString().trim(); + gitRevision = childProcess.execSync("git rev-parse HEAD").toString().trim(); } catch (e) { // noop } From e5a1a3610636716ec6110a9b1213c34e8e16a77f Mon Sep 17 00:00:00 2001 From: Sam Hulick Date: Fri, 23 Jun 2023 17:11:20 -0500 Subject: [PATCH 244/640] chore: Update instructions to install Vite plugin via pnpm (#331) --- packages/vite-plugin/README_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index 961ebff3c838..7ae4bffff636 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -29,7 +29,7 @@ yarn add @sentry/vite-plugin --dev Using pnpm: ```bash -pnpm install @sentry/vite-plugin --dev +pnpm add -D @sentry/vite-plugin ``` ## Example From 121446f62143ede4e527c154e6c7b506700f1f08 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 28 Jun 2023 09:46:54 +0200 Subject: [PATCH 245/640] feat: Add configuration via `.env.sentry-build-plugin` file (#333) --- packages/bundler-plugin-core/package.json | 1 + packages/bundler-plugin-core/src/index.ts | 26 ++++++++++++++----- packages/esbuild-plugin/README_TEMPLATE.md | 4 +++ .../scripts/run-fixture-setups.ts | 5 +++- packages/playground/.gitignore | 1 + packages/rollup-plugin/README_TEMPLATE.md | 4 +++ packages/vite-plugin/README_TEMPLATE.md | 4 +++ packages/webpack-plugin/README_TEMPLATE.md | 4 +++ yarn.lock | 5 ++++ 9 files changed, 47 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7f49f0621037..0c295d8111e2 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -55,6 +55,7 @@ "@sentry/cli": "^2.17.0", "@sentry/node": "7.53.1", "@sentry/utils": "7.53.1", + "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0132b73e3612..b4c4db519228 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -18,6 +18,7 @@ import { stringToUUID, stripQueryAndHashFromPath, } from "./utils"; +import * as dotenv from "dotenv"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; @@ -58,6 +59,25 @@ export function sentryUnpluginFactory({ debugIdUploadPlugin, }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions, unpluginMetaContext) => { + const logger = createLogger({ + prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, + silent: userOptions.silent ?? false, + debug: userOptions.debug ?? false, + }); + + const dotenvResult = dotenv.config({ + path: path.join(process.cwd(), ".env.sentry-build-plugin"), + }); + + // Ignore "file not found" errors but throw all others + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Accessing `code` on error should be safe + if (dotenvResult.error && dotenvResult.error.code !== "ENOENT") { + throw dotenvResult.error; + } else if (dotenvResult.parsed) { + logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); + } + const options = normalizeUserOptions(userOptions); if (unpluginMetaContext.watchMode || options.disable) { @@ -86,12 +106,6 @@ export function sentryUnpluginFactory({ } }); - const logger = createLogger({ - prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, - silent: options.silent, - debug: options.debug, - }); - // Set the User-Agent that Sentry CLI will use when interacting with Sentry process.env[ "SENTRY_PIPELINE" diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md index 041084664239..67273dcfe125 100644 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -56,6 +56,10 @@ require("esbuild").build({ #OPTIONS_SECTION_INSERT# +### Configuration File + +As an additional configuration method, the Sentry esbuild plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. + ## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/packages/integration-tests/scripts/run-fixture-setups.ts b/packages/integration-tests/scripts/run-fixture-setups.ts index 7bd4ec6f74e3..07b0678f8775 100644 --- a/packages/integration-tests/scripts/run-fixture-setups.ts +++ b/packages/integration-tests/scripts/run-fixture-setups.ts @@ -1,5 +1,6 @@ import fs from "fs"; import path from "path"; +import childProcess from "child_process"; const fixturePaths = fs .readdirSync(path.join(__dirname, "..", "fixtures")) @@ -8,6 +9,8 @@ const fixturePaths = fs fixturePaths.forEach((fixturePath) => { const setupScriptPath = path.join(fixturePath, "setup.ts"); if (fs.existsSync(setupScriptPath)) { - require(setupScriptPath); + childProcess.execSync(`yarn ts-node --transpileOnly ${setupScriptPath}`, { + stdio: "inherit", + }); } }); diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore index 01984667f620..4e8ee24b497a 100644 --- a/packages/playground/.gitignore +++ b/packages/playground/.gitignore @@ -1,3 +1,4 @@ out/ .env +.env.sentry-build-plugin scripts/request-logger-logs/*.txt diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md index dbece44e324a..dd41bc3050a9 100644 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -58,6 +58,10 @@ export default { #OPTIONS_SECTION_INSERT# +### Configuration File + +As an additional configuration method, the Sentry Rollup plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. + ## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index 7ae4bffff636..1110e07111c7 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -63,6 +63,10 @@ export default defineConfig({ #OPTIONS_SECTION_INSERT# +### Configuration File + +As an additional configuration method, the Sentry Vite plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. + ## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index 07f4b55ec3f6..5465b1ae7c1a 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -57,6 +57,10 @@ module.exports = { #OPTIONS_SECTION_INSERT# +### Configuration File + +As an additional configuration method, the Sentry Webpack plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. + ## More information - [Sentry Documentation](https://docs.sentry.io/quickstart/) diff --git a/yarn.lock b/yarn.lock index 9ce828f86aed..2295746fefbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5080,6 +5080,11 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" +dotenv@^16.3.1: + version "16.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + dotenv@~10.0.0: version "10.0.0" resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" From e8c55b13bf1bff188eefa4be4e838d645673dd89 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 28 Jun 2023 09:51:53 +0200 Subject: [PATCH 246/640] meta: Update changelog for 2.4.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6490979a4bc..9def9e6cf849 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.4.0 + +- docs: Update instructions to install Vite plugin via pnpm (#331) +- docs: Update minimum supported Node.js version to 14 (#327) +- feat: Add configuration via `.env.sentry-build-plugin` file (#333) +- ref: Use full git SHA for release name (#330) + +Work in this release contributed by @ffxsam and @emilsivervik. Thank you for your contributions! + ## 2.3.0 - feat(webpack): Generate deterministic debug IDs (#321) From 161e81962516a116fd8d1cca5cc775385dd952c7 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 28 Jun 2023 08:42:47 +0000 Subject: [PATCH 247/640] release: 2.4.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index aebcab96ecc3..58ef33fc64a3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.3.0", + "version": "2.4.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 0c295d8111e2..18f2a1c8ee4d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.3.0", + "version": "2.4.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 5a16cb9d7b42..0431d20510db 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 1efa5ad14c77..4f900a140316 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.3.0", - "@sentry/rollup-plugin": "2.3.0", - "@sentry/vite-plugin": "2.3.0", - "@sentry/webpack-plugin": "2.3.0", + "@sentry/esbuild-plugin": "2.4.0", + "@sentry/rollup-plugin": "2.4.0", + "@sentry/vite-plugin": "2.4.0", + "@sentry/webpack-plugin": "2.4.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 49aa0246a129..5319487da5a2 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.3.0", + "version": "2.4.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/bundler-plugin-core": "2.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index a9c8468eb09c..71933d973dd2 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 0c178bff64e7..a96c3372d549 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", - "@sentry/bundler-plugin-core": "2.3.0", - "@sentry/esbuild-plugin": "2.3.0", - "@sentry/rollup-plugin": "2.3.0", - "@sentry/vite-plugin": "2.3.0", - "@sentry/webpack-plugin": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/esbuild-plugin": "2.4.0", + "@sentry/rollup-plugin": "2.4.0", + "@sentry/vite-plugin": "2.4.0", + "@sentry/webpack-plugin": "2.4.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 2c897808bb42..ff63051755f6 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/bundler-plugin-core": "2.4.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 8316e1b0ecab..9d14ed839f5c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.3.0", + "version": "2.4.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/bundler-plugin-core": "2.4.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 0b05a7ca726a..c06d6e53fd73 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.3.0", + "version": "2.4.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 98c521b9cd11..da70d1338202 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.3.0", + "version": "2.4.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/bundler-plugin-core": "2.4.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 49870375c87d..a47ec2aca450 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.3.0", + "version": "2.4.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.3.0", + "@sentry/bundler-plugin-core": "2.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.3.0", + "@sentry-internal/eslint-config": "2.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 751a0cbdeb7b9df5dc8651f8c613350ccd5009fe Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 3 Jul 2023 16:11:39 +0200 Subject: [PATCH 248/640] feat: Add experimental module metadata injection (#334) --- packages/bundler-plugin-core/src/index.ts | 24 ++++ packages/bundler-plugin-core/src/types.ts | 25 ++++ packages/bundler-plugin-core/src/utils.ts | 18 +++ .../metadata-injection/input/bundle.js | 3 + .../metadata-injection.test.ts | 26 +++++ .../fixtures/metadata-injection/setup.ts | 17 +++ .../utils/create-cjs-bundles.ts | 108 ++++++++++-------- packages/webpack-plugin/src/index.ts | 22 ++++ 8 files changed, 193 insertions(+), 50 deletions(-) create mode 100644 packages/integration-tests/fixtures/metadata-injection/input/bundle.js create mode 100644 packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts create mode 100644 packages/integration-tests/fixtures/metadata-injection/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b4c4db519228..7873f943c88b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -12,6 +12,7 @@ import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry import { Options } from "./types"; import { generateGlobalInjectorCode, + generateModuleMetadataInjectorCode, getDependencies, getPackageJson, parseMajorVersion, @@ -22,6 +23,7 @@ import * as dotenv from "dotenv"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; + moduleMetadataInjectionPlugin?: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: () => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; } @@ -55,6 +57,7 @@ interface SentryUnpluginFactoryOptions { */ export function sentryUnpluginFactory({ releaseInjectionPlugin, + moduleMetadataInjectionPlugin, debugIdInjectionPlugin, debugIdUploadPlugin, }: SentryUnpluginFactoryOptions) { @@ -173,6 +176,27 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } + if (moduleMetadataInjectionPlugin && options._experiments.moduleMetadata) { + let metadata: object; + if (typeof options._experiments.moduleMetadata === "function") { + const args = { + org: options.org, + project: options.project, + release: options.release.name, + }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + metadata = options._experiments.moduleMetadata(args); + } else { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + metadata = options._experiments.moduleMetadata; + } + + const injectionCode = generateModuleMetadataInjectorCode(metadata); + plugins.push(moduleMetadataInjectionPlugin(injectionCode)); + } else if (options._experiments.moduleMetadata) { + logger.warn("'moduleMetadata' is currently only supported by '@sentry/webpack-plugin'"); + } + if (!options.release.name) { logger.warn( "No release name provided. Will not create release. Please set the `release.name` option to identifiy your release." diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index d67ffa81e983..339dc32aa847 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -241,9 +241,34 @@ export interface Options { * Defaults to `false`. */ injectBuildInformation?: boolean; + + /** + * Metadata associated with this module. + * + * The metadata is serialized and can be looked up at runtime by filename. + * + * Metadata can either be passed directly or alternatively a callback can be provided that will be + * called with the following arguments: + * - `org`: The organization slug. + * - `project`: The project slug. + * - `release`: The release name. + * + * + * Note: This option is currently only supported by `@sentry/webpack-plugin`. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleMetadata?: any | ModuleMetadataCallback; }; } +export interface ModuleMetadataCallbackArgs { + org?: string; + project?: string; + release?: string; +} + +export type ModuleMetadataCallback = (args: ModuleMetadataCallbackArgs) => object; + export type IncludeEntry = { /** * One or more paths to scan for files to upload. diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index dc37f0fb797b..479e470c0bcb 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -264,6 +264,24 @@ export function generateGlobalInjectorCode({ return code; } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function generateModuleMetadataInjectorCode(metadata: any) { + // The code below is mostly ternary operators because it saves bundle size. + // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) + return ` + var _global2 = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof self !== 'undefined' ? + self : + {}; + + _global2._sentryModuleMetadata = _global2._sentryModuleMetadata || {}; + _global2._sentryModuleMetadata[new Error().stack] = ${JSON.stringify(metadata)};`; +} + function getBuildInformation() { const packageJson = getPackageJson(); diff --git a/packages/integration-tests/fixtures/metadata-injection/input/bundle.js b/packages/integration-tests/fixtures/metadata-injection/input/bundle.js new file mode 100644 index 000000000000..bf1389636d9e --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-injection/input/bundle.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryModuleMetadata)); diff --git a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts new file mode 100644 index 000000000000..83640d1bab8b --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -0,0 +1,26 @@ +/* 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"; + +function checkBundle(bundlePath: string): void { + const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + + const map = JSON.parse(output) as Record; + + // There should be only one key in the map + expect(Object.values(map)).toHaveLength(1); + // The value should be the expected metadata + expect(Object.values(map)).toEqual([{ team: "frontend" }]); +} + +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")); + }); +}); diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts new file mode 100644 index 000000000000..1a7fc221e57b --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-injection/setup.ts @@ -0,0 +1,17 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + _experiments: { + moduleMetadata: { team: "frontend" }, + }, + }, + ["webpack4", "webpack5"] +); diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 5f85d8ecede9..1569b3ea9d28 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -16,47 +16,53 @@ const nodejsMajorversion = process.version.split(".")[0]!.slice(1); export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, - sentryUnpluginOptions: Options + sentryUnpluginOptions: Options, + plugins: string[] = [] ): void { - void vite.build({ - clearScreen: false, - build: { - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js", + if (plugins.length === 0 || plugins.includes("vite")) { + void vite.build({ + clearScreen: false, + build: { + outDir: path.join(outFolder, "vite"), + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, }, }, - }, - plugins: [sentryVitePlugin(sentryUnpluginOptions)], - }); - - void rollup - .rollup({ - input: entrypoints, - plugins: [sentryRollupPlugin(sentryUnpluginOptions)], - }) - .then((bundle) => - bundle.write({ - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", + plugins: [sentryVitePlugin(sentryUnpluginOptions)], + }); + } + if (plugins.length === 0 || plugins.includes("rollup")) { + void rollup + .rollup({ + input: entrypoints, + plugins: [sentryRollupPlugin(sentryUnpluginOptions)], }) - ); + .then((bundle) => + bundle.write({ + dir: path.join(outFolder, "rollup"), + format: "cjs", + exports: "named", + }) + ); + } - void esbuild.build({ - entryPoints: entrypoints, - outdir: path.join(outFolder, "esbuild"), - plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], - minify: true, - bundle: true, - format: "cjs", - }); + if (plugins.length === 0 || plugins.includes("esbuild")) { + void esbuild.build({ + entryPoints: entrypoints, + outdir: path.join(outFolder, "esbuild"), + plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], + minify: true, + bundle: true, + format: "cjs", + }); + } // Webpack 4 doesn't work on Node.js versions >= 18 - if (parseInt(nodejsMajorversion) < 18) { + if (parseInt(nodejsMajorversion) < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { webpack4( { mode: "production", @@ -77,23 +83,25 @@ export function createCjsBundles( ); } - webpack5( - { - cache: false, - entry: entrypoints, - output: { - path: path.join(outFolder, "webpack5"), - library: { - type: "commonjs", + if (plugins.length === 0 || plugins.includes("webpack5")) { + webpack5( + { + cache: false, + entry: entrypoints, + output: { + path: path.join(outFolder, "webpack5"), + library: { + type: "commonjs", + }, }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], }, - mode: "production", - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], - }, - (err) => { - if (err) { - throw err; + (err) => { + if (err) { + throw err; + } } - } - ); + ); + } } diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 36b2ddf3d906..5e98be0fad3c 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -84,8 +84,30 @@ function webpackDebugIdUploadPlugin( }; } +function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { + return { + name: "sentry-webpack-module-metadata-injection-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + banner: injectionCode, + }) + ); + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: webpackReleaseInjectionPlugin, + moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin, debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, debugIdUploadPlugin: webpackDebugIdUploadPlugin, }); From 9cafe764f717d8f81219394065427d0ea76caab8 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 7 Jul 2023 09:19:07 +0200 Subject: [PATCH 249/640] docs: Remove misleading documentation (#339) Co-authored-by: Lukas Stracke --- packages/bundler-plugin-core/src/types.ts | 1 - packages/dev-utils/src/generate-documentation-table.ts | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 339dc32aa847..17d20c24a8e1 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -87,7 +87,6 @@ export interface Options { /** * Options for source maps uploading. - * Leave this option undefined if you do not want to upload source maps to Sentry. */ sourcemaps?: { /** diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 2009b4852e71..93378150be92 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -72,8 +72,7 @@ errorHandler: (err) => { }, { name: "sourcemaps", - fullDescription: - "Options for source maps uploading. Leave this option undefined if you do not want to upload source maps to Sentry.", + fullDescription: "Options for uploading source maps.", children: [ { name: "assets", From 0c45c98faf61e7be3cc646d3dad2fa81b7a581d8 Mon Sep 17 00:00:00 2001 From: Chun Fei Lung Date: Fri, 7 Jul 2023 13:58:54 +0200 Subject: [PATCH 250/640] fix: Fix 'identifiy' typo in log messages (#341) --- packages/bundler-plugin-core/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7873f943c88b..d6062796243c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -166,7 +166,7 @@ export function sentryUnpluginFactory({ ); } else if (!options.release.name) { logger.warn( - "No release name provided. Will not inject release. Please set the `release.name` option to identifiy your release." + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." ); } else { const injectionCode = generateGlobalInjectorCode({ @@ -199,7 +199,7 @@ export function sentryUnpluginFactory({ if (!options.release.name) { logger.warn( - "No release name provided. Will not create release. Please set the `release.name` option to identifiy your release." + "No release name provided. Will not create release. Please set the `release.name` option to identify your release." ); } else if (!options.authToken) { logger.warn( From 2f3aec8d9409f225c35086025b5c24401faf1cba Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Jul 2023 13:26:14 +0200 Subject: [PATCH 251/640] deps: Bump and unpin Sentry SDK deps (#353) --- packages/bundler-plugin-core/package.json | 4 +- yarn.lock | 75 ++++++++++++----------- 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 18f2a1c8ee4d..fcf31cf38eca 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,8 +53,8 @@ }, "dependencies": { "@sentry/cli": "^2.17.0", - "@sentry/node": "7.53.1", - "@sentry/utils": "7.53.1", + "@sentry/node": "^7.60.0", + "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", diff --git a/yarn.lock b/yarn.lock index 2295746fefbb..df59489ef829 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2249,15 +2249,15 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry-internal/tracing@7.53.1": - version "7.53.1" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.53.1.tgz#85517ba93ee721424c865706f7ff4eaab1569e6d" - integrity sha512-a4H4rvVdz0XDGgNfRqc7zg6rMt2P1P05xBmgfIfztYy94Vciw1QMdboNiT7einr8ra8wogdEaK4Pe2AzYAPBJQ== - dependencies: - "@sentry/core" "7.53.1" - "@sentry/types" "7.53.1" - "@sentry/utils" "7.53.1" - tslib "^1.9.3" +"@sentry-internal/tracing@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.60.0.tgz#4f101d936a45965b086e042a3fba7ec7683cc034" + integrity sha512-2qvxmR954H+K7u4o92sS2u+hntzshem9XwfHAqDvBe51arNbFVy8LfJTJ5fffgZq/6jXlozCO0/6aR5yLR5mBg== + dependencies: + "@sentry/core" "7.60.0" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sentry/cli@^2.17.0": version "2.18.1" @@ -2279,14 +2279,14 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/core@7.53.1": - version "7.53.1" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.53.1.tgz#c091a9d7fd010f8a2cb1dd71d949a8e453e35d4c" - integrity sha512-DAH8IJNORJJ7kQLqsZuhMkN6cwJjXzFuuUoZor7IIDHIHjtl51W+2F3Stg3+I3ZoKDfJfUNKqhipk2WZjG0FBg== +"@sentry/core@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.60.0.tgz#c256d1305b52210d608e71de8d8f365ca9377f15" + integrity sha512-B02OlFMoqdkfDZlbQfmk7tL2vObShofk7ySd/7mp+oRdUuCvX0tyrGlwI87YJvd8YWSZOCKINs3aVYivw/b6gg== dependencies: - "@sentry/types" "7.53.1" - "@sentry/utils" "7.53.1" - tslib "^1.9.3" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sentry/integrations@7.50": version "7.50.0" @@ -2312,29 +2312,29 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/node@7.53.1": - version "7.53.1" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.53.1.tgz#d4c47477cf4305e352b511635d1d3d4d160e8bd7" - integrity sha512-B4ax8sRd54xj4ad+4eY2EOKNt0Mh1NjuLW1zUKS8HW3h0bmuaDFzGuhEVvEY5H4SaV6tZKj1c0dvnMnyUbYkhA== +"@sentry/node@^7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.60.0.tgz#9db8fa0e71a4365b2a93a3504f2e48a38eeaae1b" + integrity sha512-I27gr7BSkdT1uwDPcbdPm7+w2yke5tojVGgothtvKfql1en4/cJZmk2bkvO2Di41+EF0UrTlUgLQff5X/q24WQ== dependencies: - "@sentry-internal/tracing" "7.53.1" - "@sentry/core" "7.53.1" - "@sentry/types" "7.53.1" - "@sentry/utils" "7.53.1" + "@sentry-internal/tracing" "7.60.0" + "@sentry/core" "7.60.0" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" - tslib "^1.9.3" + tslib "^2.4.1 || ^1.9.3" "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/types@7.53.1": - version "7.53.1" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.53.1.tgz#3eefbad851f2d0deff67285d7e976d23d7d06a41" - integrity sha512-/ijchRIu+jz3+j/zY+7KRPfLSCY14fTx5xujjbOdmEKjmIHQmwPBdszcQm40uwofrR8taV4hbt5MFN+WnjCkCw== +"@sentry/types@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.60.0.tgz#e3e5f16436feff802b1b126a16dba537000cef55" + integrity sha512-MSEuF9YjE0j+UKdqee2AzcNlMnShVNTkCB2Wnng6Bc5hHhn4fyYeTLbuFpNxL0ffN65lxblaWx6doDsMcvRxcA== "@sentry/utils@7.50.0": version "7.50.0" @@ -2344,13 +2344,13 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" -"@sentry/utils@7.53.1": - version "7.53.1" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.53.1.tgz#b1f9f1dd4de7127287ad5027c2bd1133c5590486" - integrity sha512-DKJA1LSUOEv4KOR828MzVuLh+drjeAgzyKgN063OEKmnirgjgRgNNS8wUgwpG0Tn2k6ANZGCwrdfzPeSBxshKg== +"@sentry/utils@7.60.0", "@sentry/utils@^7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.60.0.tgz#a96d772dcc2d007f73a5bcf67dcc66f6a7085736" + integrity sha512-Oc/PQqzeNDOSy4ZzVj6h9U+GEGRkg2PEVn9PC2V9/v3HDD20mndFqR/S2B5OOgDb/6pNGyz8XiZYI5rb29WFHA== dependencies: - "@sentry/types" "7.53.1" - tslib "^1.9.3" + "@sentry/types" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" @@ -11884,6 +11884,11 @@ tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== +"tslib@^2.4.1 || ^1.9.3": + version "2.6.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From 3487cda5fc3021e5b59a50836922b3f0e301c788 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 25 Jul 2023 13:48:40 +0200 Subject: [PATCH 252/640] meta: Update changelog for 2.5.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9def9e6cf849..7552ae67be6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.5.0 + +- deps: Bump and unpin Sentry SDK deps (#353) +- docs: Remove misleading documentation (#339) +- feat: Add experimental module metadata injection (#334) +- fix: Fix 'identifiy' typo in log messages (#341) + +Work in this release contributed by @chunfeilung. Thank you for your contribution! + ## 2.4.0 - docs: Update instructions to install Vite plugin via pnpm (#331) From aad4bebbca86682bbdc8370a3798809c058bc242 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 25 Jul 2023 12:03:58 +0000 Subject: [PATCH 253/640] release: 2.5.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 58ef33fc64a3..550b17c5b9aa 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.4.0", + "version": "2.5.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index fcf31cf38eca..60da94b0d1b1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.4.0", + "version": "2.5.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 0431d20510db..7b59b586c626 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4f900a140316..ce58d79e0899 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.4.0", - "@sentry/rollup-plugin": "2.4.0", - "@sentry/vite-plugin": "2.4.0", - "@sentry/webpack-plugin": "2.4.0", + "@sentry/esbuild-plugin": "2.5.0", + "@sentry/rollup-plugin": "2.5.0", + "@sentry/vite-plugin": "2.5.0", + "@sentry/webpack-plugin": "2.5.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5319487da5a2..f30782bea7e2 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.4.0", + "version": "2.5.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/bundler-plugin-core": "2.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 71933d973dd2..67bf5e470fd5 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index a96c3372d549..8951ee9b8beb 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", - "@sentry/bundler-plugin-core": "2.4.0", - "@sentry/esbuild-plugin": "2.4.0", - "@sentry/rollup-plugin": "2.4.0", - "@sentry/vite-plugin": "2.4.0", - "@sentry/webpack-plugin": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/esbuild-plugin": "2.5.0", + "@sentry/rollup-plugin": "2.5.0", + "@sentry/vite-plugin": "2.5.0", + "@sentry/webpack-plugin": "2.5.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index ff63051755f6..56fb20596818 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/bundler-plugin-core": "2.5.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 9d14ed839f5c..af0755ab63ff 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.4.0", + "version": "2.5.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/bundler-plugin-core": "2.5.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c06d6e53fd73..b8d33164b021 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index da70d1338202..242221d2eefb 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.4.0", + "version": "2.5.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/bundler-plugin-core": "2.5.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index a47ec2aca450..ed745316d0d0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.4.0", + "version": "2.5.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.4.0", + "@sentry/bundler-plugin-core": "2.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.4.0", + "@sentry-internal/eslint-config": "2.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From cee09b7f66860e0e96c2c168bdd5358602cfe582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Mon, 31 Jul 2023 10:25:23 +0200 Subject: [PATCH 254/640] deps: Bump sentry-cli to 2.20.1 to fix debugid injection issue (#355) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 60da94b0d1b1..43b50b43cb31 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,7 +52,7 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^2.17.0", + "@sentry/cli": "^2.20.1", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", diff --git a/yarn.lock b/yarn.lock index df59489ef829..4a2880965875 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2259,10 +2259,10 @@ "@sentry/utils" "7.60.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/cli@^2.17.0": - version "2.18.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.18.1.tgz#c44f189a1a72a83087a297c5fcc7668f86dd4308" - integrity sha512-lc/dX/cvcmznWNbLzDbzxn224vwY5zLIDBe3yOO6Usg3CDgkZZ3xfjN4AIUZwkiTEPIOELodrOfdoMxqpXyYDw== +"@sentry/cli@^2.20.1": + version "2.20.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.20.1.tgz#e0a04d9c0153fc8606f90ee3f6b17abed81a85bc" + integrity sha512-HxzwFQf5gPKfksyj2ZhUicg/avHLCOd/EjZTERSXv5V7GohaTlsNxf9Sbvv/nsu8479vogTllSU6xg5BgXAVUw== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" From fb69aab547920d5f000367831cf8645817fba944 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 8 Aug 2023 13:17:33 +0200 Subject: [PATCH 255/640] feat: Allow ommiting `org` when using organization auth token (#368) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 2 +- packages/bundler-plugin-core/src/index.ts | 4 ++-- .../bundler-plugin-core/src/plugins/release-management.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index fd50a17dbb5b..8ef972847c35 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -27,7 +27,7 @@ interface DebugIdUploadPluginOptions { sentryCliOptions: { url: string; authToken: string; - org: string; + org?: string; project: string; vcsRemote: string; silent: boolean; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d6062796243c..cba4db4f8eca 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -205,7 +205,7 @@ export function sentryUnpluginFactory({ logger.warn( "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" ); - } else if (!options.org) { + } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." ); @@ -247,7 +247,7 @@ export function sentryUnpluginFactory({ logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" ); - } else if (!options.org) { + } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." ); diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index e9cc402b3c10..eecd0a28efde 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -21,7 +21,7 @@ interface ReleaseManagementPluginOptions { sentryCliOptions: { url: string; authToken: string; - org: string; + org?: string; project: string; vcsRemote: string; silent: boolean; From 590fecd2be3074b13e0d9cd4218c52b203619d1d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 8 Aug 2023 14:04:41 +0200 Subject: [PATCH 256/640] ref: Make asset detection more robust (#369) --- packages/bundler-plugin-core/src/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index cba4db4f8eca..18f3d607f2f5 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -20,6 +20,7 @@ import { stripQueryAndHashFromPath, } from "./utils"; import * as dotenv from "dotenv"; +import { glob } from "glob"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; @@ -420,7 +421,11 @@ export function createRollupDebugIdUploadHooks( ) { if (outputOptions.dir) { const outputDir = outputOptions.dir; - const buildArtifacts = Object.keys(bundle).map((asset) => path.join(outputDir, asset)); + const buildArtifacts = await glob(["/**/*.js", "/**/*.js.map"], { + root: outputDir, + absolute: true, + nodir: true, + }); await upload(buildArtifacts); } else if (outputOptions.file) { await upload([outputOptions.file]); From d597eab4bda30a3a494cf84fa7b2873aff8ca5f5 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 8 Aug 2023 14:15:39 +0200 Subject: [PATCH 257/640] meta: Update changelog for 2.6.0 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7552ae67be6a..3bb0a4c20b41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.6.0 + +- deps: Bump sentry-cli to 2.20.1 (#355) +- feat: Allow ommiting `org` when using organization auth token (#368) +- ref: Make asset detection more robust (#369) + ## 2.5.0 - deps: Bump and unpin Sentry SDK deps (#353) From df6c40a638967cd420670f61e6497b14c034498d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 8 Aug 2023 12:26:28 +0000 Subject: [PATCH 258/640] release: 2.6.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 550b17c5b9aa..e955d80d0e3a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.5.0", + "version": "2.6.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 43b50b43cb31..b382e3e293a1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.5.0", + "version": "2.6.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 7b59b586c626..30172e43d982 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index ce58d79e0899..0149327c8c7b 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.5.0", - "@sentry/rollup-plugin": "2.5.0", - "@sentry/vite-plugin": "2.5.0", - "@sentry/webpack-plugin": "2.5.0", + "@sentry/esbuild-plugin": "2.6.0", + "@sentry/rollup-plugin": "2.6.0", + "@sentry/vite-plugin": "2.6.0", + "@sentry/webpack-plugin": "2.6.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index f30782bea7e2..5b566f2fe184 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.5.0", + "version": "2.6.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/bundler-plugin-core": "2.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 67bf5e470fd5..38a0df07332d 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8951ee9b8beb..4c79cafc1b10 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", - "@sentry/bundler-plugin-core": "2.5.0", - "@sentry/esbuild-plugin": "2.5.0", - "@sentry/rollup-plugin": "2.5.0", - "@sentry/vite-plugin": "2.5.0", - "@sentry/webpack-plugin": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/esbuild-plugin": "2.6.0", + "@sentry/rollup-plugin": "2.6.0", + "@sentry/vite-plugin": "2.6.0", + "@sentry/webpack-plugin": "2.6.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 56fb20596818..c2949ea2c8ea 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/bundler-plugin-core": "2.6.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index af0755ab63ff..4d24e158752d 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.5.0", + "version": "2.6.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/bundler-plugin-core": "2.6.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b8d33164b021..20f25fef378f 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.5.0", + "version": "2.6.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 242221d2eefb..fb4373d78db6 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.5.0", + "version": "2.6.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/bundler-plugin-core": "2.6.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index ed745316d0d0..8257cd3da079 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.5.0", + "version": "2.6.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.5.0", + "@sentry/bundler-plugin-core": "2.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.5.0", + "@sentry-internal/eslint-config": "2.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 789668df0688672b6ca1897fc812622b47e8812c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 9 Aug 2023 10:26:56 +0200 Subject: [PATCH 259/640] fix: Don't crash on failed delete after upload (#373) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 8ef972847c35..6aea968ad23a 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -181,7 +181,13 @@ export function createDebugIdUploadFunction({ }); await Promise.all( filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }) + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occured while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) ) ); deleteSpan.finish(); From b27988dd9dfc2f57c0df1898a796e8e012f0a7f4 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 9 Aug 2023 11:10:04 +0200 Subject: [PATCH 260/640] ref: Add used experiments to telemetry (#372) --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index a25c17975599..e6f02b767cce 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -70,6 +70,9 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund ); } + hub.setTag("module-metadata", !!options._experiments.moduleMetadata); + hub.setTag("inject-build-information", !!options._experiments.injectBuildInformation); + // Optional release pipeline steps hub.setTag("clean-artifacts", release.cleanArtifacts); if (release.setCommits) { From c73294574e30c138122de8abdeb4f926e260ee28 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 9 Aug 2023 16:00:57 +0200 Subject: [PATCH 261/640] meta: Update changelog for 2.6.1 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bb0a4c20b41..6c32e4d1b609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.6.1 + +- fix: Don't crash on failed delete after upload (#373) + ## 2.6.0 - deps: Bump sentry-cli to 2.20.1 (#355) From 3096be1d69123eaca1058672b09c61a875078917 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 9 Aug 2023 14:12:23 +0000 Subject: [PATCH 262/640] release: 2.6.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index e955d80d0e3a..e6cf32d9d981 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.6.0", + "version": "2.6.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b382e3e293a1..adf466468dd9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.6.0", + "version": "2.6.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 30172e43d982..5be2ca19e384 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 0149327c8c7b..37ebcf97d968 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.6.0", - "@sentry/rollup-plugin": "2.6.0", - "@sentry/vite-plugin": "2.6.0", - "@sentry/webpack-plugin": "2.6.0", + "@sentry/esbuild-plugin": "2.6.1", + "@sentry/rollup-plugin": "2.6.1", + "@sentry/vite-plugin": "2.6.1", + "@sentry/webpack-plugin": "2.6.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5b566f2fe184..56bfebf563a1 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.6.0", + "version": "2.6.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 38a0df07332d..2de93ae7465c 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 4c79cafc1b10..6a67fb61f598 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", - "@sentry/bundler-plugin-core": "2.6.0", - "@sentry/esbuild-plugin": "2.6.0", - "@sentry/rollup-plugin": "2.6.0", - "@sentry/vite-plugin": "2.6.0", - "@sentry/webpack-plugin": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/esbuild-plugin": "2.6.1", + "@sentry/rollup-plugin": "2.6.1", + "@sentry/vite-plugin": "2.6.1", + "@sentry/webpack-plugin": "2.6.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index c2949ea2c8ea..8c86101daa54 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 4d24e158752d..f94f0fd78170 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.6.0", + "version": "2.6.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 20f25fef378f..0c0761cbfa17 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.6.0", + "version": "2.6.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index fb4373d78db6..5034645de7a9 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.6.0", + "version": "2.6.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8257cd3da079..9e579cb3006d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.6.0", + "version": "2.6.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.0", + "@sentry/bundler-plugin-core": "2.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.0", + "@sentry-internal/eslint-config": "2.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 27352521b9dbda151dee05ed946e53ac7f46035a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 10 Aug 2023 15:24:38 +0200 Subject: [PATCH 263/640] fix: Fix regex in source map locating heuristic via `sourceMappingURL` (#376) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 6aea968ad23a..31b1b72fbd45 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -295,7 +295,7 @@ async function determineSourceMapPathFromBundle( logger: Logger ): Promise { // 1. try to find source map at `sourceMappingURL` location - const sourceMappingUrlMatch = bundleSource.match(/^\/\/# sourceMappingURL=(.*)$/); + const sourceMappingUrlMatch = bundleSource.match(/^\s*\/\/# sourceMappingURL=(.*)$/m); if (sourceMappingUrlMatch) { const sourceMappingUrl = path.normalize(sourceMappingUrlMatch[1] as string); if (path.isAbsolute(sourceMappingUrl)) { From e5a0fa18a691506e95c8614792993579ab5e9cfa Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 10 Aug 2023 16:49:24 +0200 Subject: [PATCH 264/640] fix: Make sourceMappingURL heuristic more resilient (#378) --- .../src/debug-id-upload.ts | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 31b1b72fbd45..b29b561dd44c 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -298,10 +298,35 @@ async function determineSourceMapPathFromBundle( const sourceMappingUrlMatch = bundleSource.match(/^\s*\/\/# sourceMappingURL=(.*)$/m); if (sourceMappingUrlMatch) { const sourceMappingUrl = path.normalize(sourceMappingUrlMatch[1] as string); - if (path.isAbsolute(sourceMappingUrl)) { - return sourceMappingUrl; + + let isUrl; + let isSupportedUrl; + try { + const url = new URL(sourceMappingUrl); + isUrl = true; + isSupportedUrl = url.protocol === "file:"; + } catch { + isUrl = false; + isSupportedUrl = false; + } + + let absoluteSourceMapPath; + if (isSupportedUrl) { + absoluteSourceMapPath = sourceMappingUrl; + } else if (isUrl) { + return; + } else if (path.isAbsolute(sourceMappingUrl)) { + absoluteSourceMapPath = sourceMappingUrl; } else { - return path.join(path.dirname(bundlePath), sourceMappingUrl); + absoluteSourceMapPath = path.join(path.dirname(bundlePath), sourceMappingUrl); + } + + try { + // Check if the file actually exists + await util.promisify(fs.access)(absoluteSourceMapPath); + return absoluteSourceMapPath; + } catch (e) { + // noop } } From 5568d92f31c127d9513470ae3bc4327fa0398ec1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 11 Aug 2023 09:36:09 +0200 Subject: [PATCH 265/640] meta: Update changelog for 2.6.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c32e4d1b609..dc406741710e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.6.2 + +- fix: Fix regex in source map locating heuristic via `sourceMappingURL` (#376) +- fix: Make sourceMappingURL heuristic more resilient (#378) + +Thanks to @tomyam1 for identifying and pinpointing a bug that was hard to spot! + ## 2.6.1 - fix: Don't crash on failed delete after upload (#373) From 1e681b0fe08c46ff2e39f98a01beee6f849909ed Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 11 Aug 2023 08:01:21 +0000 Subject: [PATCH 266/640] release: 2.6.2 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index e6cf32d9d981..3bde5014241c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.6.1", + "version": "2.6.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index adf466468dd9..b1a4649211fb 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.6.1", + "version": "2.6.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 5be2ca19e384..67a1e83b3d3d 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 37ebcf97d968..4e880bce68da 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.6.1", - "@sentry/rollup-plugin": "2.6.1", - "@sentry/vite-plugin": "2.6.1", - "@sentry/webpack-plugin": "2.6.1", + "@sentry/esbuild-plugin": "2.6.2", + "@sentry/rollup-plugin": "2.6.2", + "@sentry/vite-plugin": "2.6.2", + "@sentry/webpack-plugin": "2.6.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 56bfebf563a1..c0e9ce5b3219 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.6.1", + "version": "2.6.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2de93ae7465c..c2cd7dcebced 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 6a67fb61f598..597be82058c1 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", - "@sentry/bundler-plugin-core": "2.6.1", - "@sentry/esbuild-plugin": "2.6.1", - "@sentry/rollup-plugin": "2.6.1", - "@sentry/vite-plugin": "2.6.1", - "@sentry/webpack-plugin": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/esbuild-plugin": "2.6.2", + "@sentry/rollup-plugin": "2.6.2", + "@sentry/vite-plugin": "2.6.2", + "@sentry/webpack-plugin": "2.6.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 8c86101daa54..f500c47ba872 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index f94f0fd78170..a713b6e2f81f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.6.1", + "version": "2.6.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 0c0761cbfa17..6e1516fa0dd9 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 5034645de7a9..cb1aa7eb75af 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.6.1", + "version": "2.6.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 9e579cb3006d..dabd9638a957 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.6.1", + "version": "2.6.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.1", + "@sentry/bundler-plugin-core": "2.6.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.1", + "@sentry-internal/eslint-config": "2.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 943d00e3706b5b9d3a4a1ed4ab1a05bdcd65fd44 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 16 Aug 2023 10:32:45 +0200 Subject: [PATCH 267/640] ref: Run upload preparation with maximum concurrency (#379) --- .../src/debug-id-upload.ts | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index b29b561dd44c..690b7807d193 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -105,8 +105,11 @@ export function createDebugIdUploadFunction({ const prepareSpan = artifactBundleUploadTransaction.startChild({ description: "prepare-bundles", }); - await Promise.all( - debugIdChunkFilePaths.map(async (chunkFilePath, chunkIndex): Promise => { + + // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so + // instead we do it with a maximum of 16 concurrent workers + const preparationTasks = debugIdChunkFilePaths.map( + (chunkFilePath, chunkIndex) => async () => { await prepareBundleForDebugIdUpload( chunkFilePath, tmpUploadFolder, @@ -114,8 +117,22 @@ export function createDebugIdUploadFunction({ logger, rewriteSourcesHook ?? defaultRewriteSourcesHook ); - }) + } ); + const workers: Promise[] = []; + const worker = async () => { + while (preparationTasks.length > 0) { + const task = preparationTasks.shift(); + if (task) { + await task(); + } + } + }; + for (let workerIndex = 0; workerIndex < 16; workerIndex++) { + workers.push(worker()); + } + await Promise.all(workers); + prepareSpan.finish(); const files = await fs.promises.readdir(tmpUploadFolder); @@ -251,9 +268,9 @@ export async function prepareBundleForDebugIdUpload( bundleFilePath, bundleContent, logger - ).then(async (sourceMapPath): Promise => { + ).then(async (sourceMapPath) => { if (sourceMapPath) { - return await prepareSourceMapForDebugIdUpload( + await prepareSourceMapForDebugIdUpload( sourceMapPath, path.join(uploadFolder, `${uniqueUploadName}.js.map`), debugId, @@ -263,7 +280,8 @@ export async function prepareBundleForDebugIdUpload( } }); - return Promise.all([writeSourceFilePromise, writeSourceMapFilePromise]); + await writeSourceFilePromise; + await writeSourceMapFilePromise; } /** From d50b12a872f5ffd7e8d10b45872ef560c76b5bb3 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 16 Aug 2023 11:17:18 +0200 Subject: [PATCH 268/640] feat: Add module metadata injection for vite and rollup (#380) --- packages/bundler-plugin-core/src/index.ts | 45 ++++++++++++++++--- .../metadata-injection.test.ts | 8 ++++ .../fixtures/metadata-injection/setup.ts | 2 +- packages/rollup-plugin/src/index.ts | 9 ++++ packages/vite-plugin/src/index.ts | 9 ++++ 5 files changed, 65 insertions(+), 8 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 18f3d607f2f5..e6028c569444 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -371,6 +371,12 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { }; } +// We need to be careful not to inject the snippet before any `"use strict";`s. +// As an additional complication `"use strict";`s may come after any number of comments. +const COMMENT_USE_STRICT_REGEX = + // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. + /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; + export function createRollupDebugIdInjectionHooks() { return { renderChunk(code: string, chunk: { fileName: string }) { @@ -382,13 +388,7 @@ export function createRollupDebugIdInjectionHooks() { const ms = new MagicString(code, { filename: chunk.fileName }); - // We need to be careful not to inject the snippet before any `"use strict";`s. - // As an additional complication `"use strict";`s may come after any number of comments. - const commentUseStrictRegex = - // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. - /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; - - const match = code.match(commentUseStrictRegex)?.[0]; + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; if (match) { // Add injected code after any comments or "use strict" at the beginning of the bundle. @@ -411,6 +411,37 @@ export function createRollupDebugIdInjectionHooks() { }; } +export function createRollupModuleMetadataInjectionHooks(injectionCode: string) { + return { + renderChunk(code: string, chunk: { fileName: string }) { + if ( + [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + ) { + const ms = new MagicString(code, { filename: chunk.fileName }); + + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectionCode); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectionCode); + } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName }), + }; + } else { + return null; // returning null means not modifying the chunk at all + } + }, + }; +} + export function createRollupDebugIdUploadHooks( upload: (buildArtifacts: string[]) => Promise ) { 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 83640d1bab8b..ec1e245a1df7 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -23,4 +23,12 @@ describe("metadata injection", () => { test("webpack 5 bundle", () => { checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); }); + + test("rollup bundle", () => { + checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); + }); + + test("vite bundle", () => { + checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); + }); }); diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts index 1a7fc221e57b..0a7a5e615e29 100644 --- a/packages/integration-tests/fixtures/metadata-injection/setup.ts +++ b/packages/integration-tests/fixtures/metadata-injection/setup.ts @@ -13,5 +13,5 @@ createCjsBundles( moduleMetadata: { team: "frontend" }, }, }, - ["webpack4", "webpack5"] + ["webpack4", "webpack5", "rollup", "vite"] ); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 8357e5c86e20..dab98730eb78 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -2,6 +2,7 @@ import { sentryUnpluginFactory, Options, createRollupReleaseInjectionHooks, + createRollupModuleMetadataInjectionHooks, createRollupDebugIdInjectionHooks, createRollupDebugIdUploadHooks, } from "@sentry/bundler-plugin-core"; @@ -21,6 +22,13 @@ function rollupDebugIdInjectionPlugin(): UnpluginOptions { }; } +function rollupModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { + return { + name: "sentry-rollup-module-metadata-injection-plugin", + rollup: createRollupModuleMetadataInjectionHooks(injectionCode), + }; +} + function rollupDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise ): UnpluginOptions { @@ -33,6 +41,7 @@ function rollupDebugIdUploadPlugin( const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: rollupReleaseInjectionPlugin, debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, + moduleMetadataInjectionPlugin: rollupModuleMetadataInjectionPlugin, debugIdUploadPlugin: rollupDebugIdUploadPlugin, }); diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 9b41a2104aa4..5ee62797b943 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -2,6 +2,7 @@ import { sentryUnpluginFactory, Options, createRollupReleaseInjectionHooks, + createRollupModuleMetadataInjectionHooks, createRollupDebugIdInjectionHooks, createRollupDebugIdUploadHooks, } from "@sentry/bundler-plugin-core"; @@ -22,6 +23,13 @@ function viteDebugIdInjectionPlugin(): UnpluginOptions { }; } +function viteModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { + return { + name: "sentry-vite-module-metadata-injection-plugin", + vite: createRollupModuleMetadataInjectionHooks(injectionCode), + }; +} + function viteDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise ): UnpluginOptions { @@ -34,6 +42,7 @@ function viteDebugIdUploadPlugin( const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: viteReleaseInjectionPlugin, debugIdInjectionPlugin: viteDebugIdInjectionPlugin, + moduleMetadataInjectionPlugin: viteModuleMetadataInjectionPlugin, debugIdUploadPlugin: viteDebugIdUploadPlugin, }); From caa588e82c6ff0fbb4022085f685e45254527b44 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 16 Aug 2023 12:39:21 +0200 Subject: [PATCH 269/640] meta: Update changelog for 0.6.1 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc406741710e..93c7dbaf7718 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -137,6 +137,10 @@ plugin({ - fix(core): Also do debug ID injection for `.cjs` files (#203) - fix: Add typing exports to packages (#208) +## 0.6.1 + +- ref: Run upload preparation with maximum concurrency (#382) + ## 0.6.0 - feat(webpack): Add debug ID injection to the webpack plugin (#198) From 65c621d62948d7bd423ad0e07c4c9126175f24ba Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 16 Aug 2023 13:14:30 +0200 Subject: [PATCH 270/640] meta: Update changelog for 2.7.0 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93c7dbaf7718..0f6253f8844f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.7.0 + +- feat: Add module metadata injection for vite and rollup (#380) +- ref: Run upload preparation with maximum concurrency (#379) + ## 2.6.2 - fix: Fix regex in source map locating heuristic via `sourceMappingURL` (#376) From a1d0e0e53144c8b6d5aae7450735ca00d698a558 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 16 Aug 2023 13:51:20 +0200 Subject: [PATCH 271/640] ref: Emit high resolution source-maps with `magic-string` (#383) --- packages/bundler-plugin-core/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e6028c569444..599bb0aa7e61 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -365,7 +365,7 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { return { code: ms.toString(), - map: ms.generateMap(), + map: ms.generateMap({ hires: true }), }; }, }; @@ -402,7 +402,7 @@ export function createRollupDebugIdInjectionHooks() { return { code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName }), + map: ms.generateMap({ file: chunk.fileName, hires: true }), }; } else { return null; // returning null means not modifying the chunk at all @@ -433,7 +433,7 @@ export function createRollupModuleMetadataInjectionHooks(injectionCode: string) return { code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName }), + map: ms.generateMap({ file: chunk.fileName, hires: true }), }; } else { return null; // returning null means not modifying the chunk at all From 7b4b0b08be11fb81cac1c7900bf9efa954ae61f8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 17 Aug 2023 13:21:30 +0100 Subject: [PATCH 272/640] feat: Add module metadata injection for esbuild (#381) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/types.ts | 3 - packages/esbuild-plugin/src/index.ts | 83 +++++++++++++++++++ .../metadata-injection.test.ts | 4 + .../fixtures/metadata-injection/setup.ts | 2 +- 4 files changed, 88 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 17d20c24a8e1..56b6957c7aad 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -251,9 +251,6 @@ export interface Options { * - `org`: The organization slug. * - `project`: The project slug. * - `release`: The release name. - * - * - * Note: This option is currently only supported by `@sentry/webpack-plugin`. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any moduleMetadata?: any | ModuleMetadataCallback; diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 4e4bf88f8497..5410c26053b1 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -115,6 +115,88 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { }; } +function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { + const pluginName = "sentry-esbuild-module-metadata-injection-plugin"; + const stubNamespace = "sentry-module-metadata-stub"; + + return { + name: pluginName, + + esbuild: { + setup({ onLoad, onResolve }) { + onResolve({ filter: /.*/ }, (args) => { + if (args.kind !== "entry-point") { + return; + } else { + return { + pluginName, + // needs to be an abs path, otherwise esbuild will complain + path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), + pluginData: { + isMetadataProxyResolver: true, + originalPath: args.path, + originalResolveDir: args.resolveDir, + }, + // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse + // the module tree any further down past the proxy module because we're essentially creating a dependency + // loop back to the proxy module. + // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, + // making it re-resolve the entrypoint when it is imported from the proxy module. + // Super confusing? Yes. Works? Apparently... Let's see. + suffix: "?sentryMetadataProxyModule=true", + }; + } + }); + + onLoad({ filter: /.*/ }, (args) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (!(args.pluginData?.isMetadataProxyResolver as undefined | boolean)) { + return null; + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const originalPath = args.pluginData.originalPath as string; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const originalResolveDir = args.pluginData.originalResolveDir as string; + + return { + loader: "js", + pluginName, + // We need to use JSON.stringify below so that any escape backslashes stay escape backslashes, in order not to break paths on windows + contents: ` + import "_sentry-module-metadata-injection-stub"; + import * as OriginalModule from ${JSON.stringify(originalPath)}; + export default OriginalModule.default; + export * from ${JSON.stringify(originalPath)};`, + resolveDir: originalResolveDir, + }; + }); + + onResolve({ filter: /_sentry-module-metadata-injection-stub/ }, (args) => { + return { + path: args.path, + sideEffects: true, + pluginName, + namespace: stubNamespace, + suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved + }; + }); + + onLoad( + { filter: /_sentry-module-metadata-injection-stub/, namespace: stubNamespace }, + () => { + return { + loader: "js", + pluginName, + contents: injectionCode, + }; + } + ); + }, + }, + }; +} + function esbuildDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise ): UnpluginOptions { @@ -135,6 +217,7 @@ function esbuildDebugIdUploadPlugin( const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: esbuildReleaseInjectionPlugin, debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, + moduleMetadataInjectionPlugin: esbuildModuleMetadataInjectionPlugin, debugIdUploadPlugin: esbuildDebugIdUploadPlugin, }); 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 ec1e245a1df7..52243d2c695c 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -24,6 +24,10 @@ describe("metadata injection", () => { checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); }); + test("esbuild bundle", () => { + checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); + }); + test("rollup bundle", () => { checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); }); diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts index 0a7a5e615e29..23e3822c756a 100644 --- a/packages/integration-tests/fixtures/metadata-injection/setup.ts +++ b/packages/integration-tests/fixtures/metadata-injection/setup.ts @@ -13,5 +13,5 @@ createCjsBundles( moduleMetadata: { team: "frontend" }, }, }, - ["webpack4", "webpack5", "rollup", "vite"] + ["webpack4", "webpack5", "esbuild", "rollup", "vite"] ); From a723f7bad53ac5579e6b7c49c515320a10bb2079 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 17 Aug 2023 14:24:06 +0200 Subject: [PATCH 273/640] meta: Update changelog for 2.7.0 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f6253f8844f..98ce56d1620b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,9 @@ ## 2.7.0 +- feat: Add module metadata injection for esbuild (#381) - feat: Add module metadata injection for vite and rollup (#380) +- ref: Emit high resolution source-maps with `magic-string` (#383) - ref: Run upload preparation with maximum concurrency (#379) ## 2.6.2 From 7b61b70b700d859fdccd5075abceeced05f398b3 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 17 Aug 2023 14:50:16 +0200 Subject: [PATCH 274/640] meta: Disable webpack as required name in `.craft.yml` --- .craft.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index 85179f1c2adc..c9dd80616705 100644 --- a/.craft.yml +++ b/.craft.yml @@ -8,7 +8,8 @@ requireNames: - /^sentry-esbuild-plugin-.*\.tgz$/ - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - - /^sentry-webpack-plugin-.*\.tgz$/ + # TEMP + # - /^sentry-webpack-plugin-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ From 9d4ad2517e88ebb4a202a81a482b24d5fa9d6b6d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 18 Aug 2023 13:00:11 +0200 Subject: [PATCH 275/640] meta: Re-enable webpack as required name in `.craft.yml` --- .craft.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.craft.yml b/.craft.yml index c9dd80616705..85179f1c2adc 100644 --- a/.craft.yml +++ b/.craft.yml @@ -8,8 +8,7 @@ requireNames: - /^sentry-esbuild-plugin-.*\.tgz$/ - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - # TEMP - # - /^sentry-webpack-plugin-.*\.tgz$/ + - /^sentry-webpack-plugin-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ From 30391770f71bc332d8b67ff275d9f148544cbbd7 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 18 Aug 2023 11:01:43 +0000 Subject: [PATCH 276/640] release: 2.7.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 3bde5014241c..35ffa20ea4df 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.6.2", + "version": "2.7.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b1a4649211fb..4167a859c600 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.6.2", + "version": "2.7.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 67a1e83b3d3d..b1d50fde09a8 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4e880bce68da..58abeb5665bf 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.6.2", - "@sentry/rollup-plugin": "2.6.2", - "@sentry/vite-plugin": "2.6.2", - "@sentry/webpack-plugin": "2.6.2", + "@sentry/esbuild-plugin": "2.7.0", + "@sentry/rollup-plugin": "2.7.0", + "@sentry/vite-plugin": "2.7.0", + "@sentry/webpack-plugin": "2.7.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c0e9ce5b3219..0ce737f26d5d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.6.2", + "version": "2.7.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/bundler-plugin-core": "2.7.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c2cd7dcebced..406246512026 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 597be82058c1..eb3e08e5de48 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", - "@sentry/bundler-plugin-core": "2.6.2", - "@sentry/esbuild-plugin": "2.6.2", - "@sentry/rollup-plugin": "2.6.2", - "@sentry/vite-plugin": "2.6.2", - "@sentry/webpack-plugin": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/esbuild-plugin": "2.7.0", + "@sentry/rollup-plugin": "2.7.0", + "@sentry/vite-plugin": "2.7.0", + "@sentry/webpack-plugin": "2.7.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index f500c47ba872..9b303090aace 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/bundler-plugin-core": "2.7.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index a713b6e2f81f..6c443b554475 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.6.2", + "version": "2.7.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/bundler-plugin-core": "2.7.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6e1516fa0dd9..b209632acb13 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.6.2", + "version": "2.7.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index cb1aa7eb75af..c3805e01097c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.6.2", + "version": "2.7.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/bundler-plugin-core": "2.7.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index dabd9638a957..85f74571dd4b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.6.2", + "version": "2.7.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.6.2", + "@sentry/bundler-plugin-core": "2.7.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.6.2", + "@sentry-internal/eslint-config": "2.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 479be503d3a29fdfeff4959280caffae85c76de4 Mon Sep 17 00:00:00 2001 From: Anton Donskoy Date: Mon, 28 Aug 2023 10:30:04 +0300 Subject: [PATCH 277/640] fix: Save results of `rewriteSourcesHook` (#390) Co-authored-by: Anton Donskoy --- packages/bundler-plugin-core/src/debug-id-upload.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 690b7807d193..830e6cce047d 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -396,7 +396,7 @@ async function prepareSourceMapForDebugIdUpload( } if (map["sources"] && Array.isArray(map["sources"])) { - map["sources"].map((source: string) => rewriteSourcesHook(source, map)); + map["sources"] = map["sources"].map((source: string) => rewriteSourcesHook(source, map)); } try { From 1ebe5614e61ca1806455aa6feaaa910e09dbb765 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 4 Sep 2023 10:37:55 +0100 Subject: [PATCH 278/640] docs: Point to org auth token page (#393) Co-authored-by: Francesco Novy --- packages/bundler-plugin-core/src/types.ts | 3 +-- packages/dev-utils/src/generate-documentation-table.ts | 2 +- packages/esbuild-plugin/README_TEMPLATE.md | 3 +-- packages/rollup-plugin/README_TEMPLATE.md | 3 +-- packages/vite-plugin/README_TEMPLATE.md | 3 +-- packages/webpack-plugin/README_TEMPLATE.md | 3 +-- 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 56b6957c7aad..2dc3490cfeb7 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -13,8 +13,7 @@ export interface Options { /** * The authentication token to use for all communication with Sentry. - * Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. - * Required scopes: project:releases (and org:read if setCommits option is used). + * Can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/. * * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. */ diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 93378150be92..b7052cbc0349 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -20,7 +20,7 @@ const options: OptionDocumentation[] = [ name: "authToken", type: "string", fullDescription: - "The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/settings/account/api/auth-tokens/. Required scopes: project:releases (and org:read if setCommits option is used).\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.", + "The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/.\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.", }, { name: "url", diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md index 67273dcfe125..8b6382ecbfb3 100644 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -46,8 +46,7 @@ require("esbuild").build({ org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, - // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ - // and need `project:releases` and `org:read` scopes + // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ authToken: process.env.SENTRY_AUTH_TOKEN, }), ], diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md index dd41bc3050a9..45b11483a5dd 100644 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -45,8 +45,7 @@ export default { org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, - // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ - // and need `project:releases` and `org:read` scopes + // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ authToken: process.env.SENTRY_AUTH_TOKEN, }), ], diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index 1110e07111c7..ff33405b4a95 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -53,8 +53,7 @@ export default defineConfig({ org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, - // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ - // and need `project:releases` and `org:read` scopes + // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ authToken: process.env.SENTRY_AUTH_TOKEN, }), ], diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index 5465b1ae7c1a..48d0f0a3d80f 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -47,8 +47,7 @@ module.exports = { org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, - // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/ - // and need `project:releases` and `org:read` scopes + // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ authToken: process.env.SENTRY_AUTH_TOKEN, }), ], From fbaa59d2601475500efb074dd843644188679dec Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 4 Sep 2023 16:08:18 +0100 Subject: [PATCH 279/640] fix(webpack): Add `default` fallback to webpack import (#395) --- packages/webpack-plugin/src/index.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 5e98be0fad3c..f879e0adda02 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -25,7 +25,13 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || + webback4or5?.BannerPlugin || + webback4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call @@ -46,7 +52,13 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || + webback4or5?.BannerPlugin || + webback4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call @@ -91,7 +103,13 @@ function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = compiler?.webpack?.BannerPlugin || webback4or5?.BannerPlugin; + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || + webback4or5?.BannerPlugin || + webback4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call From e389213598f4d521365ca1bac24462fa572b9dc2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 4 Sep 2023 17:11:04 +0200 Subject: [PATCH 280/640] meta: Update changelog for 2.7.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ce56d1620b..21ba0bdff03c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.7.1 + +- docs: Point to org auth token page (#393) +- fix(webpack): Add `default` fallback to webpack import (#395) +- fix: Save results of `rewriteSourcesHook` (#390) + +Work in this release contributed by @adonskoy. Thank you for your contribution! + ## 2.7.0 - feat: Add module metadata injection for esbuild (#381) From 9765cf9599941fe845e873b3ca109aecdab6f30f Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 4 Sep 2023 15:12:21 +0000 Subject: [PATCH 281/640] release: 2.7.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 35ffa20ea4df..8b797fe49730 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.7.0", + "version": "2.7.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4167a859c600..78cd058c24f5 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.7.0", + "version": "2.7.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b1d50fde09a8..ebe7c5b7ad04 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 58abeb5665bf..545de9c8203e 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.7.0", - "@sentry/rollup-plugin": "2.7.0", - "@sentry/vite-plugin": "2.7.0", - "@sentry/webpack-plugin": "2.7.0", + "@sentry/esbuild-plugin": "2.7.1", + "@sentry/rollup-plugin": "2.7.1", + "@sentry/vite-plugin": "2.7.1", + "@sentry/webpack-plugin": "2.7.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 0ce737f26d5d..53a6c6fad956 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.7.0", + "version": "2.7.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 406246512026..2f5e3463d940 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index eb3e08e5de48..b6f175cd3861 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", - "@sentry/bundler-plugin-core": "2.7.0", - "@sentry/esbuild-plugin": "2.7.0", - "@sentry/rollup-plugin": "2.7.0", - "@sentry/vite-plugin": "2.7.0", - "@sentry/webpack-plugin": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/esbuild-plugin": "2.7.1", + "@sentry/rollup-plugin": "2.7.1", + "@sentry/vite-plugin": "2.7.1", + "@sentry/webpack-plugin": "2.7.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9b303090aace..2e090fcdae6e 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 6c443b554475..e768f5dd1501 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.7.0", + "version": "2.7.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b209632acb13..ab8e44114db4 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c3805e01097c..6b13a0e56f3f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.7.0", + "version": "2.7.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 85f74571dd4b..b8bc6db3c4d5 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.7.0", + "version": "2.7.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.0", + "@sentry/bundler-plugin-core": "2.7.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.0", + "@sentry-internal/eslint-config": "2.7.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From c5dbca1b04b7496c6b596f4dff2e9e59870e4866 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 5 Sep 2023 09:50:22 +0100 Subject: [PATCH 282/640] docs: Add removal of `dryRun` to migration guide (#397) --- MIGRATION.md | 1 + 1 file changed, 1 insertion(+) diff --git a/MIGRATION.md b/MIGRATION.md index d6bc43692efe..eb85607e2f0d 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -12,6 +12,7 @@ This document serves as a migration guide, documenting all breaking changes betw - The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` - Removed the `configFile` option. Options should now be set explicitly or via environment variables. - The minimum supported Node.js version is now 14 and newer. +- Removed `dryRun` option. ## Upgrading from 1.x to 2.x (Webpack Plugin Only) From ffee2bd6303132cede8dbb5a622f0e2b2ace4b4a Mon Sep 17 00:00:00 2001 From: Kyle Bloom Date: Tue, 5 Sep 2023 10:04:26 +0100 Subject: [PATCH 283/640] Move git revision to a separate function (#399) --- packages/bundler-plugin-core/src/utils.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 479e470c0bcb..d40205e47564 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -194,17 +194,20 @@ export function stringToUUID(str: string): string { ).toLowerCase(); } -/** - * Tries to guess a release name based on environmental data. - */ -export function determineReleaseName(): string | undefined { +function gitRevision(): string | undefined { let gitRevision: string | undefined; try { gitRevision = childProcess.execSync("git rev-parse HEAD").toString().trim(); } catch (e) { // noop } + return gitRevision; +} +/** + * Tries to guess a release name based on environmental data. + */ +export function determineReleaseName(): string | undefined { return ( // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables process.env["GITHUB_SHA"] || @@ -225,7 +228,7 @@ export function determineReleaseName(): string | undefined { process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || - gitRevision + gitRevision() ); } From baf29445d2151732f0b76ac1367ffa9be3f748ed Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Mon, 11 Sep 2023 17:57:23 +0300 Subject: [PATCH 284/640] docs: Add explanation about setting org via `SENTRY_ORG` environment variable (#405) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/types.ts | 2 ++ packages/dev-utils/src/generate-documentation-table.ts | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 2dc3490cfeb7..f3276f6aa0d4 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -1,6 +1,8 @@ export interface Options { /** * The slug of the Sentry organization associated with the app. + * + * This value can also be specified via the `SENTRY_ORG` environment variable. */ org?: string; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index b7052cbc0349..9a3288d2767d 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -9,7 +9,8 @@ const options: OptionDocumentation[] = [ { name: "org", type: "string", - fullDescription: "The slug of the Sentry organization associated with the app.", + fullDescription: + "The slug of the Sentry organization associated with the app.\n\nThis value can also be specified via the `SENTRY_ORG` environment variable.", }, { name: "project", From 1e7d41364a3a3a3a4fff19af564cf04f0a69d1d6 Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Mon, 11 Sep 2023 18:00:52 +0300 Subject: [PATCH 285/640] feat: Detect release name for Bitbucket pipelines (#404) --- packages/bundler-plugin-core/src/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index d40205e47564..e4a38467818f 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -217,6 +217,8 @@ export function determineReleaseName(): string | undefined { process.env["CF_PAGES_COMMIT_SHA"] || // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] || + // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/ + process.env["BITBUCKET_COMMIT"] || // CircleCI - https://circleci.com/docs/2.0/env-vars/ process.env["CIRCLE_SHA1"] || // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables From 58271f1af2ade6b3e64d393d70376ae53bc5bd2f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 14 Sep 2023 12:07:00 +0200 Subject: [PATCH 286/640] meta: Remove stalebot workflow --- .github/workflows/stale.yml | 45 ------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index eda1e003898b..000000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: "close stale issues/PRs" -on: - schedule: - - cron: "0 0 * * *" - workflow_dispatch: -jobs: - stale: - runs-on: ubuntu-20.04 - steps: - - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b - with: - repo-token: ${{ github.token }} - days-before-stale: 21 - days-before-close: 7 - only-labels: "" - operations-per-run: 100 - remove-stale-when-updated: true - debug-only: false - ascending: false - - exempt-issue-labels: "Status: Backlog,Status: In Progress" - stale-issue-label: "Status: Stale" - stale-issue-message: |- - This issue has gone three weeks without activity. In another week, I will close it. - - But! If you comment or otherwise update it, I will reset the clock, and if you label it `Status: Backlog` or `Status: In Progress`, I will leave it alone ... forever! - - ---- - - "A weed is but an unloved flower." ― _Ella Wheeler Wilcox_ 🥀 - close-issue-label: "" - close-issue-message: "" - - exempt-pr-labels: "Status: Backlog,Status: In Progress" - stale-pr-label: "Status: Stale" - stale-pr-message: |- - This pull request has gone three weeks without activity. In another week, I will close it. - - But! If you comment or otherwise update it, I will reset the clock, and if you label it `Status: Backlog` or `Status: In Progress`, I will leave it alone ... forever! - - ---- - - "A weed is but an unloved flower." ― _Ella Wheeler Wilcox_ 🥀 - close-pr-label: - close-pr-message: "" From 40f918458ed449d8b3eabaf64d13c08218213f65 Mon Sep 17 00:00:00 2001 From: Hosmel Quintana Date: Tue, 19 Sep 2023 10:37:57 -0600 Subject: [PATCH 287/640] feat: Detect release name for Flightcontrol (#411) --- packages/bundler-plugin-core/src/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index e4a38467818f..6658eb4bdf9c 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -230,6 +230,8 @@ export function determineReleaseName(): string | undefined { process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || + // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables + process.env["FC_GIT_COMMIT_SHA"] || gitRevision() ); } From 1e699b162da0fbb1e20dc147a4658513de7a277a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 5 Oct 2023 12:28:12 +0200 Subject: [PATCH 288/640] build(core): Bump Sentry CLI to v2.21.2 (#415) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 78cd058c24f5..27fd717265a9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,7 +52,7 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^2.20.1", + "@sentry/cli": "^2.21.2", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", diff --git a/yarn.lock b/yarn.lock index 4a2880965875..6d6d3591d9c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2259,10 +2259,10 @@ "@sentry/utils" "7.60.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/cli@^2.20.1": - version "2.20.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.20.1.tgz#e0a04d9c0153fc8606f90ee3f6b17abed81a85bc" - integrity sha512-HxzwFQf5gPKfksyj2ZhUicg/avHLCOd/EjZTERSXv5V7GohaTlsNxf9Sbvv/nsu8479vogTllSU6xg5BgXAVUw== +"@sentry/cli@^2.21.2": + version "2.21.2" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.21.2.tgz#89e5633ff48a83d078c76c6997fffd4b68b2da1c" + integrity sha512-X1nye89zl+QV3FSuQDGItfM51tW9PQ7ce0TtV/12DgGgTVEgnVp5uvO3wX5XauHvulQzRPzwUL3ZK+yS5bAwCw== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" From cc7fb44a66aed76426d36de4d6a25e17adf08d37 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 5 Oct 2023 14:38:20 +0200 Subject: [PATCH 289/640] fix(esbuild): Don't inject debug IDs into injected modules (#417) --- packages/esbuild-plugin/src/index.ts | 16 +- .../esbuild-inject-compat.test.ts | 16 ++ .../esbuild-inject-compat/input/index.ts | 4 + .../esbuild-inject-compat/input/inject.ts | 7 + .../fixtures/esbuild-inject-compat/setup.ts | 20 ++ packages/integration-tests/package.json | 1 + yarn.lock | 272 +++++++++--------- 7 files changed, 198 insertions(+), 138 deletions(-) create mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts create mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts create mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts create mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 5410c26053b1..ca0d803f4cf2 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -44,11 +44,17 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { name: pluginName, esbuild: { - setup({ onLoad, onResolve }) { + setup({ initialOptions, onLoad, onResolve }) { onResolve({ filter: /.*/ }, (args) => { if (args.kind !== "entry-point") { return; } else { + // Injected modules via the esbuild `inject` option do also have `kind == "entry-point"`. + // We do not want to inject debug IDs into those files because they are already bundled into the entrypoints + if (initialOptions.inject?.includes(args.path)) { + return; + } + return { pluginName, // needs to be an abs path, otherwise esbuild will complain @@ -123,11 +129,17 @@ function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp name: pluginName, esbuild: { - setup({ onLoad, onResolve }) { + setup({ initialOptions, onLoad, onResolve }) { onResolve({ filter: /.*/ }, (args) => { if (args.kind !== "entry-point") { return; } else { + // Injected modules via the esbuild `inject` option do also have `kind == "entry-point"`. + // We do not want to inject debug IDs into those files because they are already bundled into the entrypoints + if (initialOptions.inject?.includes(args.path)) { + return; + } + return { pluginName, // needs to be an abs path, otherwise esbuild will complain 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 new file mode 100644 index 000000000000..00daa6428902 --- /dev/null +++ b/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts @@ -0,0 +1,16 @@ +import childProcess from "child_process"; +import path from "path"; +import fs from "fs"; + +const outputBundlePath = path.join(__dirname, "out", "index.js"); + +test("check functionality", () => { + const processOutput = childProcess.execSync(`node ${outputBundlePath}`, { encoding: "utf-8" }); + expect(processOutput).toMatch(/some-injected-value/); +}); + +test("check that output only contains one debug ID reference", async () => { + const bundleContent = await fs.promises.readFile(outputBundlePath, "utf-8"); + const debugIdReferences = bundleContent.match(/sentry-dbid-/g) ?? []; + expect(debugIdReferences).toHaveLength(1); +}); diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts new file mode 100644 index 000000000000..25401bb5c6e1 --- /dev/null +++ b/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts @@ -0,0 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore just a test file +// eslint-disable-next-line no-console +console.log(process.env["FOO"]); diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts new file mode 100644 index 000000000000..089b32ff1122 --- /dev/null +++ b/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts @@ -0,0 +1,7 @@ +export const process = { + env: { + FOO: "some-injected-value", + }, +}; +// eslint-disable-next-line no-undef +export const global = globalThis; diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts new file mode 100644 index 000000000000..d05014de1ea6 --- /dev/null +++ b/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts @@ -0,0 +1,20 @@ +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import esbuild from "esbuild019"; +import path from "path"; + +esbuild + .build({ + bundle: true, + entryPoints: [path.resolve(__dirname, "./input/index.ts")], + outdir: path.resolve(__dirname, "./out"), + inject: [path.resolve(__dirname, "./input/inject.ts")], + plugins: [ + sentryEsbuildPlugin({ + telemetry: false, + }), + ], + minify: false, + }) + .catch((e) => { + throw e; + }); diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b6f175cd3861..941c186c5cc5 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -26,6 +26,7 @@ "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", "esbuild": "0.14.49", + "esbuild019": "npm:esbuild@^0.19.4", "eslint": "^8.18.0", "jest": "^28.1.3", "rollup": "3.2.0", diff --git a/yarn.lock b/yarn.lock index 6d6d3591d9c4..7c2106ea91f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -977,120 +977,120 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@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" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@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" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@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" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@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" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@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" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@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" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@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" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@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" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@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" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@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" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== +"@esbuild/android-arm64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz#74752a09301b8c6b9a415fbda9fb71406a62a7b7" + integrity sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg== + +"@esbuild/android-arm@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5" + integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ== + +"@esbuild/android-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426" + integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g== + +"@esbuild/darwin-arm64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz#64e2ee945e5932cd49812caa80e8896e937e2f8b" + integrity sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA== + +"@esbuild/darwin-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a" + integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw== + +"@esbuild/freebsd-arm64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz#29751a41b242e0a456d89713b228f1da4f45582f" + integrity sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ== + +"@esbuild/freebsd-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268" + integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw== + +"@esbuild/linux-arm64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz#659f2fa988d448dbf5010b5cc583be757cc1b914" + integrity sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA== + +"@esbuild/linux-arm@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz#d5b13a7ec1f1c655ce05c8d319b3950797baee55" + integrity sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg== + +"@esbuild/linux-ia32@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82" + integrity sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ== "@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" integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@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" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@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" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@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" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@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" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@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" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@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" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@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" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@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" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@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" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@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" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@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" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== +"@esbuild/linux-loong64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz#df890499f6e566b7de3aa2361be6df2b8d5fa015" + integrity sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg== + +"@esbuild/linux-mips64el@0.19.4": + version "0.19.4" + 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-ppc64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff" + integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw== + +"@esbuild/linux-riscv64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz#0f815a090772138503ee0465a747e16865bf94b1" + integrity sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig== + +"@esbuild/linux-s390x@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b" + integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg== + +"@esbuild/linux-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz#f618bec2655de49bff91c588777e37b5e3169d4a" + integrity sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg== + +"@esbuild/netbsd-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz#7889744ca4d60f1538d62382b95e90a49687cef2" + integrity sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A== + +"@esbuild/openbsd-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz#c3e436eb9271a423d2e8436fcb120e3fd90e2b01" + integrity sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw== + +"@esbuild/sunos-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740" + integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw== + +"@esbuild/win32-arm64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz#80be69cec92da4da7781cf7a8351b95cc5a236b0" + integrity sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w== + +"@esbuild/win32-ia32@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz#15dc0ed83d2794872b05d8edc4a358fecf97eb54" + integrity sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg== + +"@esbuild/win32-x64@0.19.4": + version "0.19.4" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz#d46a6e220a717f31f39ae80f49477cc3220be0f0" + integrity sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -5512,6 +5512,34 @@ esbuild-windows-arm64@0.14.54: resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== +"esbuild019@npm:esbuild@^0.19.4", esbuild@0.19.4: + version "0.19.4" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz#cdf5c4c684956d550bc3c6d0c01dac7fef6c75b1" + integrity sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA== + optionalDependencies: + "@esbuild/android-arm" "0.19.4" + "@esbuild/android-arm64" "0.19.4" + "@esbuild/android-x64" "0.19.4" + "@esbuild/darwin-arm64" "0.19.4" + "@esbuild/darwin-x64" "0.19.4" + "@esbuild/freebsd-arm64" "0.19.4" + "@esbuild/freebsd-x64" "0.19.4" + "@esbuild/linux-arm" "0.19.4" + "@esbuild/linux-arm64" "0.19.4" + "@esbuild/linux-ia32" "0.19.4" + "@esbuild/linux-loong64" "0.19.4" + "@esbuild/linux-mips64el" "0.19.4" + "@esbuild/linux-ppc64" "0.19.4" + "@esbuild/linux-riscv64" "0.19.4" + "@esbuild/linux-s390x" "0.19.4" + "@esbuild/linux-x64" "0.19.4" + "@esbuild/netbsd-x64" "0.19.4" + "@esbuild/openbsd-x64" "0.19.4" + "@esbuild/sunos-x64" "0.19.4" + "@esbuild/win32-arm64" "0.19.4" + "@esbuild/win32-ia32" "0.19.4" + "@esbuild/win32-x64" "0.19.4" + esbuild@0.14.49: version "0.14.49" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" @@ -5538,34 +5566,6 @@ esbuild@0.14.49: esbuild-windows-64 "0.14.49" esbuild-windows-arm64 "0.14.49" -esbuild@0.17.19: - version "0.17.19" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - esbuild@^0.14.47: version "0.14.54" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" From 817c3f19efb9cc78ecf9e43c8004c082d517af3d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 5 Oct 2023 14:47:50 +0200 Subject: [PATCH 290/640] meta: Update changelog for 2.8.0 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21ba0bdff03c..f3abc3e60a87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.8.0 + +- build(core): Bump Sentry CLI to v2.21.2 (#415) +- feat: Detect release name for Bitbucket pipelines (#404) +- feat: Detect release name for Flightcontrol (#411) +- fix(core): Move git revision to a separate function (#399) +- fix(esbuild): Don't inject debug IDs into injected modules (#417) + +Work in this release contributed by @hoslmelq, @mjomble, and @aquacash5. Thank you for your contributions! + ## 2.7.1 - docs: Point to org auth token page (#393) From 42d7ef6fe6555fc13a5b1bea13d2d871835c43f1 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 5 Oct 2023 13:39:40 +0000 Subject: [PATCH 291/640] release: 2.8.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 8b797fe49730..7a3d3fee774c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.7.1", + "version": "2.8.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 27fd717265a9..a9f10fc9a968 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.7.1", + "version": "2.8.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index ebe7c5b7ad04..782b99880800 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 545de9c8203e..ac7cee126f21 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.7.1", - "@sentry/rollup-plugin": "2.7.1", - "@sentry/vite-plugin": "2.7.1", - "@sentry/webpack-plugin": "2.7.1", + "@sentry/esbuild-plugin": "2.8.0", + "@sentry/rollup-plugin": "2.8.0", + "@sentry/vite-plugin": "2.8.0", + "@sentry/webpack-plugin": "2.8.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 53a6c6fad956..746c837d27c1 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.7.1", + "version": "2.8.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/bundler-plugin-core": "2.8.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2f5e3463d940..e06af385052a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 941c186c5cc5..b1b51b275f65 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", - "@sentry/bundler-plugin-core": "2.7.1", - "@sentry/esbuild-plugin": "2.7.1", - "@sentry/rollup-plugin": "2.7.1", - "@sentry/vite-plugin": "2.7.1", - "@sentry/webpack-plugin": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/esbuild-plugin": "2.8.0", + "@sentry/rollup-plugin": "2.8.0", + "@sentry/vite-plugin": "2.8.0", + "@sentry/webpack-plugin": "2.8.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 2e090fcdae6e..d4bc5dd056c4 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/bundler-plugin-core": "2.8.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e768f5dd1501..0593f3ad0142 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.7.1", + "version": "2.8.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/bundler-plugin-core": "2.8.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index ab8e44114db4..8e4401acd79d 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.7.1", + "version": "2.8.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6b13a0e56f3f..d1e8883e716d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.7.1", + "version": "2.8.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/bundler-plugin-core": "2.8.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b8bc6db3c4d5..f4d09c446dd3 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.7.1", + "version": "2.8.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.7.1", + "@sentry/bundler-plugin-core": "2.8.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.7.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.7.1", + "@sentry-internal/eslint-config": "2.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From abf08f009907b6df89a90aed6a2abb1c52c4ca35 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 10 Oct 2023 17:34:22 +0200 Subject: [PATCH 292/640] fix(core): Widen detection of source maps with `.cjs.map` and `.mjs.map` (#422) --- packages/bundler-plugin-core/src/index.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 599bb0aa7e61..d24835dde94f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -452,11 +452,14 @@ export function createRollupDebugIdUploadHooks( ) { if (outputOptions.dir) { const outputDir = outputOptions.dir; - const buildArtifacts = await glob(["/**/*.js", "/**/*.js.map"], { - root: outputDir, - absolute: true, - nodir: true, - }); + const buildArtifacts = await glob( + ["/**/*.js", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"], + { + root: outputDir, + absolute: true, + nodir: true, + } + ); await upload(buildArtifacts); } else if (outputOptions.file) { await upload([outputOptions.file]); From eb3407b417d12fe604627079a56b41dfb57ac5bb Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 12 Oct 2023 14:34:12 +0200 Subject: [PATCH 293/640] fix(core): Don't abort source map location guessing when the reference is a URL (#424) --- .../bundler-plugin-core/src/debug-id-upload.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 830e6cce047d..c9d89d86d3c6 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -332,19 +332,21 @@ async function determineSourceMapPathFromBundle( if (isSupportedUrl) { absoluteSourceMapPath = sourceMappingUrl; } else if (isUrl) { - return; + // noop } else if (path.isAbsolute(sourceMappingUrl)) { absoluteSourceMapPath = sourceMappingUrl; } else { absoluteSourceMapPath = path.join(path.dirname(bundlePath), sourceMappingUrl); } - try { - // Check if the file actually exists - await util.promisify(fs.access)(absoluteSourceMapPath); - return absoluteSourceMapPath; - } catch (e) { - // noop + if (absoluteSourceMapPath) { + try { + // Check if the file actually exists + await util.promisify(fs.access)(absoluteSourceMapPath); + return absoluteSourceMapPath; + } catch (e) { + // noop + } } } From 2b7568825ceeef529d11d32f489c77507686f156 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Mon, 23 Oct 2023 12:20:52 +0200 Subject: [PATCH 294/640] feat: Allow to configure `bundleSizeOptimizations` (#428) --- packages/bundler-plugin-core/src/index.ts | 42 +++++- .../src/options-mapping.ts | 1 + packages/bundler-plugin-core/src/types.ts | 49 ++++++ packages/bundler-plugin-core/src/utils.ts | 25 ++++ .../bundler-plugin-core/test/utils.test.ts | 41 ++++- packages/esbuild-plugin/src/index.ts | 26 +++- packages/integration-tests/.eslintrc.js | 7 +- .../bundle-size-optimizations.test.ts | 69 +++++++++ .../input/bundle1.js | 9 ++ .../input/bundle2.js | 7 + .../bundle-size-optimizations/setup.ts | 25 ++++ packages/rollup-plugin/src/index.ts | 12 ++ packages/vite-plugin/src/index.ts | 12 ++ packages/webpack-plugin/src/index.ts | 29 ++++ yarn.lock | 140 +++++++++++++++++- 15 files changed, 487 insertions(+), 7 deletions(-) create mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js create mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js create mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d24835dde94f..3dc36c0d137c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -9,13 +9,14 @@ import { releaseManagementPlugin } from "./plugins/release-management"; import { telemetryPlugin } from "./plugins/telemetry"; import { createLogger } from "./sentry/logger"; import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; -import { Options } from "./types"; +import { Options, SentrySDKBuildFlags } from "./types"; import { generateGlobalInjectorCode, generateModuleMetadataInjectorCode, getDependencies, getPackageJson, parseMajorVersion, + replaceBooleanFlagsInCode, stringToUUID, stripQueryAndHashFromPath, } from "./utils"; @@ -27,6 +28,7 @@ interface SentryUnpluginFactoryOptions { moduleMetadataInjectionPlugin?: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: () => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; + bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; } /** @@ -61,6 +63,7 @@ export function sentryUnpluginFactory({ moduleMetadataInjectionPlugin, debugIdInjectionPlugin, debugIdUploadPlugin, + bundleSizeOptimizationsPlugin, }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions, unpluginMetaContext) => { const logger = createLogger({ @@ -161,6 +164,31 @@ export function sentryUnpluginFactory({ }) ); + if (options.bundleSizeOptimizations) { + const { bundleSizeOptimizations } = options; + const replacementValues: SentrySDKBuildFlags = {}; + + if (bundleSizeOptimizations.excludeDebugStatements) { + replacementValues["__SENTRY_DEBUG__"] = false; + } + if (bundleSizeOptimizations.excludePerformanceMonitoring) { + replacementValues["__SENTRY_TRACE__"] = false; + } + if (bundleSizeOptimizations.excludeReplayCanvas) { + replacementValues["__RRWEB_EXCLUDE_CANVAS__"] = true; + } + if (bundleSizeOptimizations.excludeReplayIframe) { + replacementValues["__RRWEB_EXCLUDE_IFRAME__"] = true; + } + if (bundleSizeOptimizations.excludeReplayShadowDom) { + replacementValues["__RRWEB_EXCLUDE_SHADOW_DOM__"] = true; + } + + if (Object.keys(replacementValues).length > 0) { + plugins.push(bundleSizeOptimizationsPlugin(replacementValues)); + } + } + if (!options.release.inject) { logger.debug( "Release injection disabled via `release.inject` option. Will not inject release." @@ -371,6 +399,14 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { }; } +export function createRollupBundleSizeOptimizationHooks(replacementValues: SentrySDKBuildFlags) { + return { + transform(code: string) { + return replaceBooleanFlagsInCode(code, replacementValues); + }, + }; +} + // We need to be careful not to inject the snippet before any `"use strict";`s. // As an additional complication `"use strict";`s may come after any number of comments. const COMMENT_USE_STRICT_REGEX = @@ -475,6 +511,6 @@ export function getDebugIdSnippet(debugId: string): string { return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } -export { stringToUUID } from "./utils"; +export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; -export type { Options } from "./types"; +export type { Options, SentrySDKBuildFlags } from "./types"; diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 04ff712d2468..202f40eaad08 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -28,6 +28,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", cleanArtifacts: userOptions.release?.cleanArtifacts ?? false, }, + bundleSizeOptimizations: userOptions.bundleSizeOptimizations, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index f3276f6aa0d4..15a9ca1db168 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -228,6 +228,47 @@ export interface Options { uploadLegacySourcemaps?: string | IncludeEntry | Array; }; + /** + * Options related to bundle size optimizations. + */ + bundleSizeOptimizations?: { + /** + * If set to true, the plugin will try to tree-shake debug statements out. + * Note that the success of this depends on tree shaking generally being enabled in your build. + */ + excludeDebugStatements?: boolean; + + /** + * If set to true, the plugin will try to tree-shake performance monitoring statements out. + * Note that the success of this depends on tree shaking generally being enabled in your build. + * Attention: DO NOT enable this when you're using any performance monitoring-related SDK features (e.g. Sentry.startTransaction()). + * This flag is intended to be used in combination with packages like @sentry/next or @sentry/sveltekit, + * which automatically include performance monitoring functionality. + */ + excludePerformanceMonitoring?: boolean; + + /** + * If set to true, the plugin will try to tree-shake Session Replay's Canvas recording functionality out. + * You can safely do this when you do not want to capture any Canvas activity via Replay. + * Note that the success of this depends on tree shaking generally being enabled in your build. + */ + excludeReplayCanvas?: boolean; + + /** + * If set to true, the plugin will try to tree-shake Session Replay's Shadow DOM recording functionality out. + * You can safely do this when you do not want to capture any Shadow DOM activity via Replay. + * Note that the success of this depends on tree shaking generally being enabled in your build. + */ + excludeReplayShadowDom?: boolean; + + /** + * If set to true, the plugin will try to tree-shake Session Replay's IFrame recording functionality out. + * You can safely do this when you do not want to capture any IFrame activity via Replay. + * Note that the success of this depends on tree shaking generally being enabled in your build. + */ + excludeReplayIframe?: boolean; + }; + /** * Options that are considered experimental and subject to change. * @@ -348,6 +389,14 @@ export type IncludeEntry = { validate?: boolean; }; +export interface SentrySDKBuildFlags extends Record { + __SENTRY_DEBUG__?: boolean; + __SENTRY_TRACE__?: boolean; + __RRWEB_EXCLUDE_CANVAS__?: boolean; + __RRWEB_EXCLUDE_IFRAME__?: boolean; + __RRWEB_EXCLUDE_SHADOW_DOM__?: boolean; +} + type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { /** * The commit before the beginning of this release (in other words, diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 6658eb4bdf9c..870dcb762426 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -4,6 +4,7 @@ import fs from "fs"; import os from "os"; import crypto from "crypto"; import childProcess from "child_process"; +import MagicString, { SourceMap } from "magic-string"; /** * Checks whether the given input is already an array, and if it isn't, wraps it in one. @@ -307,3 +308,27 @@ export function stripQueryAndHashFromPath(path: string): string { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return path.split("?")[0]!.split("#")[0]!; } + +export function replaceBooleanFlagsInCode( + code: string, + replacementValues: Record +): { code: string; map: SourceMap } | null { + const ms = new MagicString(code); + + Object.keys(replacementValues).forEach((key) => { + const value = replacementValues[key]; + + if (typeof value === "boolean") { + ms.replaceAll(key, JSON.stringify(value)); + } + }); + + if (ms.hasChanged()) { + return { + code: ms.toString(), + map: ms.generateMap({ hires: true }), + }; + } + + return null; +} diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index d587432ba7c5..3dcd93e1b102 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -1,4 +1,10 @@ -import { getDependencies, getPackageJson, parseMajorVersion, stringToUUID } from "../src/utils"; +import { + getDependencies, + getPackageJson, + parseMajorVersion, + replaceBooleanFlagsInCode, + stringToUUID, +} from "../src/utils"; import path from "node:path"; type PackageJson = Record; @@ -175,3 +181,36 @@ describe("stringToUUID", () => { expect(stringToUUID("Nothing personnel kid")).toBe("52c7a762-5ddf-49a7-af16-6874a8cb2512"); }); }); + +describe("replaceBooleanFlagsInCode", () => { + test("it works without a match", () => { + const code = "const a = 1;"; + const result = replaceBooleanFlagsInCode(code, { __DEBUG_BUILD__: false }); + expect(result).toBeNull(); + }); + + test("it works with matches", () => { + const code = `const a = 1; +if (__DEBUG_BUILD__ && checkMe()) { + // do something +} +if (__DEBUG_BUILD__ && __RRWEB_EXCLUDE_CANVAS__) { + const a = __RRWEB_EXCLUDE_CANVAS__ ? 1 : 2; +}`; + const result = replaceBooleanFlagsInCode(code, { + __DEBUG_BUILD__: false, + __RRWEB_EXCLUDE_CANVAS__: true, + }); + expect(result).toEqual({ + code: `const a = 1; +if (false && checkMe()) { + // do something +} +if (false && true) { + const a = true ? 1 : 2; +}`, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + map: expect.anything(), + }); + }); +}); diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index ca0d803f4cf2..cf5781d780df 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,4 +1,9 @@ -import { sentryUnpluginFactory, Options, getDebugIdSnippet } from "@sentry/bundler-plugin-core"; +import { + sentryUnpluginFactory, + Options, + getDebugIdSnippet, + SentrySDKBuildFlags, +} from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; import * as path from "path"; @@ -226,11 +231,30 @@ function esbuildDebugIdUploadPlugin( }; } +function esbuildBundleSizeOptimizationsPlugin( + replacementValues: SentrySDKBuildFlags +): UnpluginOptions { + return { + name: "sentry-esbuild-bundle-size-optimizations-plugin", + esbuild: { + setup({ initialOptions }) { + const replacementStringValues: Record = {}; + Object.entries(replacementValues).forEach(([key, value]) => { + replacementStringValues[key] = JSON.stringify(value); + }); + + initialOptions.define = { ...initialOptions.define, ...replacementStringValues }; + }, + }, + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: esbuildReleaseInjectionPlugin, debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, moduleMetadataInjectionPlugin: esbuildModuleMetadataInjectionPlugin, debugIdUploadPlugin: esbuildDebugIdUploadPlugin, + bundleSizeOptimizationsPlugin: esbuildBundleSizeOptimizationsPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js index bf333cd92a45..4feaa40917f2 100644 --- a/packages/integration-tests/.eslintrc.js +++ b/packages/integration-tests/.eslintrc.js @@ -4,7 +4,12 @@ const jestPackageJson = require("jest/package.json"); module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "fixtures/*/out", "jest.config.js"], + ignorePatterns: [ + ".eslintrc.js", + "fixtures/*/out", + "jest.config.js", + "fixtures/bundle-size-optimizations/*", + ], parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], 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 new file mode 100644 index 000000000000..a12d9f78b837 --- /dev/null +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts @@ -0,0 +1,69 @@ +/* eslint-disable jest/no-standalone-expect */ +/* eslint-disable jest/expect-expect */ +import path from "path"; +import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +const expectedOutputs: Record> = { + esbuild: { + "bundle1.js": `console.log(1)`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"})`, + }, + rollup: { + "bundle1.js": `console.log(1 );`, + "bundle2.js": `console.log({ + debug: "b", + trace: "b", + replayCanvas: "a" , + replayIframe: "a" , + replayShadowDom: "a" , +});`, + }, + vite: { + "bundle1.js": `console.log(1);`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"});`, + }, + webpack4: { + "bundle1.js": `console.log(1)`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"})`, + }, + webpack5: { + "bundle1.js": `console.log(1)`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"});`, + }, +}; + +function checkBundle(bundler: string, bundlePath: string): void { + const actualPath = path.join(__dirname, "out", bundler, bundlePath); + + // We replace multiple whitespaces with a single space for consistency + const actual = fs.readFileSync(actualPath, "utf-8").replace(/\s+/gim, " "); + const expected = expectedOutputs[bundler]?.[bundlePath]?.replace(/\s+/gim, " "); + + expect(actual).toContain(expected); +} + +test("esbuild bundle", () => { + checkBundle("esbuild", "bundle1.js"); + checkBundle("esbuild", "bundle2.js"); +}); + +test("rollup bundle", () => { + checkBundle("rollup", "bundle1.js"); + checkBundle("rollup", "bundle2.js"); +}); + +test("vite bundle", () => { + checkBundle("vite", "bundle1.js"); + 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"); +}); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js new file mode 100644 index 000000000000..85c2c6eb1c53 --- /dev/null +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js @@ -0,0 +1,9 @@ +if (__SENTRY_DEBUG__ && Math.random() > 0.5) { + console.log("was > 0.5"); +} + +if (__SENTRY_DEBUG__ && __RRWEB_EXCLUDE_CANVAS__) { + console.log("debug & exclude"); +} + +console.log(__RRWEB_EXCLUDE_CANVAS__ ? 1 : 2); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js new file mode 100644 index 000000000000..436e11bcd7b5 --- /dev/null +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js @@ -0,0 +1,7 @@ +console.log({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACE__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", +}); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts new file mode 100644 index 000000000000..74699d2aa4af --- /dev/null +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts @@ -0,0 +1,25 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle1: path.resolve(__dirname, "input", "bundle1.js"), + bundle2: path.resolve(__dirname, "input", "bundle2.js"), + }, + outputDir, + { + release: { + inject: false, + }, + telemetry: false, + bundleSizeOptimizations: { + excludeDebugStatements: true, + excludePerformanceMonitoring: true, + excludeReplayCanvas: true, + excludeReplayIframe: true, + excludeReplayShadowDom: true, + }, + } +); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index dab98730eb78..884d8e62dba8 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -5,6 +5,8 @@ import { createRollupModuleMetadataInjectionHooks, createRollupDebugIdInjectionHooks, createRollupDebugIdUploadHooks, + SentrySDKBuildFlags, + createRollupBundleSizeOptimizationHooks, } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; @@ -38,11 +40,21 @@ function rollupDebugIdUploadPlugin( }; } +function rollupBundleSizeOptimizationsPlugin( + replacementValues: SentrySDKBuildFlags +): UnpluginOptions { + return { + name: "sentry-rollup-bundle-size-optimizations-plugin", + rollup: createRollupBundleSizeOptimizationHooks(replacementValues), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: rollupReleaseInjectionPlugin, debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, moduleMetadataInjectionPlugin: rollupModuleMetadataInjectionPlugin, debugIdUploadPlugin: rollupDebugIdUploadPlugin, + bundleSizeOptimizationsPlugin: rollupBundleSizeOptimizationsPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 5ee62797b943..c85d3e3a0cca 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -5,6 +5,8 @@ import { createRollupModuleMetadataInjectionHooks, createRollupDebugIdInjectionHooks, createRollupDebugIdUploadHooks, + SentrySDKBuildFlags, + createRollupBundleSizeOptimizationHooks, } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; @@ -39,11 +41,21 @@ function viteDebugIdUploadPlugin( }; } +function viteBundleSizeOptimizationsPlugin( + replacementValues: SentrySDKBuildFlags +): UnpluginOptions { + return { + name: "sentry-vite-bundle-size-optimizations-plugin", + vite: createRollupBundleSizeOptimizationHooks(replacementValues), + }; +} + const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: viteReleaseInjectionPlugin, debugIdInjectionPlugin: viteDebugIdInjectionPlugin, moduleMetadataInjectionPlugin: viteModuleMetadataInjectionPlugin, debugIdUploadPlugin: viteDebugIdUploadPlugin, + bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index f879e0adda02..a3e624beb7c8 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -3,6 +3,7 @@ import { Options, sentryUnpluginFactory, stringToUUID, + SentrySDKBuildFlags, } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; @@ -45,6 +46,33 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function webpackBundleSizeOptimizationsPlugin( + replacementValues: SentrySDKBuildFlags +): UnpluginOptions { + return { + name: "sentry-webpack-bundle-size-optimizations-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const DefinePlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.DefinePlugin || + webback4or5?.DefinePlugin || + webback4or5?.default?.DefinePlugin; + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new DefinePlugin({ + ...replacementValues, + }) + ); + }, + }; +} + function webpackDebugIdInjectionPlugin(): UnpluginOptions { return { name: "sentry-webpack-debug-id-injection-plugin", @@ -128,6 +156,7 @@ const sentryUnplugin = sentryUnpluginFactory({ moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin, debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, debugIdUploadPlugin: webpackDebugIdUploadPlugin, + bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/yarn.lock b/yarn.lock index 7c2106ea91f3..0e65c43f8179 100644 --- a/yarn.lock +++ b/yarn.lock @@ -977,51 +977,101 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@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" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + "@esbuild/android-arm64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz#74752a09301b8c6b9a415fbda9fb71406a62a7b7" integrity sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg== +"@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" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + "@esbuild/android-arm@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5" integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ== +"@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" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + "@esbuild/android-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426" integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g== +"@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" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== + "@esbuild/darwin-arm64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz#64e2ee945e5932cd49812caa80e8896e937e2f8b" integrity sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA== +"@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" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + "@esbuild/darwin-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a" integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw== +"@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" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + "@esbuild/freebsd-arm64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz#29751a41b242e0a456d89713b228f1da4f45582f" integrity sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ== +"@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" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + "@esbuild/freebsd-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268" integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw== +"@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" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + "@esbuild/linux-arm64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz#659f2fa988d448dbf5010b5cc583be757cc1b914" integrity sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA== +"@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" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + "@esbuild/linux-arm@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz#d5b13a7ec1f1c655ce05c8d319b3950797baee55" integrity sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg== +"@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" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + "@esbuild/linux-ia32@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82" @@ -1032,61 +1082,121 @@ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + "@esbuild/linux-loong64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz#df890499f6e566b7de3aa2361be6df2b8d5fa015" integrity sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg== +"@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" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + "@esbuild/linux-mips64el@0.19.4": version "0.19.4" 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-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + "@esbuild/linux-ppc64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff" integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw== +"@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" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + "@esbuild/linux-riscv64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz#0f815a090772138503ee0465a747e16865bf94b1" integrity sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig== +"@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" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + "@esbuild/linux-s390x@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b" integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg== +"@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" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + "@esbuild/linux-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz#f618bec2655de49bff91c588777e37b5e3169d4a" integrity sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg== +"@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" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + "@esbuild/netbsd-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz#7889744ca4d60f1538d62382b95e90a49687cef2" integrity sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A== +"@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" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + "@esbuild/openbsd-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz#c3e436eb9271a423d2e8436fcb120e3fd90e2b01" integrity sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw== +"@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" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + "@esbuild/sunos-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740" integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw== +"@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" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + "@esbuild/win32-arm64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz#80be69cec92da4da7781cf7a8351b95cc5a236b0" integrity sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w== +"@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" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + "@esbuild/win32-ia32@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz#15dc0ed83d2794872b05d8edc4a358fecf97eb54" integrity sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg== +"@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" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== + "@esbuild/win32-x64@0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz#d46a6e220a717f31f39ae80f49477cc3220be0f0" @@ -5512,7 +5622,7 @@ esbuild-windows-arm64@0.14.54: resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== -"esbuild019@npm:esbuild@^0.19.4", esbuild@0.19.4: +"esbuild019@npm:esbuild@^0.19.4": version "0.19.4" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz#cdf5c4c684956d550bc3c6d0c01dac7fef6c75b1" integrity sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA== @@ -5566,6 +5676,34 @@ esbuild@0.14.49: esbuild-windows-64 "0.14.49" esbuild-windows-arm64 "0.14.49" +esbuild@0.17.19: + version "0.17.19" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== + optionalDependencies: + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" + esbuild@^0.14.47: version "0.14.54" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" From 22e9db2bceefa7345efb0740c37fb9d05515eeb2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 23 Oct 2023 12:25:12 +0200 Subject: [PATCH 295/640] meta: Update changelog for 2.9.0 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3abc3e60a87..b2cf220f0f69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.9.0 + +- feat: Allow to configure `bundleSizeOptimizations` (#428) +- fix(core): Don't abort source map location guessing when the reference is a URL (#424) +- fix(core): Widen detection of source maps with `.cjs.map` and `.mjs.map` (#422) + ## 2.8.0 - build(core): Bump Sentry CLI to v2.21.2 (#415) From 30a53b3a868ef94ba2e6648622da1a894267aa8c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 23 Oct 2023 10:26:51 +0000 Subject: [PATCH 296/640] release: 2.9.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 7a3d3fee774c..38d36c61c6b5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.8.0", + "version": "2.9.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a9f10fc9a968..4f7d343efd25 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.8.0", + "version": "2.9.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 782b99880800..c652258ceb26 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index ac7cee126f21..621c3a5b525a 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.8.0", - "@sentry/rollup-plugin": "2.8.0", - "@sentry/vite-plugin": "2.8.0", - "@sentry/webpack-plugin": "2.8.0", + "@sentry/esbuild-plugin": "2.9.0", + "@sentry/rollup-plugin": "2.9.0", + "@sentry/vite-plugin": "2.9.0", + "@sentry/webpack-plugin": "2.9.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 746c837d27c1..c4cbbf526397 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.8.0", + "version": "2.9.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/bundler-plugin-core": "2.9.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index e06af385052a..1fb8872bc3b9 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b1b51b275f65..8e560321fc25 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", - "@sentry/bundler-plugin-core": "2.8.0", - "@sentry/esbuild-plugin": "2.8.0", - "@sentry/rollup-plugin": "2.8.0", - "@sentry/vite-plugin": "2.8.0", - "@sentry/webpack-plugin": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/esbuild-plugin": "2.9.0", + "@sentry/rollup-plugin": "2.9.0", + "@sentry/vite-plugin": "2.9.0", + "@sentry/webpack-plugin": "2.9.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index d4bc5dd056c4..4890882b6ce4 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/bundler-plugin-core": "2.9.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 0593f3ad0142..4e91c033d3f8 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.8.0", + "version": "2.9.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/bundler-plugin-core": "2.9.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 8e4401acd79d..50898dc2a518 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.8.0", + "version": "2.9.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index d1e8883e716d..ecf6d34aa8b9 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.8.0", + "version": "2.9.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/bundler-plugin-core": "2.9.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f4d09c446dd3..5a4d67467f84 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.8.0", + "version": "2.9.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.8.0", + "@sentry/bundler-plugin-core": "2.9.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.8.0", + "@sentry-internal/eslint-config": "2.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From e666a8eebbb73920f0147c51da061a9b3cfacd85 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 31 Oct 2023 14:27:21 +0100 Subject: [PATCH 297/640] feat: Add `excludeReplayWorker` to `bundleSizeOptimizations` (#433) --- packages/bundler-plugin-core/src/index.ts | 3 +++ packages/bundler-plugin-core/src/types.ts | 8 ++++++++ .../bundle-size-optimizations.test.ts | 9 +++++---- .../fixtures/bundle-size-optimizations/input/bundle2.js | 1 + .../fixtures/bundle-size-optimizations/setup.ts | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 3dc36c0d137c..d7f467588419 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -183,6 +183,9 @@ export function sentryUnpluginFactory({ if (bundleSizeOptimizations.excludeReplayShadowDom) { replacementValues["__RRWEB_EXCLUDE_SHADOW_DOM__"] = true; } + if (bundleSizeOptimizations.excludeReplayWorker) { + replacementValues["__SENTRY_EXCLUDE_REPLAY_WORKER__"] = true; + } if (Object.keys(replacementValues).length > 0) { plugins.push(bundleSizeOptimizationsPlugin(replacementValues)); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 15a9ca1db168..083257774be0 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -267,6 +267,13 @@ export interface Options { * Note that the success of this depends on tree shaking generally being enabled in your build. */ excludeReplayIframe?: boolean; + + /** + * If set to true, the plugin will try to tree-shake Session Replay's Compression Web Worker out. + * You should only do this if you manually host a compression worker and configure it in your Replay config via `workerUrl`. + * Note that the success of this depends on tree shaking generally being enabled in your build. + */ + excludeReplayWorker?: boolean; }; /** @@ -395,6 +402,7 @@ export interface SentrySDKBuildFlags extends Record __RRWEB_EXCLUDE_CANVAS__?: boolean; __RRWEB_EXCLUDE_IFRAME__?: boolean; __RRWEB_EXCLUDE_SHADOW_DOM__?: boolean; + __SENTRY_EXCLUDE_REPLAY_WORKER__?: boolean; } type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { 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 a12d9f78b837..fb7549433bb8 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 @@ -7,7 +7,7 @@ import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; const expectedOutputs: Record> = { esbuild: { "bundle1.js": `console.log(1)`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"})`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, }, rollup: { "bundle1.js": `console.log(1 );`, @@ -17,19 +17,20 @@ const expectedOutputs: Record> = { replayCanvas: "a" , replayIframe: "a" , replayShadowDom: "a" , + replayWorker: "a" , });`, }, vite: { "bundle1.js": `console.log(1);`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"});`, + "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"})`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, }, webpack5: { "bundle1.js": `console.log(1)`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a"});`, + "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, }, }; diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js index 436e11bcd7b5..e6c49f948a3b 100644 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js @@ -4,4 +4,5 @@ console.log({ replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", }); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts index 74699d2aa4af..8e1fb1dcc558 100644 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts @@ -20,6 +20,7 @@ createCjsBundles( excludeReplayCanvas: true, excludeReplayIframe: true, excludeReplayShadowDom: true, + excludeReplayWorker: true, }, } ); From 98e0d64123f5852048547fadedccb25400e1c997 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Thu, 9 Nov 2023 10:34:38 +0100 Subject: [PATCH 298/640] feat: deprecate `excludeReplayCanvas` config (#436) --------- Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/types.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 083257774be0..e34e6a1d9217 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -251,6 +251,8 @@ export interface Options { * If set to true, the plugin will try to tree-shake Session Replay's Canvas recording functionality out. * You can safely do this when you do not want to capture any Canvas activity via Replay. * Note that the success of this depends on tree shaking generally being enabled in your build. + * + * @deprecated Versions v7.78.0 and later of the Sentry JavaScript SDKs do not include canvas support by default, making this option redundant. */ excludeReplayCanvas?: boolean; From c970b0c73b4ca58e935dc84b886a00b232e5a7af Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Thu, 9 Nov 2023 11:00:21 +0100 Subject: [PATCH 299/640] meta: Update changelog for 2.10.0 (#437) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2cf220f0f69..72c7a54fd5ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.10.0 + +- feat: deprecate `excludeReplayCanvas` config (#436) +- feat: Add `excludeReplayWorker` to `bundleSizeOptimizations` (#433) + ## 2.9.0 - feat: Allow to configure `bundleSizeOptimizations` (#428) From b578dc707c00eefc73b595c0f5a7241290241b2c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 9 Nov 2023 10:01:34 +0000 Subject: [PATCH 300/640] release: 2.10.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 38d36c61c6b5..482156332764 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.9.0", + "version": "2.10.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4f7d343efd25..86a7e22092bf 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.9.0", + "version": "2.10.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c652258ceb26..8e3ff6d5b4aa 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 621c3a5b525a..175cc4e873f0 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.9.0", - "@sentry/rollup-plugin": "2.9.0", - "@sentry/vite-plugin": "2.9.0", - "@sentry/webpack-plugin": "2.9.0", + "@sentry/esbuild-plugin": "2.10.0", + "@sentry/rollup-plugin": "2.10.0", + "@sentry/vite-plugin": "2.10.0", + "@sentry/webpack-plugin": "2.10.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c4cbbf526397..827f56ab2d91 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.9.0", + "version": "2.10.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/bundler-plugin-core": "2.10.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 1fb8872bc3b9..b3bd86dd2bac 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8e560321fc25..8d38af22271c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", - "@sentry/bundler-plugin-core": "2.9.0", - "@sentry/esbuild-plugin": "2.9.0", - "@sentry/rollup-plugin": "2.9.0", - "@sentry/vite-plugin": "2.9.0", - "@sentry/webpack-plugin": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/esbuild-plugin": "2.10.0", + "@sentry/rollup-plugin": "2.10.0", + "@sentry/vite-plugin": "2.10.0", + "@sentry/webpack-plugin": "2.10.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index 4890882b6ce4..a5ed4452507e 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/bundler-plugin-core": "2.10.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 4e91c033d3f8..2b75ccf66907 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.9.0", + "version": "2.10.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/bundler-plugin-core": "2.10.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 50898dc2a518..d5be34b768ac 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index ecf6d34aa8b9..c9c64e1210be 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.9.0", + "version": "2.10.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/bundler-plugin-core": "2.10.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 5a4d67467f84..2135534e637a 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.9.0", + "version": "2.10.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.9.0", + "@sentry/bundler-plugin-core": "2.10.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.9.0", + "@sentry-internal/eslint-config": "2.10.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From ff690386b7db703cdc329efc372ec1bbdfb53cb4 Mon Sep 17 00:00:00 2001 From: Andrei Conache Date: Tue, 14 Nov 2023 13:26:45 +0200 Subject: [PATCH 301/640] chore: bump @sentry/cli dependency to 2.21.4 (#440) fixes: https://github.com/getsentry/sentry-cli/pull/1815 Co-authored-by: Andrei --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 86a7e22092bf..03fbfaa6443e 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,7 +52,7 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^2.21.2", + "@sentry/cli": "^2.21.4", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", diff --git a/yarn.lock b/yarn.lock index 0e65c43f8179..0ab7e7ce5aa8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2369,10 +2369,10 @@ "@sentry/utils" "7.60.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/cli@^2.21.2": - version "2.21.2" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.21.2.tgz#89e5633ff48a83d078c76c6997fffd4b68b2da1c" - integrity sha512-X1nye89zl+QV3FSuQDGItfM51tW9PQ7ce0TtV/12DgGgTVEgnVp5uvO3wX5XauHvulQzRPzwUL3ZK+yS5bAwCw== +"@sentry/cli@^2.21.4": + version "2.21.4" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.21.4.tgz#58d62afd22bdca832f4faf52ee120420e1c293ef" + integrity sha512-KIgvgl1DB/i41GmXfJkv96TdtKeJIhiV6l5OLRmxtnvA2JTqAQaeH+YMHE+vpZ/0FqtLK5clIkt5ReQNpmigPg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" From 6f44fbf15bc7b36a8eacfb188b0188c4d393f364 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 15 Nov 2023 17:00:56 +0100 Subject: [PATCH 302/640] meta: Update changelog for 2.10.1 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72c7a54fd5ac..796da22699dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.10.1 + +- chore: bump @sentry/cli dependency to 2.21.4 (#440) + ## 2.10.0 - feat: deprecate `excludeReplayCanvas` config (#436) From bab6e34849644eb919558ad0f8389b1ec04a2be3 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 15 Nov 2023 16:03:05 +0000 Subject: [PATCH 303/640] release: 2.10.1 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 482156332764..f370dbbcccde 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.10.0", + "version": "2.10.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 03fbfaa6443e..38bfa51548a1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.10.0", + "version": "2.10.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 8e3ff6d5b4aa..b5bb2db73af5 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 175cc4e873f0..89453ef5bd39 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.10.0", - "@sentry/rollup-plugin": "2.10.0", - "@sentry/vite-plugin": "2.10.0", - "@sentry/webpack-plugin": "2.10.0", + "@sentry/esbuild-plugin": "2.10.1", + "@sentry/rollup-plugin": "2.10.1", + "@sentry/vite-plugin": "2.10.1", + "@sentry/webpack-plugin": "2.10.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 827f56ab2d91..fb8a37722a29 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.10.0", + "version": "2.10.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index b3bd86dd2bac..f782249a5826 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8d38af22271c..33274e335447 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", - "@sentry/bundler-plugin-core": "2.10.0", - "@sentry/esbuild-plugin": "2.10.0", - "@sentry/rollup-plugin": "2.10.0", - "@sentry/vite-plugin": "2.10.0", - "@sentry/webpack-plugin": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/esbuild-plugin": "2.10.1", + "@sentry/rollup-plugin": "2.10.1", + "@sentry/vite-plugin": "2.10.1", + "@sentry/webpack-plugin": "2.10.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index a5ed4452507e..d69efa5b73b7 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 2b75ccf66907..79c2e8f57d43 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.10.0", + "version": "2.10.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index d5be34b768ac..8b04d7a7d6fb 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.10.0", + "version": "2.10.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c9c64e1210be..e25f1dd4a1c4 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.10.0", + "version": "2.10.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2135534e637a..cc73a8a61a76 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.10.0", + "version": "2.10.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.0", + "@sentry/bundler-plugin-core": "2.10.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.10.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.0", + "@sentry-internal/eslint-config": "2.10.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From b8ce0fc409958617d77b2363e18a219483530885 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 27 Nov 2023 16:47:14 +0100 Subject: [PATCH 304/640] deps(core): Bump `@sentry/cli` to `^2.22.3` (#451) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 51 +++++++++++++++++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 38bfa51548a1..8a4233b189af 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,7 +52,7 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@sentry/cli": "^2.21.4", + "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", diff --git a/yarn.lock b/yarn.lock index 0ab7e7ce5aa8..51d3cfb71391 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2369,16 +2369,59 @@ "@sentry/utils" "7.60.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/cli@^2.21.4": - version "2.21.4" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.21.4.tgz#58d62afd22bdca832f4faf52ee120420e1c293ef" - integrity sha512-KIgvgl1DB/i41GmXfJkv96TdtKeJIhiV6l5OLRmxtnvA2JTqAQaeH+YMHE+vpZ/0FqtLK5clIkt5ReQNpmigPg== +"@sentry/cli-darwin@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.22.3.tgz#d81f6a1b2060d20adb1da7e65e1c57e050e8ffcc" + integrity sha512-A1DwFTffg3+fF68qujaJI07dk/1H1pRuihlvS5WQ9sD7nQLnXZGoLUht4eULixhDzZYinWHKkcWzQ6k40UTvNA== + +"@sentry/cli-linux-arm64@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.22.3.tgz#9bdd3f3a441017b82fdbf0986fdf3b2e19ceda0c" + integrity sha512-PnBPb4LJ+A2LlqLjtVFn4mEizcVdxBSLZvB85pEGzq9DRXjZ6ZEuGWFHTVnWvjd79TB/s0me29QnLc3n4B6lgA== + +"@sentry/cli-linux-arm@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.22.3.tgz#74ae1d9bf8a9334e155412fc66c770573b264d7c" + integrity sha512-mDtLVbqbCu/5b/v2quTAMzY/atGlJVvrqO2Wvpro0Jb/LYhn7Y1pVBdoXEDcnOX82/pseFkLT8PFfq/OcezPhA== + +"@sentry/cli-linux-i686@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.22.3.tgz#8e077d2f48c6c9a791e2db303c55bd4b3f47e2f8" + integrity sha512-wxvbpQ2hiw4hwJWfJMp7K45BV40nXL62f91jLuftFXIbieKX1Li57NNKNu2JUVn7W1bJxkwz/PKGGTXSgeJlRw== + +"@sentry/cli-linux-x64@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.22.3.tgz#c3d653032105043b5e72202812c2b85dbbfbabbb" + integrity sha512-0GxsYNO5GyRWifeOpng+MmdUFZRA64bgA1n1prsEsXnoeLcm3Zj4Q63hBZmiwz9Qbhf5ibohkpf94a7dI7pv3A== + +"@sentry/cli-win32-i686@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.22.3.tgz#836baaa8af96b5249c753d2f0b5c111d4c850e4a" + integrity sha512-YERPsd7ClBrxKcmCUw+ZrAvQfbyIZFrqh269hgDuXFodpsB7LPGnI33ilo0uzmKdq2vGppTb6Z3gf1Rbq0Hadg== + +"@sentry/cli-win32-x64@2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.22.3.tgz#c450136539e8860d46434a932383005cffd89136" + integrity sha512-NUh56xWvgJo2KuC9lI6o6nTPXdzbpQUB4qGwJ73L9NP3HT2P1I27jtHyrC2zlXTVlYE23gQZGrL3wgW4Jy80QA== + +"@sentry/cli@^2.22.3": + version "2.22.3" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.22.3.tgz#e28613885c30979f4760de7365e5d30d5a32d51d" + integrity sha512-VFHdtrHsMyTRSZhDLeMyXvit7xB4e81KugIEwMve95c7h5HO672bfmCcM/403CAugj4NzvQ+IR2NKF/2SsEPlg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" progress "^2.0.3" proxy-from-env "^1.1.0" which "^2.0.2" + optionalDependencies: + "@sentry/cli-darwin" "2.22.3" + "@sentry/cli-linux-arm" "2.22.3" + "@sentry/cli-linux-arm64" "2.22.3" + "@sentry/cli-linux-i686" "2.22.3" + "@sentry/cli-linux-x64" "2.22.3" + "@sentry/cli-win32-i686" "2.22.3" + "@sentry/cli-win32-x64" "2.22.3" "@sentry/core@7.50.0": version "7.50.0" From 8a755c1092b01d9696f6ebdf20129feb2c3a6d2a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 27 Nov 2023 16:48:43 +0100 Subject: [PATCH 305/640] meta: Update changelog for 2.10.2 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 796da22699dc..553973f11558 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.10.2 + +- deps(core): Bump `@sentry/cli` to `^2.22.3` (#451) + ## 2.10.1 - chore: bump @sentry/cli dependency to 2.21.4 (#440) From 060bb6089d25b29285ea460caa20d71f18582afb Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 27 Nov 2023 15:49:56 +0000 Subject: [PATCH 306/640] release: 2.10.2 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index f370dbbcccde..12a80f616f3e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.10.1", + "version": "2.10.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8a4233b189af..5fbe32293ee1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.10.1", + "version": "2.10.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b5bb2db73af5..6dcc18aa5b68 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 89453ef5bd39..e782a6f2d246 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.10.1", - "@sentry/rollup-plugin": "2.10.1", - "@sentry/vite-plugin": "2.10.1", - "@sentry/webpack-plugin": "2.10.1", + "@sentry/esbuild-plugin": "2.10.2", + "@sentry/rollup-plugin": "2.10.2", + "@sentry/vite-plugin": "2.10.2", + "@sentry/webpack-plugin": "2.10.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index fb8a37722a29..bb1db7a11899 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.10.1", + "version": "2.10.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index f782249a5826..35a40268b199 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 33274e335447..45f07f2a03ba 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", - "@sentry/bundler-plugin-core": "2.10.1", - "@sentry/esbuild-plugin": "2.10.1", - "@sentry/rollup-plugin": "2.10.1", - "@sentry/vite-plugin": "2.10.1", - "@sentry/webpack-plugin": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/esbuild-plugin": "2.10.2", + "@sentry/rollup-plugin": "2.10.2", + "@sentry/vite-plugin": "2.10.2", + "@sentry/webpack-plugin": "2.10.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index d69efa5b73b7..b98c851d426c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 79c2e8f57d43..84025ed0a821 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.10.1", + "version": "2.10.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 8b04d7a7d6fb..b704ade27960 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.10.1", + "version": "2.10.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e25f1dd4a1c4..718d10fe439b 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.10.1", + "version": "2.10.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index cc73a8a61a76..845b76f330bd 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.10.1", + "version": "2.10.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.1", + "@sentry/bundler-plugin-core": "2.10.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.10.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.1", + "@sentry-internal/eslint-config": "2.10.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 81e3de95ad1b3d1777818a404bf0c57c65842497 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 8 Jan 2024 13:22:46 +0100 Subject: [PATCH 307/640] chore: Update migration guide to include removal of `.sentryclirc` support Fixes https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/458 --- MIGRATION.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MIGRATION.md b/MIGRATION.md index eb85607e2f0d..2bd279985e8f 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -11,6 +11,8 @@ This document serves as a migration guide, documenting all breaking changes betw - Removed `customHeader` option in favor of `headers` option which allows for multiple headers to be attached to outgoing requests. - The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` - Removed the `configFile` option. Options should now be set explicitly or via environment variables. + This also means that `.sentryclirc` files will no longer work as a means of configuration. + Please manually pass in options, or use a configuration file ([Webpack plugin docs](https://www.npmjs.com/package/@sentry/webpack-plugin#configuration-file), [Vite plugin docs](https://www.npmjs.com/package/@sentry/vite-plugin#configuration-file), [esbuild plugin docs](https://www.npmjs.com/package/@sentry/esbuild-plugin#configuration-file), [Rollup plugin docs](https://www.npmjs.com/package/@sentry/rollup-plugin#configuration-file)). - The minimum supported Node.js version is now 14 and newer. - Removed `dryRun` option. From 040d4b0141f6b39f66efa881871f1a83a2a23246 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 10 Jan 2024 10:37:01 +0100 Subject: [PATCH 308/640] fix: Bundle Sentry SDK dependency (#459) --- packages/bundler-plugin-core/package.json | 7 ++- yarn.lock | 71 ++++++++++------------- 2 files changed, 34 insertions(+), 44 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5fbe32293ee1..8b8ab3fd3c2a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,13 +53,12 @@ }, "dependencies": { "@sentry/cli": "^2.22.3", - "@sentry/node": "^7.60.0", - "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", - "unplugin": "1.0.1" + "unplugin": "1.0.1", + "https-proxy-agent": "^5.0.0" }, "devDependencies": { "@babel/core": "7.18.5", @@ -69,6 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", + "@sentry/node": "7.92.0", + "@sentry/utils": "7.92.0", "@sentry-internal/eslint-config": "2.10.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", diff --git a/yarn.lock b/yarn.lock index 51d3cfb71391..aa620099c38b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2359,15 +2359,14 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry-internal/tracing@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.60.0.tgz#4f101d936a45965b086e042a3fba7ec7683cc034" - integrity sha512-2qvxmR954H+K7u4o92sS2u+hntzshem9XwfHAqDvBe51arNbFVy8LfJTJ5fffgZq/6jXlozCO0/6aR5yLR5mBg== +"@sentry-internal/tracing@7.92.0": + version "7.92.0" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz#505d94a93b5df965ec6bfb35da43389988259d4d" + integrity sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA== dependencies: - "@sentry/core" "7.60.0" - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/core" "7.92.0" + "@sentry/types" "7.92.0" + "@sentry/utils" "7.92.0" "@sentry/cli-darwin@2.22.3": version "2.22.3" @@ -2432,14 +2431,13 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/core@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.60.0.tgz#c256d1305b52210d608e71de8d8f365ca9377f15" - integrity sha512-B02OlFMoqdkfDZlbQfmk7tL2vObShofk7ySd/7mp+oRdUuCvX0tyrGlwI87YJvd8YWSZOCKINs3aVYivw/b6gg== +"@sentry/core@7.92.0": + version "7.92.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz#4e74c1959348b698226c49ead7a24e165502b55c" + integrity sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ== dependencies: - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/types" "7.92.0" + "@sentry/utils" "7.92.0" "@sentry/integrations@7.50": version "7.50.0" @@ -2465,29 +2463,26 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/node@^7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.60.0.tgz#9db8fa0e71a4365b2a93a3504f2e48a38eeaae1b" - integrity sha512-I27gr7BSkdT1uwDPcbdPm7+w2yke5tojVGgothtvKfql1en4/cJZmk2bkvO2Di41+EF0UrTlUgLQff5X/q24WQ== +"@sentry/node@7.92.0": + version "7.92.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.92.0.tgz#880d3be5cb8ef805a6856c619db3951b1678f726" + integrity sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA== dependencies: - "@sentry-internal/tracing" "7.60.0" - "@sentry/core" "7.60.0" - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - cookie "^0.4.1" + "@sentry-internal/tracing" "7.92.0" + "@sentry/core" "7.92.0" + "@sentry/types" "7.92.0" + "@sentry/utils" "7.92.0" https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^2.4.1 || ^1.9.3" "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/types@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.60.0.tgz#e3e5f16436feff802b1b126a16dba537000cef55" - integrity sha512-MSEuF9YjE0j+UKdqee2AzcNlMnShVNTkCB2Wnng6Bc5hHhn4fyYeTLbuFpNxL0ffN65lxblaWx6doDsMcvRxcA== +"@sentry/types@7.92.0": + version "7.92.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz#4c308fdb316c0272f55f0816230fe87e7b9b551a" + integrity sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg== "@sentry/utils@7.50.0": version "7.50.0" @@ -2497,13 +2492,12 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" -"@sentry/utils@7.60.0", "@sentry/utils@^7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.60.0.tgz#a96d772dcc2d007f73a5bcf67dcc66f6a7085736" - integrity sha512-Oc/PQqzeNDOSy4ZzVj6h9U+GEGRkg2PEVn9PC2V9/v3HDD20mndFqR/S2B5OOgDb/6pNGyz8XiZYI5rb29WFHA== +"@sentry/utils@7.92.0": + version "7.92.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz#20ed29742594eab007f9ff72e008b5262456a319" + integrity sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA== dependencies: - "@sentry/types" "7.60.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/types" "7.92.0" "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" @@ -12065,11 +12059,6 @@ tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== -"tslib@^2.4.1 || ^1.9.3": - version "2.6.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From 1c6adf0d3fff6f849326a8c387f934b3638ff974 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 10 Jan 2024 11:24:40 +0100 Subject: [PATCH 309/640] Revert "fix: Bundle Sentry SDK dependency (#459)" This reverts commit 040d4b0141f6b39f66efa881871f1a83a2a23246. --- packages/bundler-plugin-core/package.json | 7 +-- yarn.lock | 71 +++++++++++++---------- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8b8ab3fd3c2a..5fbe32293ee1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,12 +53,13 @@ }, "dependencies": { "@sentry/cli": "^2.22.3", + "@sentry/node": "^7.60.0", + "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", "magic-string": "0.27.0", - "unplugin": "1.0.1", - "https-proxy-agent": "^5.0.0" + "unplugin": "1.0.1" }, "devDependencies": { "@babel/core": "7.18.5", @@ -68,8 +69,6 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry/node": "7.92.0", - "@sentry/utils": "7.92.0", "@sentry-internal/eslint-config": "2.10.2", "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", "@swc/core": "^1.2.205", diff --git a/yarn.lock b/yarn.lock index aa620099c38b..51d3cfb71391 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2359,14 +2359,15 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry-internal/tracing@7.92.0": - version "7.92.0" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz#505d94a93b5df965ec6bfb35da43389988259d4d" - integrity sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA== +"@sentry-internal/tracing@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.60.0.tgz#4f101d936a45965b086e042a3fba7ec7683cc034" + integrity sha512-2qvxmR954H+K7u4o92sS2u+hntzshem9XwfHAqDvBe51arNbFVy8LfJTJ5fffgZq/6jXlozCO0/6aR5yLR5mBg== dependencies: - "@sentry/core" "7.92.0" - "@sentry/types" "7.92.0" - "@sentry/utils" "7.92.0" + "@sentry/core" "7.60.0" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sentry/cli-darwin@2.22.3": version "2.22.3" @@ -2431,13 +2432,14 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/core@7.92.0": - version "7.92.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz#4e74c1959348b698226c49ead7a24e165502b55c" - integrity sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ== +"@sentry/core@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.60.0.tgz#c256d1305b52210d608e71de8d8f365ca9377f15" + integrity sha512-B02OlFMoqdkfDZlbQfmk7tL2vObShofk7ySd/7mp+oRdUuCvX0tyrGlwI87YJvd8YWSZOCKINs3aVYivw/b6gg== dependencies: - "@sentry/types" "7.92.0" - "@sentry/utils" "7.92.0" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sentry/integrations@7.50": version "7.50.0" @@ -2463,26 +2465,29 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/node@7.92.0": - version "7.92.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.92.0.tgz#880d3be5cb8ef805a6856c619db3951b1678f726" - integrity sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA== +"@sentry/node@^7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.60.0.tgz#9db8fa0e71a4365b2a93a3504f2e48a38eeaae1b" + integrity sha512-I27gr7BSkdT1uwDPcbdPm7+w2yke5tojVGgothtvKfql1en4/cJZmk2bkvO2Di41+EF0UrTlUgLQff5X/q24WQ== dependencies: - "@sentry-internal/tracing" "7.92.0" - "@sentry/core" "7.92.0" - "@sentry/types" "7.92.0" - "@sentry/utils" "7.92.0" + "@sentry-internal/tracing" "7.60.0" + "@sentry/core" "7.60.0" + "@sentry/types" "7.60.0" + "@sentry/utils" "7.60.0" + cookie "^0.4.1" https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^2.4.1 || ^1.9.3" "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/types@7.92.0": - version "7.92.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz#4c308fdb316c0272f55f0816230fe87e7b9b551a" - integrity sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg== +"@sentry/types@7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.60.0.tgz#e3e5f16436feff802b1b126a16dba537000cef55" + integrity sha512-MSEuF9YjE0j+UKdqee2AzcNlMnShVNTkCB2Wnng6Bc5hHhn4fyYeTLbuFpNxL0ffN65lxblaWx6doDsMcvRxcA== "@sentry/utils@7.50.0": version "7.50.0" @@ -2492,12 +2497,13 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" -"@sentry/utils@7.92.0": - version "7.92.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz#20ed29742594eab007f9ff72e008b5262456a319" - integrity sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA== +"@sentry/utils@7.60.0", "@sentry/utils@^7.60.0": + version "7.60.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.60.0.tgz#a96d772dcc2d007f73a5bcf67dcc66f6a7085736" + integrity sha512-Oc/PQqzeNDOSy4ZzVj6h9U+GEGRkg2PEVn9PC2V9/v3HDD20mndFqR/S2B5OOgDb/6pNGyz8XiZYI5rb29WFHA== dependencies: - "@sentry/types" "7.92.0" + "@sentry/types" "7.60.0" + tslib "^2.4.1 || ^1.9.3" "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" @@ -12059,6 +12065,11 @@ tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== +"tslib@^2.4.1 || ^1.9.3": + version "2.6.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From c493dae4d74769c10a5497bffa947fcd5e90541b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 12 Jan 2024 11:20:56 +0100 Subject: [PATCH 310/640] fix(core): Safely flush telemetry (#462) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 3 ++- .../src/plugins/release-management.ts | 3 ++- .../bundler-plugin-core/src/plugins/telemetry.ts | 3 ++- packages/bundler-plugin-core/src/sentry/telemetry.ts | 12 ++++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index c9d89d86d3c6..1e7b4822c8d2 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -8,6 +8,7 @@ import { promisify } from "util"; import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; +import { safeFlushTelemetry } from "./sentry/telemetry"; interface RewriteSourcesHook { (source: string, map: any): string; @@ -224,7 +225,7 @@ export function createDebugIdUploadFunction({ cleanupSpan.finish(); } artifactBundleUploadTransaction.finish(); - await sentryClient.flush(); + await safeFlushTelemetry(sentryClient); } }; } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index eecd0a28efde..aaa177ede731 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -2,6 +2,7 @@ import SentryCli, { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@ import { Hub, NodeClient } from "@sentry/node"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; +import { safeFlushTelemetry } from "../sentry/telemetry"; import { IncludeEntry } from "../types"; import { arrayify } from "../utils"; @@ -93,7 +94,7 @@ export function releaseManagementPlugin({ } } catch (e) { sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook'); - await sentryClient.flush(); + await safeFlushTelemetry(sentryClient); handleRecoverableError(e); } }, diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts index 4b256b6bd8e5..68f3b0bf3a08 100644 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -1,6 +1,7 @@ import { Hub, NodeClient } from "@sentry/node"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; +import { safeFlushTelemetry } from "../sentry/telemetry"; interface TelemetryPluginOptions { sentryHub: Hub; @@ -23,7 +24,7 @@ export function telemetryPlugin({ "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." ); sentryHub.startTransaction({ name: "Sentry Bundler Plugin execution" }).finish(); - await sentryClient.flush(3000); + await safeFlushTelemetry(sentryClient); } }, }; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index e6f02b767cce..219eaf0045d0 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -147,3 +147,15 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis return new URL(cliInfoUrl).hostname === SENTRY_SAAS_HOSTNAME; } + +/** + * Flushing the SDK client can fail. We never want to crash the plugin because of telemetry. + */ +export async function safeFlushTelemetry(sentryClient: NodeClient) { + try { + await sentryClient.flush(2000); + } catch { + // Noop when flushing fails. + // We don't even need to log anything because there's likely nothing the user can do and they likely will not care. + } +} From 339dc0ba3d81282251df2eff497911df15cee41c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 19 Jan 2024 09:42:29 +0100 Subject: [PATCH 311/640] meta: Update changelog for 2.10.3 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 553973f11558..e9fe412881d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.10.3 + +- fix(core): Safely flush telemetry + ## 2.10.2 - deps(core): Bump `@sentry/cli` to `^2.22.3` (#451) From 9b3defcf11b239c989e93908a0aa2261d04e8fbe Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 19 Jan 2024 08:46:34 +0000 Subject: [PATCH 312/640] release: 2.10.3 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 6 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 12a80f616f3e..ae6b03c6bd62 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.10.2", + "version": "2.10.3", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5fbe32293ee1..640d4243a3e7 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.10.2", + "version": "2.10.3", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -69,8 +69,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6dcc18aa5b68..60cf9c30be4a 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index e782a6f2d246..9cf3068c0189 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.10.2", - "@sentry/rollup-plugin": "2.10.2", - "@sentry/vite-plugin": "2.10.2", - "@sentry/webpack-plugin": "2.10.2", + "@sentry/esbuild-plugin": "2.10.3", + "@sentry/rollup-plugin": "2.10.3", + "@sentry/vite-plugin": "2.10.3", + "@sentry/webpack-plugin": "2.10.3", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index bb1db7a11899..83165f148565 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.10.2", + "version": "2.10.3", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 35a40268b199..c1d47b5f27f9 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 45f07f2a03ba..2ea5d0a17abd 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true, "scripts": { @@ -15,13 +15,13 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", - "@sentry/bundler-plugin-core": "2.10.2", - "@sentry/esbuild-plugin": "2.10.2", - "@sentry/rollup-plugin": "2.10.2", - "@sentry/vite-plugin": "2.10.2", - "@sentry/webpack-plugin": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/esbuild-plugin": "2.10.3", + "@sentry/rollup-plugin": "2.10.3", + "@sentry/vite-plugin": "2.10.3", + "@sentry/webpack-plugin": "2.10.3", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", diff --git a/packages/playground/package.json b/packages/playground/package.json index b98c851d426c..e967d807c872 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.3", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 84025ed0a821..60994bbc84bb 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.10.2", + "version": "2.10.3", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.3", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b704ade27960..b9997d688675 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.10.2", + "version": "2.10.3", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 718d10fe439b..652c887da2f8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.10.2", + "version": "2.10.3", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.3", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 845b76f330bd..2f8086086e5e 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.10.2", + "version": "2.10.3", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.2", + "@sentry/bundler-plugin-core": "2.10.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.10.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.2", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 4d123db48d7aee75e79e98b82040423d5a8c0f26 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Wed, 31 Jan 2024 17:05:20 -0500 Subject: [PATCH 313/640] feat(component-annotate): Introduce new plugin to annotate frontend components at build-time (#468) This PR in particular adds a new package to the bundler plugins; a Babel plugin that will annotate frontend components at build-time with additional data. A lot of the source code is vendored from FullStory's React annotate plugin, but has been modified and converted to TypeScript. For now, the plugin only works on React, but we can extend it to other frontend frameworks / libraries in the future. --------- Co-authored-by: George Gritsouk <989898+gggritso@users.noreply.github.com> Co-authored-by: Abhijeet Prasad --- .craft.yml | 1 + .../component-annotate-plugin/.babelrc.json | 3 + .../component-annotate-plugin/.eslintrc.js | 20 + packages/component-annotate-plugin/.gitignore | 2 + packages/component-annotate-plugin/LICENSE | 29 + packages/component-annotate-plugin/README.md | 88 + .../component-annotate-plugin/jest.config.js | 6 + .../component-annotate-plugin/package.json | 81 + .../rollup.config.js | 42 + .../src/constants.ts | 146 ++ .../component-annotate-plugin/src/index.ts | 517 ++++ .../src/tsconfig.json | 8 + .../__snapshots__/test-plugin.test.ts.snap | 515 ++++ .../test/test-plugin.test.ts | 2238 +++++++++++++++++ .../test/tsconfig.json | 8 + .../types.tsconfig.json | 11 + yarn.lock | 95 + 17 files changed, 3810 insertions(+) create mode 100644 packages/component-annotate-plugin/.babelrc.json create mode 100644 packages/component-annotate-plugin/.eslintrc.js create mode 100644 packages/component-annotate-plugin/.gitignore create mode 100644 packages/component-annotate-plugin/LICENSE create mode 100644 packages/component-annotate-plugin/README.md create mode 100644 packages/component-annotate-plugin/jest.config.js create mode 100644 packages/component-annotate-plugin/package.json create mode 100644 packages/component-annotate-plugin/rollup.config.js create mode 100644 packages/component-annotate-plugin/src/constants.ts create mode 100644 packages/component-annotate-plugin/src/index.ts create mode 100644 packages/component-annotate-plugin/src/tsconfig.json create mode 100644 packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap create mode 100644 packages/component-annotate-plugin/test/test-plugin.test.ts create mode 100644 packages/component-annotate-plugin/test/tsconfig.json create mode 100644 packages/component-annotate-plugin/types.tsconfig.json diff --git a/.craft.yml b/.craft.yml index 85179f1c2adc..e3db425cbd65 100644 --- a/.craft.yml +++ b/.craft.yml @@ -9,6 +9,7 @@ requireNames: - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - /^sentry-webpack-plugin-.*\.tgz$/ + - /^sentry-component-annotate-plugin-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ diff --git a/packages/component-annotate-plugin/.babelrc.json b/packages/component-annotate-plugin/.babelrc.json new file mode 100644 index 000000000000..0c20c06e021f --- /dev/null +++ b/packages/component-annotate-plugin/.babelrc.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env", "@babel/typescript"] +} diff --git a/packages/component-annotate-plugin/.eslintrc.js b/packages/component-annotate-plugin/.eslintrc.js new file mode 100644 index 000000000000..42b35d843948 --- /dev/null +++ b/packages/component-annotate-plugin/.eslintrc.js @@ -0,0 +1,20 @@ +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.js"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./src/tsconfig.json", "./test/tsconfig.json"], + }, + env: { + node: true, + }, + settings: { + jest: { + version: jestPackageJson.version, + }, + }, +}; diff --git a/packages/component-annotate-plugin/.gitignore b/packages/component-annotate-plugin/.gitignore new file mode 100644 index 000000000000..36d3a9c3ae4b --- /dev/null +++ b/packages/component-annotate-plugin/.gitignore @@ -0,0 +1,2 @@ +dist +.DS_Store diff --git a/packages/component-annotate-plugin/LICENSE b/packages/component-annotate-plugin/LICENSE new file mode 100644 index 000000000000..042360affa02 --- /dev/null +++ b/packages/component-annotate-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2024, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/component-annotate-plugin/README.md b/packages/component-annotate-plugin/README.md new file mode 100644 index 000000000000..562b656c805e --- /dev/null +++ b/packages/component-annotate-plugin/README.md @@ -0,0 +1,88 @@ +

+ + Sentry + +

+ +# Sentry Component Annotate Plugin (Beta) + +[![npm version](https://img.shields.io/npm/v/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/component-annotate-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/component-annotate-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@component-annotate-plugin) + +This plugin is currently in beta. Please help us improve by [reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript-bundler-plugins/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). + +A Babel plugin that automatically annotates your output DOM with their respective frontend component names. +This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. +Please note that your Sentry JavaScript SDK version must be at least `7.91.0` to take advantage of these features. +Currently, this plugin only works with React, and will exclusively parse `.jsx` and `.tsx` files. + +### Note + +This plugin comes included in Sentry's bundler plugins, alongside many other features to improve your Sentry workflow. +It can be downloaded individually, but it is recommended that you install the bundler plugins for your respective bundler, and enable this feature through the config object. + +Check out the supported bundler plugin packages for installation instructions: + +- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) +- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) +- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) +- esbuild: Not currently supported + +## Installation + +Using npm: + +```bash +npm install @sentry/component-annotate-plugin --save-dev +``` + +Using yarn: + +```bash +yarn add @sentry/component-annotate-plugin --dev +``` + +Using pnpm: + +```bash +pnpm install @sentry/component-annotate-plugin --dev +``` + +## Example + +```js +// babel.config.js + +{ + // ... other config above ... + + plugins: [ + // Put this plugin before any other plugins you have that transform JSX code + ['@sentry/component-annotate-plugin'] + ], +} +``` + +Or alternatively, configure the plugin by directly importing it: + +```js +// babel.config.js + +import {componentNameAnnotatePlugin} from '@sentry/component-annotate-plugin'; + +{ + // ... other config above ... + + plugins: [ + // Put this plugin before any other plugins you have that transform JSX code + [componentNameAnnotatePlugin] + ], +} +``` + +## More information + +- [Sentry Documentation](https://docs.sentry.io/quickstart/) +- [Sentry Discord](https://discord.gg/Ww9hbqr) +- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/component-annotate-plugin/jest.config.js b/packages/component-annotate-plugin/jest.config.js new file mode 100644 index 000000000000..160178bbd22f --- /dev/null +++ b/packages/component-annotate-plugin/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + testEnvironment: "node", + transform: { + "^.+\\.(t|j)sx?$": ["@swc/jest"], + }, +}; diff --git a/packages/component-annotate-plugin/package.json b/packages/component-annotate-plugin/package.json new file mode 100644 index 000000000000..a995e46a7a2f --- /dev/null +++ b/packages/component-annotate-plugin/package.json @@ -0,0 +1,81 @@ +{ + "name": "@sentry/component-annotate-plugin", + "version": "2.10.3", + "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/component-annotate-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "React", + "bundler", + "plugin", + "babel", + "component", + "annotate" + ], + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.js", + "types": "./dist/types/index.d.ts" + } + }, + "main": "dist/cjs/index.js", + "module": "dist/esm/index.mjs", + "types": "dist/types/index.d.ts", + "scripts": { + "build": "rimraf ./out && run-p build:rollup build:types", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rollup --config rollup.config.js", + "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "rimraf ./dist *.tgz", + "clean:deps": "rimraf node_modules", + "test": "jest", + "lint": "eslint ./src ./test", + "prepack": "ts-node ./src/prepack.ts" + }, + "dependencies": {}, + "devDependencies": { + "@babel/core": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "7.17.12", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-node-resolve": "13.3.0", + "@sentry-internal/eslint-config": "2.10.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@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", + "rimraf": "^3.0.2", + "rollup": "2.75.7", + "ts-node": "^10.9.1", + "typescript": "^4.7.4" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 14" + } +} diff --git a/packages/component-annotate-plugin/rollup.config.js b/packages/component-annotate-plugin/rollup.config.js new file mode 100644 index 000000000000..95b1158525af --- /dev/null +++ b/packages/component-annotate-plugin/rollup.config.js @@ -0,0 +1,42 @@ +import resolve from "@rollup/plugin-node-resolve"; +import babel from "@rollup/plugin-babel"; +import packageJson from "./package.json"; +import modulePackage from "module"; + +const input = ["src/index.ts"]; + +const extensions = [".ts"]; + +export default { + input, + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + onwarn: (warning) => { + throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + }, + plugins: [ + resolve({ + extensions, + rootDir: "./src", + preferBuiltins: true, + }), + babel({ + extensions, + babelHelpers: "bundled", + include: ["src/**/*"], + }), + ], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/component-annotate-plugin/src/constants.ts b/packages/component-annotate-plugin/src/constants.ts new file mode 100644 index 000000000000..51eac57dfe82 --- /dev/null +++ b/packages/component-annotate-plugin/src/constants.ts @@ -0,0 +1,146 @@ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +export const KNOWN_INCOMPATIBLE_PLUGINS = [ + // This module might be causing an issue preventing clicks. For safety, we won't run on this module. + "react-native-testfairy", + // This module checks for unexpected property keys and throws an exception. + "@react-navigation", +]; + +export const DEFAULT_IGNORED_ELEMENTS = [ + "a", + "abbr", + "address", + "area", + "article", + "aside", + "audio", + "b", + "base", + "bdi", + "bdo", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "cite", + "code", + "col", + "colgroup", + "data", + "datalist", + "dd", + "del", + "details", + "dfn", + "dialog", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hgroup", + "hr", + "html", + "i", + "iframe", + "img", + "input", + "ins", + "kbd", + "keygen", + "label", + "legend", + "li", + "link", + "main", + "map", + "mark", + "menu", + "menuitem", + "meter", + "nav", + "noscript", + "object", + "ol", + "optgroup", + "option", + "output", + "p", + "param", + "pre", + "progress", + "q", + "rb", + "rp", + "rt", + "rtc", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "small", + "source", + "span", + "strong", + "style", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "u", + "ul", + "var", + "video", + "wbr", +]; diff --git a/packages/component-annotate-plugin/src/index.ts b/packages/component-annotate-plugin/src/index.ts new file mode 100644 index 000000000000..894155c0d4ea --- /dev/null +++ b/packages/component-annotate-plugin/src/index.ts @@ -0,0 +1,517 @@ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +/** + * The following code is based on the FullStory Babel plugin, but has been modified to work + * with Sentry products: + * + * - Added `sentry` to data properties, i.e `data-sentry-component` + * - Converted to TypeScript + * - Code cleanups + */ + +import type * as Babel from "@babel/core"; +import type { PluginObj, PluginPass } from "@babel/core"; + +import { DEFAULT_IGNORED_ELEMENTS, KNOWN_INCOMPATIBLE_PLUGINS } from "./constants"; + +const webComponentName = "data-sentry-component"; +const webElementName = "data-sentry-element"; +const webSourceFileName = "data-sentry-source-file"; + +const nativeComponentName = "dataSentryComponent"; +const nativeElementName = "dataSentryElement"; +const nativeSourceFileName = "dataSentrySourceFile"; + +interface AnnotationOpts { + native?: boolean; + "annotate-fragments"?: boolean; + ignoreComponents?: IgnoredComponent[]; +} + +interface AnnotationPluginPass extends PluginPass { + opts: AnnotationOpts; +} + +type IgnoredComponent = [file: string, component: string, element: string]; + +type AnnotationPlugin = PluginObj; + +export function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { + return { + visitor: { + FunctionDeclaration(path, state) { + if (!path.node.id || !path.node.id.name) { + return; + } + if (isKnownIncompatiblePluginFromState(state)) { + return; + } + + functionBodyPushAttributes( + state.opts["annotate-fragments"] === true, + t, + path, + path.node.id.name, + sourceFileNameFromState(state), + attributeNamesFromState(state), + state.opts.ignoreComponents ?? [] + ); + }, + ArrowFunctionExpression(path, state) { + // We're expecting a `VariableDeclarator` like `const MyComponent =` + const parent = path.parent; + if ( + !parent || + !("id" in parent) || + !parent.id || + !("name" in parent.id) || + !parent.id.name + ) { + return; + } + + if (isKnownIncompatiblePluginFromState(state)) { + return; + } + + functionBodyPushAttributes( + state.opts["annotate-fragments"] === true, + t, + path, + parent.id.name, + sourceFileNameFromState(state), + attributeNamesFromState(state), + state.opts.ignoreComponents ?? [] + ); + }, + ClassDeclaration(path, state) { + const name = path.get("id"); + const properties = path.get("body").get("body"); + const render = properties.find((prop) => { + return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); + }); + + if (!render || !render.traverse || isKnownIncompatiblePluginFromState(state)) { + return; + } + + const ignoredComponents = state.opts.ignoreComponents ?? []; + + render.traverse({ + ReturnStatement(returnStatement) { + const arg = returnStatement.get("argument"); + + if (!arg.isJSXElement() && !arg.isJSXFragment()) { + return; + } + + processJSX( + state.opts["annotate-fragments"] === true, + t, + arg, + name.node && name.node.name, + sourceFileNameFromState(state), + attributeNamesFromState(state), + ignoredComponents + ); + }, + }); + }, + }, + }; +} + +function functionBodyPushAttributes( + annotateFragments: boolean, + t: typeof Babel.types, + path: Babel.NodePath, + componentName: string, + sourceFileName: string | undefined, + attributeNames: string[], + ignoredComponents: IgnoredComponent[] +) { + let jsxNode: Babel.NodePath; + + const functionBody = path.get("body").get("body"); + + if ( + !("length" in functionBody) && + functionBody.parent && + (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") + ) { + const maybeJsxNode = functionBody.find((c) => { + return c.type === "JSXElement" || c.type === "JSXFragment"; + }); + + if (!maybeJsxNode) { + return; + } + + jsxNode = maybeJsxNode; + } else { + const returnStatement = functionBody.find((c) => { + return c.type === "ReturnStatement"; + }); + if (!returnStatement) { + return; + } + + const arg = returnStatement.get("argument"); + if (!arg) { + return; + } + + if (Array.isArray(arg)) { + return; + } + + if (!arg.isJSXFragment() && !arg.isJSXElement()) { + return; + } + + jsxNode = arg; + } + + if (!jsxNode) { + return; + } + + processJSX( + annotateFragments, + t, + jsxNode, + componentName, + sourceFileName, + attributeNames, + ignoredComponents + ); +} + +function processJSX( + annotateFragments: boolean, + t: typeof Babel.types, + jsxNode: Babel.NodePath, + componentName: string | null, + sourceFileName: string | undefined, + attributeNames: string[], + ignoredComponents: IgnoredComponent[] +) { + if (!jsxNode) { + return; + } + + // NOTE: I don't know of a case where `openingElement` would have more than one item, + // but it's safer to always iterate + const paths = jsxNode.get("openingElement"); + const openingElements = Array.isArray(paths) ? paths : [paths]; + + openingElements.forEach((openingElement) => { + applyAttributes( + t, + openingElement as Babel.NodePath, + componentName, + sourceFileName, + attributeNames, + ignoredComponents + ); + }); + + let children = jsxNode.get("children"); + // TODO: See why `Array.isArray` doesn't have correct behaviour here + if (children && !("length" in children)) { + // A single child was found, maybe a bit of static text + children = [children]; + } + + let shouldSetComponentName = annotateFragments; + + children.forEach((child) => { + // Happens for some node types like plain text + if (!child.node) { + return; + } + + // Children don't receive the data-component attribute so we pass null for componentName unless it's the first child of a Fragment with a node and `annotateFragments` is true + const openingElement = child.get("openingElement"); + // TODO: Improve this. We never expect to have multiple opening elements + // but if it's possible, this should work + if (Array.isArray(openingElement)) { + return; + } + + if (shouldSetComponentName && openingElement && openingElement.node) { + shouldSetComponentName = false; + processJSX( + annotateFragments, + t, + child, + componentName, + sourceFileName, + attributeNames, + ignoredComponents + ); + } else { + processJSX( + annotateFragments, + t, + child, + null, + sourceFileName, + attributeNames, + ignoredComponents + ); + } + }); +} + +function applyAttributes( + t: typeof Babel.types, + openingElement: Babel.NodePath, + componentName: string | null, + sourceFileName: string | undefined, + attributeNames: string[], + ignoredComponents: IgnoredComponent[] +) { + const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; + + if (isReactFragment(t, openingElement)) { + return; + } + // e.g., Raw JSX text like the `A` in `

a

` + if (!openingElement.node) { + return; + } + + if (!openingElement.node.attributes) openingElement.node.attributes = []; + const elementName = getPathName(t, openingElement); + + const isAnIgnoredComponent = ignoredComponents.some( + (ignoredComponent) => + matchesIgnoreRule(ignoredComponent[0], sourceFileName) && + matchesIgnoreRule(ignoredComponent[1], componentName) && + matchesIgnoreRule(ignoredComponent[2], elementName) + ); + + // Add a stable attribute for the element name but only for non-DOM names + let isAnIgnoredElement = false; + if ( + !isAnIgnoredComponent && + !hasAttributeWithName(openingElement, componentAttributeName) && + (componentAttributeName !== elementAttributeName || !componentName) + ) { + if (DEFAULT_IGNORED_ELEMENTS.includes(elementName)) { + isAnIgnoredElement = true; + } else { + // TODO: Is it possible to avoid this null check? + if (elementAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)) + ); + } + } + } + + // Add a stable attribute for the component name (absent for non-root elements) + if ( + componentName && + !isAnIgnoredComponent && + !hasAttributeWithName(openingElement, componentAttributeName) + ) { + // TODO: Is it possible to avoid this null check? + if (componentAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) + ); + } + } + + // Add a stable attribute for the source file name (absent for non-root elements) + if ( + sourceFileName && + !isAnIgnoredComponent && + (componentName || isAnIgnoredElement === false) && + !hasAttributeWithName(openingElement, sourceFileAttributeName) + ) { + // TODO: Is it possible to avoid this null check? + if (sourceFileAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)) + ); + } + } +} + +function sourceFileNameFromState(state: AnnotationPluginPass) { + const name = fullSourceFileNameFromState(state); + if (!name) { + return undefined; + } + + if (name.indexOf("/") !== -1) { + return name.split("/").pop(); + } else if (name.indexOf("\\") !== -1) { + return name.split("\\").pop(); + } else { + return name; + } +} + +function fullSourceFileNameFromState(state: AnnotationPluginPass): string | null { + // @ts-expect-error This type is incorrect in Babel, `sourceFileName` is the correct type + const name = state.file.opts.parserOpts?.sourceFileName as unknown; + + if (typeof name === "string") { + return name; + } + + return null; +} + +function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass) { + const fullSourceFileName = fullSourceFileNameFromState(state); + + if (!fullSourceFileName) { + return false; + } + + return KNOWN_INCOMPATIBLE_PLUGINS.some((pluginName) => { + if ( + fullSourceFileName.includes(`/node_modules/${pluginName}/`) || + fullSourceFileName.includes(`\\node_modules\\${pluginName}\\`) + ) { + return true; + } + + return false; + }); +} + +function attributeNamesFromState(state: AnnotationPluginPass): [string, string, string] { + if (state.opts.native) { + return [nativeComponentName, nativeElementName, nativeSourceFileName]; + } + + return [webComponentName, webElementName, webSourceFileName]; +} + +function isReactFragment(t: typeof Babel.types, openingElement: Babel.NodePath): boolean { + if (openingElement.isJSXFragment()) { + return true; + } + + const elementName = getPathName(t, openingElement); + + if (elementName === "Fragment" || elementName === "React.Fragment") { + return true; + } + + // TODO: All these objects are typed as unknown, maybe an oversight in Babel types? + if ( + openingElement.node && + "name" in openingElement.node && + openingElement.node.name && + typeof openingElement.node.name === "object" && + "type" in openingElement.node.name && + openingElement.node.name.type === "JSXMemberExpression" + ) { + if (!("name" in openingElement.node)) { + return false; + } + + const nodeName = openingElement.node.name; + if (typeof nodeName !== "object" || !nodeName) { + return false; + } + + if ("object" in nodeName && "property" in nodeName) { + const nodeNameObject = nodeName.object; + const nodeNameProperty = nodeName.property; + + if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { + return false; + } + + if (!nodeNameObject || !nodeNameProperty) { + return false; + } + + const objectName = "name" in nodeNameObject && nodeNameObject.name; + const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + + if (objectName === "React" && propertyName === "Fragment") { + return true; + } + } + } + + return false; +} + +function matchesIgnoreRule(rule: string, name: string | undefined | null) { + return rule === "*" || rule === name; +} + +function hasAttributeWithName( + openingElement: Babel.NodePath, + name: string | undefined | null +): boolean { + if (!name) { + return false; + } + + return openingElement.node.attributes.some((node) => { + if (node.type === "JSXAttribute") { + return node.name.name === name; + } + + return false; + }); +} + +function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { + if (!path.node) return UNKNOWN_ELEMENT_NAME; + if (!("name" in path.node)) { + return UNKNOWN_ELEMENT_NAME; + } + + const name = path.node.name; + + if (typeof name === "string") { + return name; + } + + if (t.isIdentifier(name) || t.isJSXIdentifier(name)) { + return name.name; + } + + if (t.isJSXNamespacedName(name)) { + return name.name.name; + } + + return UNKNOWN_ELEMENT_NAME; +} + +const UNKNOWN_ELEMENT_NAME = "unknown"; diff --git a/packages/component-annotate-plugin/src/tsconfig.json b/packages/component-annotate-plugin/src/tsconfig.json new file mode 100644 index 000000000000..fd37e1237c42 --- /dev/null +++ b/packages/component-annotate-plugin/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "include": ["./**/*", "../package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap b/packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap new file mode 100644 index 000000000000..a5c615e1c965 --- /dev/null +++ b/packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap @@ -0,0 +1,515 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +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\\")); +}; +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\\")))(); +}; +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\\")))(); +}; +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\\")))(); +}; +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\\")); +}; +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\\")); +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\\")); +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\\")); +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\\")); +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\\")); +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\\")); +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\\"); +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\\")); +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\\")); +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\\")); +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\\")); +}; +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\\")); +}; +export default componentName;" +`; + +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\\")); + } +} +export default componentName;" +`; + +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\\"); + } +} +export default componentName;" +`; + +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\\")); + } +} +export default componentName;" +`; + +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\\")); + } +} +export default componentName;" +`; + +exports[`component-fragment snapshot matches 1`] = ` +"import React, { Component, Fragment } from 'react'; +class componentName extends Component { + render() { + return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + } +} +export default componentName;" +`; + +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\\"); + } +} +export default componentName;" +`; + +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\\"); + } +} +export default componentName;" +`; + +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\\"); + } +} +export default componentName;" +`; + +exports[`nonJSX snapshot matches 1`] = ` +"import React, { Component } from 'react'; +class TestClass extends Component { + test() { + return true; + } +} +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\\")); +}; +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\\")); +}; +export default componentName;" +`; + +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\\")); + } +} +export default PureComponentName;" +`; + +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\\")); + } +} +export default PureComponentName;" +`; + +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\\")); + } +} +export default PureComponentName;" +`; + +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\\")); + } +} +export default PureComponentName;" +`; + +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\\")); + } +} +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(\\"div\\", { + \\"data-sentry-component\\": \\"componentName\\" + }, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\" + })); +}; +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\", + \\"data-sentry-component\\": \\"componentName\\" + })); +}; +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\", + \\"data-sentry-component\\": \\"componentName\\" + })); +}; +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\", + \\"data-sentry-component\\": \\"componentName\\" + })); +}; +export default componentName;" +`; + +exports[`rawfunction-fragment snapshot matches 1`] = ` +"import React, { Component, Fragment } from 'react'; +function SubComponent() { + return /*#__PURE__*/React.createElement(Fragment, null, \\"Sub\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\" + })); +}; +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\" + })); +}; +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\\"); +} +const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { + \\"data-sentry-element\\": \\"SubComponent\\" + })); +}; +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\\"; +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } +} +class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: \\"PizzaTranslator\\", + dataSentrySourceFile: \\"filename-test.js\\" + })); +} +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } +});" +`; + +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\\")); + } +} +export default componentName;" +`; diff --git a/packages/component-annotate-plugin/test/test-plugin.test.ts b/packages/component-annotate-plugin/test/test-plugin.test.ts new file mode 100644 index 000000000000..5a9ff11c3f57 --- /dev/null +++ b/packages/component-annotate-plugin/test/test-plugin.test.ts @@ -0,0 +1,2238 @@ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +import { transform } from "@babel/core"; +import { componentNameAnnotatePlugin as plugin } from "../src/index"; + +const BananasPizzaAppStandardInput = `import React, { Component } from 'react'; +import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; + +UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; + +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return ; + } +} + +class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { text: '' }; + } + + render() { + return + this.setState({ text })} value={this.state.text} /> + + {this.state.text.split(' ').map(word => word && '🍕').join(' ')} + + ; + } +} + +export default function App() { + return + FullStory ReactNative testing app + + + ; +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } +});`; + +const BananasStandardInput = `import React, { Component } from 'react'; +import { Image } from 'react-native'; + +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return ; + } +}`; + +it("unknown-element snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return

A

; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return <>A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-annotate-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return <>A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-annotate-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return +

Hello world

+
; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-annotate-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return <> +

Hello world

+ ; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + <> +

Hello world

+ +); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-trivial-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + Hello world +); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + <> +

Hello world

+ +); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-fragment-once snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + +

Hello world

+

Hola Sol

+
+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn-annotate-fragment-no-whitespace snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( +

Hello world

Hola Sol

+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("option-attribute snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return
+

Hello world

+
; + } +} + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-annotate-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-annotate-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-annotate-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return <>Sub; +} + +const componentName = () => { + return <> + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return <>Sub; +} + +const componentName = () => { + return <> + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-noreturn snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( +
+

Hello world

+
+); + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("tags snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; +import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; + +UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; + +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return ; + } +} + +class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { text: '' }; + } + + render() { + return + this.setState({ text })} value={this.state.text} /> + + {this.state.text.split(' ').map(word => word && '🍕').join(' ')} + + ; + } +} + +export default function App() { + return + FullStory ReactNative testing app + + + ; +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } +}); +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("option-format snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("pureComponent-fragment snapshot matches", () => { + const result = transform( + `import React, { Fragment } from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return +

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("pureComponent-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return <> +

Hello world

+ ; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("pureComponent-react-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return +

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("rawfunction snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return
Sub
; +} + +const componentName = () => { + return
+ +
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => { + return +

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +const componentName = () => { + return <> +

Hello world

+ ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return +

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("nonJSX snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class TestClass extends Component { + test() { + return true; + } +} + +export default TestClass; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-anonymous-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => { + return (() => +

Hello world

+
)(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-anonymous-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return (() => <> +

Hello world

+ )(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("arrow-anonymous-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return (() => +

Hello world

+
)(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("pure snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return
+

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("component-fragment-native snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("pure-native snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return
+

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); + +it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=nomatch dataSentryElement=nomatch snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("ignore components dataSentrySourceFile=* dataSentryComponent=nomatch dataSentryElement=nomatch snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["*", "nomatch", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=nomatch snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "*", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=nomatch dataSentryElement=* snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "*"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=nomatch snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=nomatch dataSentryElement=* snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=* snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + }" + `); +}); + +// This tests out matching only `dataSentryElement`, with * for the others +it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=match snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["*", "*", "Image"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + }" + `); +}); + +// This tests out matching only `dataSentryElement` and `dataSentryComponent`, with * for `dataSentrySourceFile` +it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["*", "Bananas", "Image"]] }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + }" + `); +}); + +// This tests out matching on all 3 of our ignore list values +it("Bananas ignore components dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [plugin, { native: true, ignoreComponents: [["filename-test.js", "Bananas", "Image"]] }], + ], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + }" + `); +}); + +// This tests out matching on all 3 of our ignore list values via * +it("Bananas/Pizza/App ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=* snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["*", "*", "*"]] }]], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + } + }, /*#__PURE__*/React.createElement(TextInput, { + style: { + backgroundColor: '#000', + color: '#eee', + padding: 8 + }, + placeholder: \\"Type here to translate!\\" // not supported on iOS + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + } + }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); + } + } + export default function App() { + return /*#__PURE__*/React.createElement(View, { + style: styles.container + }, /*#__PURE__*/React.createElement(Text, { + style: { + color: '#eee' + } + }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +// This tests out matching on all 3 of our ignore list values +it("Bananas/Pizza/App ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=* snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "*", "*"]] }]], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: \\"PizzaTranslator\\", + dataSentrySourceFile: \\"filename-test.js\\" + })); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App only Bananas dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Pizza + ["filename-test.js", "PizzaTranslator", "View"], + // App + ["filename-test.js", "App", "View"], + ], + }, + ], + ], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + } + }, /*#__PURE__*/React.createElement(TextInput, { + style: { + backgroundColor: '#000', + color: '#eee', + padding: 8 + }, + placeholder: \\"Type here to translate!\\" // not supported on iOS + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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 + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: \\"PizzaTranslator\\", + dataSentrySourceFile: \\"filename-test.js\\" + })); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App only Pizza dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Bananas + ["filename-test.js", "Bananas", "Image"], + // App + ["filename-test.js", "App", "View"], + ], + }, + ], + ], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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 + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: \\"PizzaTranslator\\", + dataSentrySourceFile: \\"filename-test.js\\" + })); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App only App dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Bananas + ["filename-test.js", "Bananas", "Image"], + // Pizza + ["filename-test.js", "PizzaTranslator", "View"], + ], + }, + ], + ], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + } + }, /*#__PURE__*/React.createElement(TextInput, { + style: { + backgroundColor: '#000', + color: '#eee', + padding: 8 + }, + placeholder: \\"Type here to translate!\\" // not supported on iOS + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: \\"PizzaTranslator\\", + dataSentrySourceFile: \\"filename-test.js\\" + })); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App No Pizza Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Pizza Element + ["filename-test.js", null, "PizzaTranslator"], + ], + }, + ], + ], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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\\" + }), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App No Bananas Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Bananas Element + ["filename-test.js", null, "Bananas"], + ], + }, + ], + ], + }); + + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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\\" + })); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas/Pizza/App No Bananas/Pizza Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [ + plugin, + { + native: true, + ignoreComponents: [ + // Bananas Element + ["filename-test.js", null, "Bananas"], + // Pizza Element + ["filename-test.js", null, "PizzaTranslator"], + ], + }, + ], + ], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryElement: \\"Image\\", + dataSentryComponent: \\"Bananas\\", + dataSentrySourceFile: \\"filename-test.js\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + 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 + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text, + dataSentryElement: \\"TextInput\\", + dataSentrySourceFile: \\"filename-test.js\\" + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + }, + 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\\" + }, /*#__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, null)); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("Bananas incompatible plugin @react-navigation source snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "test/node_modules/@react-navigation/core/filename-test.js", + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + }); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + import { Image } from 'react-native'; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + }" + `); +}); diff --git a/packages/component-annotate-plugin/test/tsconfig.json b/packages/component-annotate-plugin/test/tsconfig.json new file mode 100644 index 000000000000..b73d9b533da9 --- /dev/null +++ b/packages/component-annotate-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../src/tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node", "jest"] + } +} diff --git a/packages/component-annotate-plugin/types.tsconfig.json b/packages/component-annotate-plugin/types.tsconfig.json new file mode 100644 index 000000000000..fb161bc4ab78 --- /dev/null +++ b/packages/component-annotate-plugin/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./src/tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/yarn.lock b/yarn.lock index 51d3cfb71391..175041167eeb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -81,6 +81,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.21.5" resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" @@ -169,6 +176,13 @@ dependencies: "@babel/types" "^7.21.4" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" @@ -195,6 +209,11 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -243,16 +262,31 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== +"@babel/helper-validator-option@^7.22.15": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" @@ -494,6 +528,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -742,6 +783,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-regenerator@^7.18.0": version "7.21.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" @@ -910,6 +984,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + "@babel/preset-typescript@7.17.12": version "7.17.12" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" @@ -965,6 +1051,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.4": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" From fba3468d503a9d11dc0a6ba767e6a5cd1f7a36f7 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Thu, 1 Feb 2024 16:16:06 -0500 Subject: [PATCH 314/640] feat(core): Include component name annotation plugin with all bundler plugins except esbuild (#469) * Add hook function for annotate plugin in core index * Add options and typing * Add to rollup, vite, webpack * Allow conditional rendering of options in docs based on supported bundlers --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/index.ts | 77 +++- .../src/options-mapping.ts | 1 + packages/bundler-plugin-core/src/types.ts | 14 + .../component-annotate-plugin/package.json | 3 +- .../src/generate-documentation-table.ts | 45 +- packages/esbuild-plugin/src/prepack.ts | 5 +- .../build-information-injection.test.ts | 2 +- .../component-name-annotate.test.ts | 37 ++ .../component-name-annotate/input/app.jsx | 14 + .../input/component-a.jsx | 3 + .../fixtures/component-name-annotate/setup.ts | 10 + packages/integration-tests/package.json | 9 + .../utils/create-cjs-bundles-for-react.ts | 179 ++++++++ packages/rollup-plugin/src/index.ts | 9 + packages/rollup-plugin/src/prepack.ts | 5 +- packages/vite-plugin/src/index.ts | 10 + packages/vite-plugin/src/prepack.ts | 5 +- packages/webpack-plugin/src/index.ts | 14 + packages/webpack-plugin/src/prepack.ts | 5 +- yarn.lock | 399 +++++++++++++++++- 21 files changed, 819 insertions(+), 30 deletions(-) create mode 100644 packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts create mode 100644 packages/integration-tests/fixtures/component-name-annotate/input/app.jsx create mode 100644 packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx create mode 100644 packages/integration-tests/fixtures/component-name-annotate/setup.ts create mode 100644 packages/integration-tests/utils/create-cjs-bundles-for-react.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 640d4243a3e7..e88033a43208 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,9 +52,11 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { + "@babel/core": "7.18.5", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", + "@sentry/component-annotate-plugin": "2.10.3", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", @@ -62,7 +64,6 @@ "unplugin": "1.0.1" }, "devDependencies": { - "@babel/core": "7.18.5", "@babel/preset-env": "7.18.2", "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d7f467588419..99a397299592 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,8 +1,10 @@ import SentryCli from "@sentry/cli"; +import { transformAsync } from "@babel/core"; +import { componentNameAnnotatePlugin } from "@sentry/component-annotate-plugin"; import * as fs from "fs"; import * as path from "path"; import MagicString from "magic-string"; -import { createUnplugin, UnpluginOptions } from "unplugin"; +import { createUnplugin, TransformResult, UnpluginOptions } from "unplugin"; import { normalizeUserOptions, validateOptions } from "./options-mapping"; import { createDebugIdUploadFunction } from "./debug-id-upload"; import { releaseManagementPlugin } from "./plugins/release-management"; @@ -22,9 +24,12 @@ import { } from "./utils"; import * as dotenv from "dotenv"; import { glob } from "glob"; +import pkg from "@sentry/utils"; +const { logger } = pkg; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; + componentNameAnnotatePlugin?: () => UnpluginOptions; moduleMetadataInjectionPlugin?: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: () => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; @@ -60,6 +65,7 @@ interface SentryUnpluginFactoryOptions { */ export function sentryUnpluginFactory({ releaseInjectionPlugin, + componentNameAnnotatePlugin, moduleMetadataInjectionPlugin, debugIdInjectionPlugin, debugIdUploadPlugin, @@ -317,6 +323,20 @@ export function sentryUnpluginFactory({ ); } + if (options.reactComponentAnnotation) { + if (!options.reactComponentAnnotation.enabled) { + logger.info( + "The component name annotate plugin is currently disabled. Skipping component name annotations." + ); + } else if (options.reactComponentAnnotation.enabled && !componentNameAnnotatePlugin) { + logger.warn( + "The component name annotate plugin is currently not supported by '@sentry/esbuild-plugin'" + ); + } else { + componentNameAnnotatePlugin && plugins.push(componentNameAnnotatePlugin()); + } + } + return plugins; }); } @@ -346,7 +366,6 @@ export function sentryCliBinaryExists(): boolean { export function createRollupReleaseInjectionHooks(injectionCode: string) { const virtualReleaseInjectionFileId = "\0sentry-release-injection-file"; - return { resolveId(id: string) { if (id === virtualReleaseInjectionFileId) { @@ -510,6 +529,60 @@ export function createRollupDebugIdUploadHooks( }; } +export function createComponentNameAnnotateHooks() { + type ParserPlugins = NonNullable< + NonNullable[1]>["parserOpts"] + >["plugins"]; + + return { + async transform(this: void, code: string, id: string): Promise { + // id may contain query and hash which will trip up our file extension logic below + const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); + + if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) { + return null; + } + + // We will only apply this plugin on jsx and tsx files + if (![".jsx", ".tsx"].some((ending) => idWithoutQueryAndHash.endsWith(ending))) { + return null; + } + + const parserPlugins: ParserPlugins = []; + if (idWithoutQueryAndHash.endsWith(".jsx")) { + parserPlugins.push("jsx"); + } else if (idWithoutQueryAndHash.endsWith(".tsx")) { + parserPlugins.push("jsx", "typescript"); + } + + try { + const result = await transformAsync(code, { + plugins: [[componentNameAnnotatePlugin]], + filename: id, + parserOpts: { + sourceType: "module", + allowAwaitOutsideFunction: true, + plugins: parserPlugins, + }, + generatorOpts: { + decoratorsBeforeExport: true, + }, + sourceMaps: true, + }); + + return { + code: result?.code ?? code, + map: result?.map, + }; + } catch (e) { + logger.error(`Failed to apply react annotate plugin`, e); + } + + return { code }; + }, + }; +} + export function getDebugIdSnippet(debugId: string): string { return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 202f40eaad08..01f066a14700 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -29,6 +29,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { cleanArtifacts: userOptions.release?.cleanArtifacts ?? false, }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, + reactComponentAnnotation: userOptions.reactComponentAnnotation, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index e34e6a1d9217..ab758b12a7da 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -278,6 +278,20 @@ export interface Options { excludeReplayWorker?: boolean; }; + /** + * Options related to react component name annotations. + * Disabled by default, unless a value is set for this option. + * When enabled, your app's DOM will automatically be annotated during build-time with their respective component names. + * This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. + * Please note that this feature is not currently supported by the esbuild bundler plugins, and will only annotate React components + */ + reactComponentAnnotation?: { + /** + * Whether the component name annotate plugin should be enabled or not. + */ + enabled?: boolean; + }; + /** * Options that are considered experimental and subject to change. * diff --git a/packages/component-annotate-plugin/package.json b/packages/component-annotate-plugin/package.json index a995e46a7a2f..7f641933b2a6 100644 --- a/packages/component-annotate-plugin/package.json +++ b/packages/component-annotate-plugin/package.json @@ -47,8 +47,7 @@ "clean:build": "rimraf ./dist *.tgz", "clean:deps": "rimraf node_modules", "test": "jest", - "lint": "eslint ./src ./test", - "prepack": "ts-node ./src/prepack.ts" + "lint": "eslint ./src ./test" }, "dependencies": {}, "devDependencies": { diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 9a3288d2767d..0be360131e69 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -1,8 +1,11 @@ +type Bundler = "webpack" | "vite" | "rollup" | "esbuild"; + type OptionDocumentation = { name: string; fullDescription: string; type?: string; children?: OptionDocumentation[]; + supportedBundlers?: Bundler[]; }; const options: OptionDocumentation[] = [ @@ -332,6 +335,24 @@ type IncludeEntry = { }, ], }, + { + name: "reactComponentAnnotation", + fullDescription: `Options related to react component name annotations. + Disabled by default, unless a value is set for this option. + When enabled, your app's DOM will automatically be annotated during build-time with their respective component names. + This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. + Please note that this feature is not currently supported by the esbuild bundler plugins, and will only annotate React components + `, + supportedBundlers: ["webpack", "vite", "rollup"], + children: [ + { + name: "enabled", + type: "boolean", + fullDescription: "Whether the component name annotate plugin should be enabled or not.", + supportedBundlers: ["webpack", "vite", "rollup"], + }, + ], + }, { name: "_experiments", type: "string", @@ -351,17 +372,22 @@ type IncludeEntry = { function generateTableOfContents( depth: number, parentId: string, - nodes: OptionDocumentation[] + nodes: OptionDocumentation[], + bundler: Bundler ): string { return nodes .map((node) => { + if (node.supportedBundlers && !node.supportedBundlers?.includes(bundler)) { + return ""; + } + const id = `${parentId}-${node.name.toLowerCase()}`; let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id .replace(/-/g, "") .toLowerCase()})`; if (node.children && depth <= 0) { output += "\n"; - output += generateTableOfContents(depth + 1, id, node.children); + output += generateTableOfContents(depth + 1, id, node.children, bundler); } return output; }) @@ -370,10 +396,15 @@ function generateTableOfContents( function generateDescriptions( parentName: string | undefined, - nodes: OptionDocumentation[] + nodes: OptionDocumentation[], + bundler: Bundler ): string { return nodes .map((node) => { + if (node.supportedBundlers && !node.supportedBundlers?.includes(bundler)) { + return ""; + } + const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; let output = `### \`${name}\` @@ -382,18 +413,18 @@ ${node.type === undefined ? "" : `Type: \`${node.type}\``} ${node.fullDescription} `; if (node.children) { - output += generateDescriptions(name, node.children); + output += generateDescriptions(name, node.children, bundler); } return output; }) .join("\n"); } -export function generateOptionsDocumentation(): string { +export function generateOptionsDocumentation(bundler: Bundler): string { return `## Options -${generateTableOfContents(0, "", options)} +${generateTableOfContents(0, "", options, bundler)} -${generateDescriptions(undefined, options)} +${generateDescriptions(undefined, options, bundler)} `; } diff --git a/packages/esbuild-plugin/src/prepack.ts b/packages/esbuild-plugin/src/prepack.ts index 55793e25fa95..616dde02953f 100644 --- a/packages/esbuild-plugin/src/prepack.ts +++ b/packages/esbuild-plugin/src/prepack.ts @@ -3,5 +3,8 @@ import * as fs from "fs"; import * as path from "path"; const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +const readme = readmeTemplate.replace( + /#OPTIONS_SECTION_INSERT#/, + generateOptionsDocumentation("esbuild") +); fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); 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 83cbad196971..e2a0761617ad 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 @@ -22,7 +22,7 @@ function checkBundle(bundlePath: string): void { "webpack4", "webpack5", ]) as string[], - depsVersions: { rollup: 3, vite: 3 }, + depsVersions: { rollup: 3, vite: 3, react: 18 }, // This will differ based on what env this is run on nodeVersion: expectedNodeVersion, }) 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 new file mode 100644 index 000000000000..3f2496c96182 --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts @@ -0,0 +1,37 @@ +import childProcess from "child_process"; +import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +// prettier-ignore +const SNAPSHOT = `"
Component A
"` +const ESBUILD_SNAPSHOT = `"
Component A
"`; + +function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput.trim()).toMatchInlineSnapshot(snapshot); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/esbuild/index.js"), ESBUILD_SNAPSHOT); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/rollup/index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/vite/index.js")); +}); + +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")); +}); diff --git a/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx b/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx new file mode 100644 index 000000000000..d4263e7953e4 --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx @@ -0,0 +1,14 @@ +import { renderToString } from "react-dom/server"; +import { ComponentA } from "./component-a"; + +export default function App() { + return ; +} + +console.log( + renderToString( +
+ +
+ ) +); diff --git a/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx b/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests/fixtures/component-name-annotate/setup.ts b/packages/integration-tests/fixtures/component-name-annotate/setup.ts new file mode 100644 index 000000000000..700e77059b3b --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate/setup.ts @@ -0,0 +1,10 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles-for-react"; + +const entryPointPath = path.resolve(__dirname, "input", "app.jsx"); +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + telemetry: false, + reactComponentAnnotation: { enabled: true }, +}); diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 2ea5d0a17abd..d275f07ffd4c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -15,6 +15,10 @@ "clean:deps": "rimraf node_modules" }, "dependencies": { + "@babel/preset-react": "^7.23.3", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", "@sentry-internal/eslint-config": "2.10.3", "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", "@sentry/bundler-plugin-core": "2.10.3", @@ -24,11 +28,16 @@ "@sentry/webpack-plugin": "2.10.3", "@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", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", diff --git a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts new file mode 100644 index 000000000000..757708e9b28c --- /dev/null +++ b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts @@ -0,0 +1,179 @@ +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 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 { 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, + sentryUnpluginOptions: Options, + plugins: string[] = [] +): void { + if (plugins.length === 0 || plugins.includes("vite")) { + void vite.build({ + clearScreen: false, + build: { + outDir: path.join(outFolder, "vite"), + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryUnpluginOptions)], + }); + } + if (plugins.length === 0 || plugins.includes("rollup")) { + void rollup + .rollup({ + input: entrypoints, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + commonjs(), + sentryRollupPlugin(sentryUnpluginOptions), + babelPlugin({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], + }) + .then((bundle) => + bundle.write({ + dir: path.join(outFolder, "rollup"), + format: "cjs", + exports: "named", + }) + ); + } + + if (plugins.length === 0 || plugins.includes("esbuild")) { + void esbuild.build({ + entryPoints: entrypoints, + outdir: path.join(outFolder, "esbuild"), + plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], + minify: true, + bundle: true, + jsx: "automatic", + format: "cjs", + }); + } + + // 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(sentryUnpluginOptions)], + }, + handleWebpack + ); + } + + if (plugins.length === 0 || plugins.includes("webpack5")) { + webpack5( + { + cache: false, + entry: entrypoints, + output: { + path: path.join(outFolder, "webpack5"), + library: { + type: "commonjs", + }, + }, + optimization: { + minimize: false, + }, + mode: "production", + resolve: { + extensions: RESOLVABLE_EXTENSIONS, + }, + module: { + rules: [ + { + test: RESOLVABLE_JSX_EXTENSIONS_REGEX, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: [["@babel/preset-react", { runtime: "automatic" }]], + }, + }, + }, + ], + }, + plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + }, + handleWebpack + ); + } +} + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; +const RESOLVABLE_JSX_EXTENSIONS_REGEX = /\.?(j|t)sx$/; + +function handleWebpack(err: Error | undefined, stats: Webpack4Stats | Webpack5Stats | undefined) { + if (err) { + throw err; + } + + const info = stats?.toJson(); + if (!stats || !info) return; + + if (stats.hasErrors()) { + // eslint-disable-next-line no-console + console.error(info.errors); + } + + if (stats.hasWarnings()) { + // eslint-disable-next-line no-console + console.warn(info.warnings); + } +} diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 884d8e62dba8..8a45c0c338dc 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -7,6 +7,7 @@ import { createRollupDebugIdUploadHooks, SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, + createComponentNameAnnotateHooks, } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; @@ -17,6 +18,13 @@ function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function rollupComponentNameAnnotatePlugin(): UnpluginOptions { + return { + name: "sentry-rollup-component-name-annotate-plugin", + rollup: createComponentNameAnnotateHooks(), + }; +} + function rollupDebugIdInjectionPlugin(): UnpluginOptions { return { name: "sentry-rollup-debug-id-injection-plugin", @@ -51,6 +59,7 @@ function rollupBundleSizeOptimizationsPlugin( const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: rollupReleaseInjectionPlugin, + componentNameAnnotatePlugin: rollupComponentNameAnnotatePlugin, debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, moduleMetadataInjectionPlugin: rollupModuleMetadataInjectionPlugin, debugIdUploadPlugin: rollupDebugIdUploadPlugin, diff --git a/packages/rollup-plugin/src/prepack.ts b/packages/rollup-plugin/src/prepack.ts index 55793e25fa95..f888a841aefc 100644 --- a/packages/rollup-plugin/src/prepack.ts +++ b/packages/rollup-plugin/src/prepack.ts @@ -3,5 +3,8 @@ import * as fs from "fs"; import * as path from "path"; const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +const readme = readmeTemplate.replace( + /#OPTIONS_SECTION_INSERT#/, + generateOptionsDocumentation("rollup") +); fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index c85d3e3a0cca..1fd8d04f90ec 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -7,6 +7,7 @@ import { createRollupDebugIdUploadHooks, SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, + createComponentNameAnnotateHooks, } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; @@ -18,6 +19,14 @@ function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function viteComponentNameAnnotatePlugin(): UnpluginOptions { + return { + name: "sentry-vite-component-name-annotate-plugin", + enforce: "pre" as const, + vite: createComponentNameAnnotateHooks(), + }; +} + function viteDebugIdInjectionPlugin(): UnpluginOptions { return { name: "sentry-vite-debug-id-injection-plugin", @@ -52,6 +61,7 @@ function viteBundleSizeOptimizationsPlugin( const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: viteReleaseInjectionPlugin, + componentNameAnnotatePlugin: viteComponentNameAnnotatePlugin, debugIdInjectionPlugin: viteDebugIdInjectionPlugin, moduleMetadataInjectionPlugin: viteModuleMetadataInjectionPlugin, debugIdUploadPlugin: viteDebugIdUploadPlugin, diff --git a/packages/vite-plugin/src/prepack.ts b/packages/vite-plugin/src/prepack.ts index 55793e25fa95..8e0cd553cfd5 100644 --- a/packages/vite-plugin/src/prepack.ts +++ b/packages/vite-plugin/src/prepack.ts @@ -3,5 +3,8 @@ import * as fs from "fs"; import * as path from "path"; const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +const readme = readmeTemplate.replace( + /#OPTIONS_SECTION_INSERT#/, + generateOptionsDocumentation("vite") +); fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index a3e624beb7c8..43ccd38c6f8b 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -4,6 +4,7 @@ import { sentryUnpluginFactory, stringToUUID, SentrySDKBuildFlags, + createComponentNameAnnotateHooks, } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; @@ -46,6 +47,18 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +function webpackComponentNameAnnotatePlugin(): UnpluginOptions { + return { + name: "sentry-webpack-component-name-annotate-plugin", + enforce: "pre", + // Webpack needs this hook for loader logic, so the plugin is not run on unsupported file types + transformInclude(id) { + return id.endsWith(".tsx") || id.endsWith(".jsx"); + }, + transform: createComponentNameAnnotateHooks().transform, + }; +} + function webpackBundleSizeOptimizationsPlugin( replacementValues: SentrySDKBuildFlags ): UnpluginOptions { @@ -153,6 +166,7 @@ function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp const sentryUnplugin = sentryUnpluginFactory({ releaseInjectionPlugin: webpackReleaseInjectionPlugin, + componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin, moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin, debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, debugIdUploadPlugin: webpackDebugIdUploadPlugin, diff --git a/packages/webpack-plugin/src/prepack.ts b/packages/webpack-plugin/src/prepack.ts index 55793e25fa95..954f9d3cd9f6 100644 --- a/packages/webpack-plugin/src/prepack.ts +++ b/packages/webpack-plugin/src/prepack.ts @@ -3,5 +3,8 @@ import * as fs from "fs"; import * as path from "path"; const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace(/#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation()); +const readme = readmeTemplate.replace( + /#OPTIONS_SECTION_INSERT#/, + generateOptionsDocumentation("webpack") +); fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); diff --git a/yarn.lock b/yarn.lock index 175041167eeb..b9dd2b24d1e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,11 +17,24 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.10", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.9" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" integrity sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@7.18.5": version "7.18.5" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" @@ -64,6 +77,27 @@ json5 "^2.2.2" semver "^6.3.0" +"@babel/core@^7.23.5": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.18.2", "@babel/generator@^7.21.5", "@babel/generator@^7.7.2": version "7.21.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" @@ -74,6 +108,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -106,6 +150,17 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.8" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" @@ -147,6 +202,11 @@ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" @@ -155,6 +215,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -162,6 +230,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-member-expression-to-functions@^7.21.5": version "7.21.5" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" @@ -197,6 +272,17 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -243,6 +329,13 @@ dependencies: "@babel/types" "^7.21.5" +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" @@ -257,6 +350,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.21.5": version "7.21.5" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" @@ -282,7 +382,7 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== -"@babel/helper-validator-option@^7.22.15": +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== @@ -306,6 +406,15 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -315,11 +424,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": version "7.21.9" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== +"@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -797,6 +920,20 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" +"@babel/plugin-transform-react-jsx-self@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" @@ -1026,6 +1163,15 @@ "@babel/parser" "^7.21.9" "@babel/types" "^7.21.5" +"@babel/template@^7.22.15", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/traverse@^7.18.5", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": version "7.21.5" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" @@ -1042,6 +1188,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.21.5" resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -1051,7 +1213,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.4": +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9": version "7.23.9" resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== @@ -1770,7 +1932,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -2395,6 +2557,14 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" +"@rollup/plugin-babel@^6.0.4": + version "6.0.4" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@rollup/pluginutils" "^5.0.1" + "@rollup/plugin-commonjs@22.0.1": version "22.0.1" resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" @@ -2408,6 +2578,18 @@ magic-string "^0.25.7" resolve "^1.17.0" +"@rollup/plugin-commonjs@^25.0.7": + version "25.0.7" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" + integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.30.3" + "@rollup/plugin-json@4.1.0": version "4.1.0" resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -2427,6 +2609,18 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-node-resolve@^15.2.3": + version "15.2.3" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-builtin-module "^3.2.1" + is-module "^1.0.0" + resolve "^1.22.1" + "@rollup/plugin-replace@^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" @@ -2444,6 +2638,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.1": + version "5.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -2771,6 +2974,17 @@ "@types/babel__template" "*" "@types/babel__traverse" "*" +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__generator@*": version "7.6.4" resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" @@ -2913,6 +3127,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.5": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -2968,6 +3187,11 @@ resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== +"@types/prop-types@*": + version "15.7.11" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + "@types/qs@*": version "6.9.7" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -2978,6 +3202,15 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/react@^18.2.0": + version "18.2.48" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz#11df5664642d0bd879c1f58bc1d37205b064e8f1" + integrity sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2985,6 +3218,16 @@ dependencies: "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + +"@types/scheduler@*": + version "0.16.8" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + "@types/semver@^7.3.12": version "7.5.0" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" @@ -3164,6 +3407,17 @@ "@typescript-eslint/types" "5.59.7" eslint-visitor-keys "^3.3.0" +"@vitejs/plugin-react@^4.2.1": + version "4.2.1" + resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== + dependencies: + "@babel/core" "^7.23.5" + "@babel/plugin-transform-react-jsx-self" "^7.23.3" + "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.0" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -3995,6 +4249,16 @@ babel-jest@^28.1.3: 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" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -4305,6 +4569,16 @@ browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: node-releases "^2.0.8" update-browserslist-db "^1.0.10" +browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bser@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -4494,6 +4768,11 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== +caniuse-lite@^1.0.30001580: + version "1.0.30001581" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" + integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== + chalk@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -4502,7 +4781,7 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4927,6 +5206,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -5082,6 +5366,11 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -5113,7 +5402,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5375,6 +5664,11 @@ electron-to-chromium@^1.4.284: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.404.tgz#16baf653a7a2613e221da61480ad02fe84e40231" integrity sha512-te57sWvQdpxmyd1GiswaodKdXdPgn9cN4ht8JlNa04QgtrfnUdWEo1261rY2vaC6TKaiHn0E7QerJWPKFCvMVw== +electron-to-chromium@^1.4.648: + version "1.4.653" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz#832ab25e80ad698ac09c1ca547bd9ee6cce7df10" + integrity sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -6061,7 +6355,7 @@ estree-walker@^1.0.1: resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1: +estree-walker@^2.0.1, estree-walker@^2.0.2: version "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== @@ -6384,6 +6678,15 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -6833,7 +7136,7 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: +glob@^8.0.1, glob@^8.0.3: version "8.1.0" resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -7415,7 +7718,7 @@ is-buffer@^1.1.5: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^3.1.0: +is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== @@ -7602,7 +7905,7 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-reference@^1.2.1: +is-reference@1.2.1, is-reference@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -8595,7 +8898,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.1, json5@^2.2.2: +json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -8854,6 +9157,15 @@ loader-utils@^1.2.3: emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + localforage@^1.8.1: version "1.10.0" resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" @@ -8919,7 +9231,7 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -8969,7 +9281,14 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@3.1.0, make-dir@^3.0.0: +magic-string@^0.30.3: + version "0.30.6" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" + integrity sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +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" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9591,6 +9910,11 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +node-releases@^2.0.14: + version "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.8: version "2.0.11" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.11.tgz#59d7cef999d13f908e43b5a70001cf3129542f0f" @@ -10456,7 +10780,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.2.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -10764,6 +11088,14 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + react-is@^16.13.1: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -10779,6 +11111,18 @@ react-is@^18.0.0: resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react@^18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + read-cmd-shim@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" @@ -11220,6 +11564,13 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -11229,6 +11580,15 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.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: version "3.1.2" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" @@ -11262,6 +11622,11 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: version "7.5.1" resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" @@ -12427,6 +12792,14 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" From 9c30283ee24013ca03b4c7e496e23eb1268bbef7 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Thu, 1 Feb 2024 16:39:56 -0500 Subject: [PATCH 315/640] meta: Update changelog for 2.11.0 (#473) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9fe412881d8..a62029c9283b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.11.0 + +- feat(core): Include component name annotation plugin with all bundler plugins except esbuild (#469) +- feat(component-annotate): Introduce new plugin to annotate frontend components at build-time (#468) + ## 2.10.3 - fix(core): Safely flush telemetry From 2ab6a1074fb87f4e0d8e36941206344bfbb082a0 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 1 Feb 2024 21:41:41 +0000 Subject: [PATCH 316/640] release: 2.11.0 --- lerna.json | 2 +- packages/bundler-plugin-core/package.json | 8 ++++---- packages/component-annotate-plugin/package.json | 7 +++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 45 deletions(-) diff --git a/lerna.json b/lerna.json index ae6b03c6bd62..194d75e4ce42 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.10.3", + "version": "2.11.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index e88033a43208..b6e668e29e51 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.10.3", + "version": "2.11.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -54,9 +54,9 @@ "dependencies": { "@babel/core": "7.18.5", "@sentry/cli": "^2.22.3", + "@sentry/component-annotate-plugin": "2.11.0", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", - "@sentry/component-annotate-plugin": "2.10.3", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/component-annotate-plugin/package.json b/packages/component-annotate-plugin/package.json index 7f641933b2a6..6290fb0ae7d6 100644 --- a/packages/component-annotate-plugin/package.json +++ b/packages/component-annotate-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/component-annotate-plugin", - "version": "2.10.3", + "version": "2.11.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/component-annotate-plugin", @@ -49,7 +49,6 @@ "test": "jest", "lint": "eslint ./src ./test" }, - "dependencies": {}, "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-env": "7.18.2", @@ -57,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 60cf9c30be4a..8124c7d17d6b 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 9cf3068c0189..a6f70e40b01b 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.10.3", - "@sentry/rollup-plugin": "2.10.3", - "@sentry/vite-plugin": "2.10.3", - "@sentry/webpack-plugin": "2.10.3", + "@sentry/esbuild-plugin": "2.11.0", + "@sentry/rollup-plugin": "2.11.0", + "@sentry/vite-plugin": "2.11.0", + "@sentry/webpack-plugin": "2.11.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 83165f148565..c10e6c29cb1e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.10.3", + "version": "2.11.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/bundler-plugin-core": "2.11.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c1d47b5f27f9..22f9ca170505 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index d275f07ffd4c..4c7a09883451 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", - "@sentry/bundler-plugin-core": "2.10.3", - "@sentry/esbuild-plugin": "2.10.3", - "@sentry/rollup-plugin": "2.10.3", - "@sentry/vite-plugin": "2.10.3", - "@sentry/webpack-plugin": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/esbuild-plugin": "2.11.0", + "@sentry/rollup-plugin": "2.11.0", + "@sentry/vite-plugin": "2.11.0", + "@sentry/webpack-plugin": "2.11.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index e967d807c872..658f5e5fbef2 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/bundler-plugin-core": "2.11.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 60994bbc84bb..b9eead62601f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.10.3", + "version": "2.11.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/bundler-plugin-core": "2.11.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b9997d688675..4b22b452421f 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.10.3", + "version": "2.11.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 652c887da2f8..6a256d66f563 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.10.3", + "version": "2.11.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/bundler-plugin-core": "2.11.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2f8086086e5e..65621793d981 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.10.3", + "version": "2.11.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.10.3", + "@sentry/bundler-plugin-core": "2.11.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.10.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.10.3", + "@sentry-internal/eslint-config": "2.11.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From de20f666768e2699d1eb63ece35d5d6477c9d72c Mon Sep 17 00:00:00 2001 From: Ash Anand Date: Thu, 1 Feb 2024 17:45:31 -0500 Subject: [PATCH 317/640] fix build --- packages/component-annotate-plugin/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/component-annotate-plugin/rollup.config.js b/packages/component-annotate-plugin/rollup.config.js index 95b1158525af..eba8a5639595 100644 --- a/packages/component-annotate-plugin/rollup.config.js +++ b/packages/component-annotate-plugin/rollup.config.js @@ -9,7 +9,7 @@ const extensions = [".ts"]; export default { input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], + external: [...Object.keys(packageJson.dependencies ?? []), ...modulePackage.builtinModules], onwarn: (warning) => { throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them }, From f65db29a1416b37335794a541f0b32268ca3f351 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Fri, 2 Feb 2024 15:03:26 -0500 Subject: [PATCH 318/640] ref(component-annotate): Prefix plugin name with `babel` (#474) * ref(component-annotate): Prefix plugin name with `babel` --- .craft.yml | 2 +- CHANGELOG.md | 4 ++++ .../.babelrc.json | 0 .../.eslintrc.js | 0 .../.gitignore | 0 .../LICENSE | 0 .../README.md | 18 +++++++++--------- .../jest.config.js | 0 .../package.json | 4 ++-- .../rollup.config.js | 0 .../src/constants.ts | 0 .../src/index.ts | 0 .../src/tsconfig.json | 0 .../__snapshots__/test-plugin.test.ts.snap | 0 .../test/test-plugin.test.ts | 0 .../test/tsconfig.json | 0 .../types.tsconfig.json | 0 packages/bundler-plugin-core/package.json | 2 +- packages/bundler-plugin-core/src/index.ts | 2 +- 19 files changed, 18 insertions(+), 14 deletions(-) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/.babelrc.json (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/.eslintrc.js (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/.gitignore (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/LICENSE (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/README.md (73%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/jest.config.js (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/package.json (95%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/rollup.config.js (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/src/constants.ts (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/src/index.ts (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/src/tsconfig.json (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/test/__snapshots__/test-plugin.test.ts.snap (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/test/test-plugin.test.ts (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/test/tsconfig.json (100%) rename packages/{component-annotate-plugin => babel-component-annotate-plugin}/types.tsconfig.json (100%) diff --git a/.craft.yml b/.craft.yml index e3db425cbd65..16a209069207 100644 --- a/.craft.yml +++ b/.craft.yml @@ -9,7 +9,7 @@ requireNames: - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - /^sentry-webpack-plugin-.*\.tgz$/ - - /^sentry-component-annotate-plugin-.*\.tgz$/ + - /^sentry-babel-component-annotate-plugin-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ diff --git a/CHANGELOG.md b/CHANGELOG.md index a62029c9283b..a417ca5d3465 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.12.0 + +- ref(component-annotate): Prefix plugin name with `babel` + ## 2.11.0 - feat(core): Include component name annotation plugin with all bundler plugins except esbuild (#469) diff --git a/packages/component-annotate-plugin/.babelrc.json b/packages/babel-component-annotate-plugin/.babelrc.json similarity index 100% rename from packages/component-annotate-plugin/.babelrc.json rename to packages/babel-component-annotate-plugin/.babelrc.json diff --git a/packages/component-annotate-plugin/.eslintrc.js b/packages/babel-component-annotate-plugin/.eslintrc.js similarity index 100% rename from packages/component-annotate-plugin/.eslintrc.js rename to packages/babel-component-annotate-plugin/.eslintrc.js diff --git a/packages/component-annotate-plugin/.gitignore b/packages/babel-component-annotate-plugin/.gitignore similarity index 100% rename from packages/component-annotate-plugin/.gitignore rename to packages/babel-component-annotate-plugin/.gitignore diff --git a/packages/component-annotate-plugin/LICENSE b/packages/babel-component-annotate-plugin/LICENSE similarity index 100% rename from packages/component-annotate-plugin/LICENSE rename to packages/babel-component-annotate-plugin/LICENSE diff --git a/packages/component-annotate-plugin/README.md b/packages/babel-component-annotate-plugin/README.md similarity index 73% rename from packages/component-annotate-plugin/README.md rename to packages/babel-component-annotate-plugin/README.md index 562b656c805e..3afe0f17b3b2 100644 --- a/packages/component-annotate-plugin/README.md +++ b/packages/babel-component-annotate-plugin/README.md @@ -4,11 +4,11 @@

-# Sentry Component Annotate Plugin (Beta) +# Sentry Babel Component Annotate Plugin (Beta) -[![npm version](https://img.shields.io/npm/v/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/component-annotate-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/component-annotate-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/component-annotate-plugin.svg)](https://www.npmjs.com/package/@component-annotate-plugin) +[![npm version](https://img.shields.io/npm/v/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/babel-component-annotate-plugin) +[![npm dm](https://img.shields.io/npm/dm/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/babel-component-annotate-plugin) +[![npm dt](https://img.shields.io/npm/dt/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@babel-component-annotate-plugin) This plugin is currently in beta. Please help us improve by [reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript-bundler-plugins/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). @@ -34,19 +34,19 @@ Check out the supported bundler plugin packages for installation instructions: Using npm: ```bash -npm install @sentry/component-annotate-plugin --save-dev +npm install @sentry/babel-component-annotate-plugin --save-dev ``` Using yarn: ```bash -yarn add @sentry/component-annotate-plugin --dev +yarn add @sentry/babel-component-annotate-plugin --dev ``` Using pnpm: ```bash -pnpm install @sentry/component-annotate-plugin --dev +pnpm install @sentry/babel-component-annotate-plugin --dev ``` ## Example @@ -59,7 +59,7 @@ pnpm install @sentry/component-annotate-plugin --dev plugins: [ // Put this plugin before any other plugins you have that transform JSX code - ['@sentry/component-annotate-plugin'] + ['@sentry/babel-component-annotate-plugin'] ], } ``` @@ -69,7 +69,7 @@ Or alternatively, configure the plugin by directly importing it: ```js // babel.config.js -import {componentNameAnnotatePlugin} from '@sentry/component-annotate-plugin'; +import {componentNameAnnotatePlugin} from '@sentry/babel-component-annotate-plugin'; { // ... other config above ... diff --git a/packages/component-annotate-plugin/jest.config.js b/packages/babel-component-annotate-plugin/jest.config.js similarity index 100% rename from packages/component-annotate-plugin/jest.config.js rename to packages/babel-component-annotate-plugin/jest.config.js diff --git a/packages/component-annotate-plugin/package.json b/packages/babel-component-annotate-plugin/package.json similarity index 95% rename from packages/component-annotate-plugin/package.json rename to packages/babel-component-annotate-plugin/package.json index 6290fb0ae7d6..b429e868e528 100644 --- a/packages/component-annotate-plugin/package.json +++ b/packages/babel-component-annotate-plugin/package.json @@ -1,9 +1,9 @@ { - "name": "@sentry/component-annotate-plugin", + "name": "@sentry/babel-component-annotate-plugin", "version": "2.11.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/component-annotate-plugin", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-component-annotate-plugin", "author": "Sentry", "license": "MIT", "keywords": [ diff --git a/packages/component-annotate-plugin/rollup.config.js b/packages/babel-component-annotate-plugin/rollup.config.js similarity index 100% rename from packages/component-annotate-plugin/rollup.config.js rename to packages/babel-component-annotate-plugin/rollup.config.js diff --git a/packages/component-annotate-plugin/src/constants.ts b/packages/babel-component-annotate-plugin/src/constants.ts similarity index 100% rename from packages/component-annotate-plugin/src/constants.ts rename to packages/babel-component-annotate-plugin/src/constants.ts diff --git a/packages/component-annotate-plugin/src/index.ts b/packages/babel-component-annotate-plugin/src/index.ts similarity index 100% rename from packages/component-annotate-plugin/src/index.ts rename to packages/babel-component-annotate-plugin/src/index.ts diff --git a/packages/component-annotate-plugin/src/tsconfig.json b/packages/babel-component-annotate-plugin/src/tsconfig.json similarity index 100% rename from packages/component-annotate-plugin/src/tsconfig.json rename to packages/babel-component-annotate-plugin/src/tsconfig.json diff --git a/packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap b/packages/babel-component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap similarity index 100% rename from packages/component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap rename to packages/babel-component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap diff --git a/packages/component-annotate-plugin/test/test-plugin.test.ts b/packages/babel-component-annotate-plugin/test/test-plugin.test.ts similarity index 100% rename from packages/component-annotate-plugin/test/test-plugin.test.ts rename to packages/babel-component-annotate-plugin/test/test-plugin.test.ts diff --git a/packages/component-annotate-plugin/test/tsconfig.json b/packages/babel-component-annotate-plugin/test/tsconfig.json similarity index 100% rename from packages/component-annotate-plugin/test/tsconfig.json rename to packages/babel-component-annotate-plugin/test/tsconfig.json diff --git a/packages/component-annotate-plugin/types.tsconfig.json b/packages/babel-component-annotate-plugin/types.tsconfig.json similarity index 100% rename from packages/component-annotate-plugin/types.tsconfig.json rename to packages/babel-component-annotate-plugin/types.tsconfig.json diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b6e668e29e51..b6c598f7e323 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "7.18.5", "@sentry/cli": "^2.22.3", - "@sentry/component-annotate-plugin": "2.11.0", + "@sentry/babel-component-annotate-plugin": "2.11.0", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 99a397299592..210a7798c60f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,6 +1,6 @@ import SentryCli from "@sentry/cli"; import { transformAsync } from "@babel/core"; -import { componentNameAnnotatePlugin } from "@sentry/component-annotate-plugin"; +import { componentNameAnnotatePlugin } from "@sentry/babel-component-annotate-plugin"; import * as fs from "fs"; import * as path from "path"; import MagicString from "magic-string"; From e2d907ef03bd76e5a6f7c2c1b9b6ec042a15ea6a Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 2 Feb 2024 20:04:44 +0000 Subject: [PATCH 319/640] release: 2.12.0 --- lerna.json | 2 +- .../babel-component-annotate-plugin/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 194d75e4ce42..01e0037c7fc5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.11.0", + "version": "2.12.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-component-annotate-plugin/package.json b/packages/babel-component-annotate-plugin/package.json index b429e868e528..354745a2c970 100644 --- a/packages/babel-component-annotate-plugin/package.json +++ b/packages/babel-component-annotate-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-component-annotate-plugin", - "version": "2.11.0", + "version": "2.12.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-component-annotate-plugin", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b6c598f7e323..bd5e85d92ff0 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.11.0", + "version": "2.12.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,8 +53,8 @@ }, "dependencies": { "@babel/core": "7.18.5", + "@sentry/babel-component-annotate-plugin": "2.12.0", "@sentry/cli": "^2.22.3", - "@sentry/babel-component-annotate-plugin": "2.11.0", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 8124c7d17d6b..448f152c0e1a 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index a6f70e40b01b..9165a9a19fc9 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.11.0", - "@sentry/rollup-plugin": "2.11.0", - "@sentry/vite-plugin": "2.11.0", - "@sentry/webpack-plugin": "2.11.0", + "@sentry/esbuild-plugin": "2.12.0", + "@sentry/rollup-plugin": "2.12.0", + "@sentry/vite-plugin": "2.12.0", + "@sentry/webpack-plugin": "2.12.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c10e6c29cb1e..33f3add2d660 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.11.0", + "version": "2.12.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/bundler-plugin-core": "2.12.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 22f9ca170505..6fe1bb75474b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 4c7a09883451..d682e105ecbc 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", - "@sentry/bundler-plugin-core": "2.11.0", - "@sentry/esbuild-plugin": "2.11.0", - "@sentry/rollup-plugin": "2.11.0", - "@sentry/vite-plugin": "2.11.0", - "@sentry/webpack-plugin": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/esbuild-plugin": "2.12.0", + "@sentry/rollup-plugin": "2.12.0", + "@sentry/vite-plugin": "2.12.0", + "@sentry/webpack-plugin": "2.12.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 658f5e5fbef2..5857ed96ef24 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/bundler-plugin-core": "2.12.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index b9eead62601f..77f196dc0b0f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.11.0", + "version": "2.12.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/bundler-plugin-core": "2.12.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 4b22b452421f..2dee54e5d65d 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.11.0", + "version": "2.12.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6a256d66f563..7bcadd0cea2d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.11.0", + "version": "2.12.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/bundler-plugin-core": "2.12.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 65621793d981..f89f21878637 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.11.0", + "version": "2.12.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.11.0", + "@sentry/bundler-plugin-core": "2.12.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.11.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.11.0", + "@sentry-internal/eslint-config": "2.12.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 14c6d58c772c2fcabb12675bb5c38b8d20f550e1 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:55:55 -0500 Subject: [PATCH 320/640] ref(component-annotate): Conform to Babel plugin naming conventions (#475) * ref(component-annotate): Conform to Babel plugin naming conventions --- .craft.yml | 2 +- CHANGELOG.md | 4 ++++ .../.babelrc.json | 0 .../.eslintrc.js | 0 .../.gitignore | 0 .../LICENSE | 0 .../README.md | 16 ++++++++-------- .../jest.config.js | 0 .../package.json | 4 ++-- .../rollup.config.js | 0 .../src/constants.ts | 0 .../src/index.ts | 0 .../src/tsconfig.json | 0 .../test/__snapshots__/test-plugin.test.ts.snap | 0 .../test/test-plugin.test.ts | 0 .../test/tsconfig.json | 0 .../types.tsconfig.json | 0 packages/bundler-plugin-core/package.json | 2 +- packages/bundler-plugin-core/src/index.ts | 2 +- 19 files changed, 17 insertions(+), 13 deletions(-) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/.babelrc.json (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/.eslintrc.js (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/.gitignore (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/LICENSE (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/README.md (75%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/jest.config.js (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/package.json (95%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/rollup.config.js (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/src/constants.ts (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/src/index.ts (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/src/tsconfig.json (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/test/__snapshots__/test-plugin.test.ts.snap (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/test/test-plugin.test.ts (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/test/tsconfig.json (100%) rename packages/{babel-component-annotate-plugin => babel-plugin-component-annotate}/types.tsconfig.json (100%) diff --git a/.craft.yml b/.craft.yml index 16a209069207..512f080582d5 100644 --- a/.craft.yml +++ b/.craft.yml @@ -9,7 +9,7 @@ requireNames: - /^sentry-rollup-plugin-.*\.tgz$/ - /^sentry-vite-plugin-.*\.tgz$/ - /^sentry-webpack-plugin-.*\.tgz$/ - - /^sentry-babel-component-annotate-plugin-.*\.tgz$/ + - /^sentry-babel-plugin-component-annotate-.*\.tgz$/ targets: - name: github includeNames: /^sentry-.*.tgz$/ diff --git a/CHANGELOG.md b/CHANGELOG.md index a417ca5d3465..74faea4d2d00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.13.0 + +- ref(component-annotate): Conform to Babel plugin naming conventions + ## 2.12.0 - ref(component-annotate): Prefix plugin name with `babel` diff --git a/packages/babel-component-annotate-plugin/.babelrc.json b/packages/babel-plugin-component-annotate/.babelrc.json similarity index 100% rename from packages/babel-component-annotate-plugin/.babelrc.json rename to packages/babel-plugin-component-annotate/.babelrc.json diff --git a/packages/babel-component-annotate-plugin/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js similarity index 100% rename from packages/babel-component-annotate-plugin/.eslintrc.js rename to packages/babel-plugin-component-annotate/.eslintrc.js diff --git a/packages/babel-component-annotate-plugin/.gitignore b/packages/babel-plugin-component-annotate/.gitignore similarity index 100% rename from packages/babel-component-annotate-plugin/.gitignore rename to packages/babel-plugin-component-annotate/.gitignore diff --git a/packages/babel-component-annotate-plugin/LICENSE b/packages/babel-plugin-component-annotate/LICENSE similarity index 100% rename from packages/babel-component-annotate-plugin/LICENSE rename to packages/babel-plugin-component-annotate/LICENSE diff --git a/packages/babel-component-annotate-plugin/README.md b/packages/babel-plugin-component-annotate/README.md similarity index 75% rename from packages/babel-component-annotate-plugin/README.md rename to packages/babel-plugin-component-annotate/README.md index 3afe0f17b3b2..c093a3e1e684 100644 --- a/packages/babel-component-annotate-plugin/README.md +++ b/packages/babel-plugin-component-annotate/README.md @@ -6,9 +6,9 @@ # Sentry Babel Component Annotate Plugin (Beta) -[![npm version](https://img.shields.io/npm/v/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/babel-component-annotate-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@sentry/babel-component-annotate-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/babel-component-annotate-plugin.svg)](https://www.npmjs.com/package/@babel-component-annotate-plugin) +[![npm version](https://img.shields.io/npm/v/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) +[![npm dm](https://img.shields.io/npm/dm/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) +[![npm dt](https://img.shields.io/npm/dt/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@babel-plugin-component-annotate) This plugin is currently in beta. Please help us improve by [reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript-bundler-plugins/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). @@ -34,19 +34,19 @@ Check out the supported bundler plugin packages for installation instructions: Using npm: ```bash -npm install @sentry/babel-component-annotate-plugin --save-dev +npm install @sentry/babel-plugin-component-annotate --save-dev ``` Using yarn: ```bash -yarn add @sentry/babel-component-annotate-plugin --dev +yarn add @sentry/babel-plugin-component-annotate --dev ``` Using pnpm: ```bash -pnpm install @sentry/babel-component-annotate-plugin --dev +pnpm install @sentry/babel-plugin-component-annotate --dev ``` ## Example @@ -59,7 +59,7 @@ pnpm install @sentry/babel-component-annotate-plugin --dev plugins: [ // Put this plugin before any other plugins you have that transform JSX code - ['@sentry/babel-component-annotate-plugin'] + ['@sentry/babel-plugin-component-annotate'] ], } ``` @@ -69,7 +69,7 @@ Or alternatively, configure the plugin by directly importing it: ```js // babel.config.js -import {componentNameAnnotatePlugin} from '@sentry/babel-component-annotate-plugin'; +import {componentNameAnnotatePlugin} from '@sentry/babel-plugin-component-annotate'; { // ... other config above ... diff --git a/packages/babel-component-annotate-plugin/jest.config.js b/packages/babel-plugin-component-annotate/jest.config.js similarity index 100% rename from packages/babel-component-annotate-plugin/jest.config.js rename to packages/babel-plugin-component-annotate/jest.config.js diff --git a/packages/babel-component-annotate-plugin/package.json b/packages/babel-plugin-component-annotate/package.json similarity index 95% rename from packages/babel-component-annotate-plugin/package.json rename to packages/babel-plugin-component-annotate/package.json index 354745a2c970..00d8026821b7 100644 --- a/packages/babel-component-annotate-plugin/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,9 +1,9 @@ { - "name": "@sentry/babel-component-annotate-plugin", + "name": "@sentry/babel-plugin-component-annotate", "version": "2.12.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-component-annotate-plugin", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", "author": "Sentry", "license": "MIT", "keywords": [ diff --git a/packages/babel-component-annotate-plugin/rollup.config.js b/packages/babel-plugin-component-annotate/rollup.config.js similarity index 100% rename from packages/babel-component-annotate-plugin/rollup.config.js rename to packages/babel-plugin-component-annotate/rollup.config.js diff --git a/packages/babel-component-annotate-plugin/src/constants.ts b/packages/babel-plugin-component-annotate/src/constants.ts similarity index 100% rename from packages/babel-component-annotate-plugin/src/constants.ts rename to packages/babel-plugin-component-annotate/src/constants.ts diff --git a/packages/babel-component-annotate-plugin/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts similarity index 100% rename from packages/babel-component-annotate-plugin/src/index.ts rename to packages/babel-plugin-component-annotate/src/index.ts diff --git a/packages/babel-component-annotate-plugin/src/tsconfig.json b/packages/babel-plugin-component-annotate/src/tsconfig.json similarity index 100% rename from packages/babel-component-annotate-plugin/src/tsconfig.json rename to packages/babel-plugin-component-annotate/src/tsconfig.json diff --git a/packages/babel-component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap b/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap similarity index 100% rename from packages/babel-component-annotate-plugin/test/__snapshots__/test-plugin.test.ts.snap rename to packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap diff --git a/packages/babel-component-annotate-plugin/test/test-plugin.test.ts b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts similarity index 100% rename from packages/babel-component-annotate-plugin/test/test-plugin.test.ts rename to packages/babel-plugin-component-annotate/test/test-plugin.test.ts diff --git a/packages/babel-component-annotate-plugin/test/tsconfig.json b/packages/babel-plugin-component-annotate/test/tsconfig.json similarity index 100% rename from packages/babel-component-annotate-plugin/test/tsconfig.json rename to packages/babel-plugin-component-annotate/test/tsconfig.json diff --git a/packages/babel-component-annotate-plugin/types.tsconfig.json b/packages/babel-plugin-component-annotate/types.tsconfig.json similarity index 100% rename from packages/babel-component-annotate-plugin/types.tsconfig.json rename to packages/babel-plugin-component-annotate/types.tsconfig.json diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bd5e85d92ff0..bf18d7ee8c74 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-component-annotate-plugin": "2.12.0", + "@sentry/babel-plugin-component-annotate": "2.12.0", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 210a7798c60f..6dbff1e15247 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,6 +1,6 @@ import SentryCli from "@sentry/cli"; import { transformAsync } from "@babel/core"; -import { componentNameAnnotatePlugin } from "@sentry/babel-component-annotate-plugin"; +import { componentNameAnnotatePlugin } from "@sentry/babel-plugin-component-annotate"; import * as fs from "fs"; import * as path from "path"; import MagicString from "magic-string"; From 02dd1bb1aeded137267f3d6592497d871cf42279 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 2 Feb 2024 22:01:19 +0000 Subject: [PATCH 321/640] release: 2.13.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 01e0037c7fc5..762258135157 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.12.0", + "version": "2.13.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 00d8026821b7..89258058d7e8 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.12.0", + "version": "2.13.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bf18d7ee8c74..cac067393b9e 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.12.0", + "version": "2.13.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.12.0", + "@sentry/babel-plugin-component-annotate": "2.13.0", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 448f152c0e1a..803e53857e24 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 9165a9a19fc9..90a11bdb6417 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.12.0", - "@sentry/rollup-plugin": "2.12.0", - "@sentry/vite-plugin": "2.12.0", - "@sentry/webpack-plugin": "2.12.0", + "@sentry/esbuild-plugin": "2.13.0", + "@sentry/rollup-plugin": "2.13.0", + "@sentry/vite-plugin": "2.13.0", + "@sentry/webpack-plugin": "2.13.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 33f3add2d660..e665509f7f27 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.12.0", + "version": "2.13.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/bundler-plugin-core": "2.13.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 6fe1bb75474b..c8f092834c23 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index d682e105ecbc..55fe085b2c65 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", - "@sentry/bundler-plugin-core": "2.12.0", - "@sentry/esbuild-plugin": "2.12.0", - "@sentry/rollup-plugin": "2.12.0", - "@sentry/vite-plugin": "2.12.0", - "@sentry/webpack-plugin": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/esbuild-plugin": "2.13.0", + "@sentry/rollup-plugin": "2.13.0", + "@sentry/vite-plugin": "2.13.0", + "@sentry/webpack-plugin": "2.13.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 5857ed96ef24..fd0ff6b2e066 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/bundler-plugin-core": "2.13.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 77f196dc0b0f..87c7b4371509 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.12.0", + "version": "2.13.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/bundler-plugin-core": "2.13.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 2dee54e5d65d..89cca6f504f2 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.12.0", + "version": "2.13.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7bcadd0cea2d..e821d4010c3c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.12.0", + "version": "2.13.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/bundler-plugin-core": "2.13.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f89f21878637..f31e7e76b811 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.12.0", + "version": "2.13.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.12.0", + "@sentry/bundler-plugin-core": "2.13.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.12.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.12.0", + "@sentry-internal/eslint-config": "2.13.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1214c93886636a80b82eca864a6e280598ec8249 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Mon, 5 Feb 2024 10:33:03 -0500 Subject: [PATCH 322/640] ref(component-annotate): Use default export (#478) * ref(component-annotate): Use default export --- packages/babel-plugin-component-annotate/README.md | 2 +- packages/babel-plugin-component-annotate/src/index.ts | 3 ++- .../babel-plugin-component-annotate/test/test-plugin.test.ts | 2 +- packages/bundler-plugin-core/src/index.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/babel-plugin-component-annotate/README.md b/packages/babel-plugin-component-annotate/README.md index c093a3e1e684..67f8b37c63a9 100644 --- a/packages/babel-plugin-component-annotate/README.md +++ b/packages/babel-plugin-component-annotate/README.md @@ -69,7 +69,7 @@ Or alternatively, configure the plugin by directly importing it: ```js // babel.config.js -import {componentNameAnnotatePlugin} from '@sentry/babel-plugin-component-annotate'; +import componentNameAnnotatePlugin from '@sentry/babel-plugin-component-annotate'; { // ... other config above ... diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 894155c0d4ea..56b0c8083768 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -59,7 +59,8 @@ type IgnoredComponent = [file: string, component: string, element: string]; type AnnotationPlugin = PluginObj; -export function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { +// We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier +export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { return { visitor: { FunctionDeclaration(path, state) { 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 5a9ff11c3f57..97a632bf1f7f 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -24,7 +24,7 @@ */ import { transform } from "@babel/core"; -import { componentNameAnnotatePlugin as plugin } from "../src/index"; +import plugin from "../src/index"; const BananasPizzaAppStandardInput = `import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 6dbff1e15247..e530365861cd 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,6 +1,6 @@ import SentryCli from "@sentry/cli"; import { transformAsync } from "@babel/core"; -import { componentNameAnnotatePlugin } from "@sentry/babel-plugin-component-annotate"; +import componentNameAnnotatePlugin from "@sentry/babel-plugin-component-annotate"; import * as fs from "fs"; import * as path from "path"; import MagicString from "magic-string"; From 5d3844d7d68ec30914213fb211253f1cabe1a4f1 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Mon, 5 Feb 2024 13:04:29 -0500 Subject: [PATCH 323/640] meta: Update changelog for 2.14.0 (#479) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74faea4d2d00..7f3dcc171672 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.14.0 + +- ref(component-annotate): Use default export (#478) + ## 2.13.0 - ref(component-annotate): Conform to Babel plugin naming conventions From 75c730783a9f27b3543d0b2267b68fdfd9533897 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 5 Feb 2024 18:25:37 +0000 Subject: [PATCH 324/640] release: 2.14.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 762258135157..61800ca0b5a1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.13.0", + "version": "2.14.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 89258058d7e8..7be00316735e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.13.0", + "version": "2.14.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index cac067393b9e..ac34df19d365 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.13.0", + "version": "2.14.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.13.0", + "@sentry/babel-plugin-component-annotate": "2.14.0", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 803e53857e24..6b5ec20e7f08 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 90a11bdb6417..aea64017e763 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.13.0", - "@sentry/rollup-plugin": "2.13.0", - "@sentry/vite-plugin": "2.13.0", - "@sentry/webpack-plugin": "2.13.0", + "@sentry/esbuild-plugin": "2.14.0", + "@sentry/rollup-plugin": "2.14.0", + "@sentry/vite-plugin": "2.14.0", + "@sentry/webpack-plugin": "2.14.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index e665509f7f27..c7e93b595dac 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.13.0", + "version": "2.14.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/bundler-plugin-core": "2.14.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c8f092834c23..e462ad3b9ba8 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 55fe085b2c65..26ed4d4ed25b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", - "@sentry/bundler-plugin-core": "2.13.0", - "@sentry/esbuild-plugin": "2.13.0", - "@sentry/rollup-plugin": "2.13.0", - "@sentry/vite-plugin": "2.13.0", - "@sentry/webpack-plugin": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/esbuild-plugin": "2.14.0", + "@sentry/rollup-plugin": "2.14.0", + "@sentry/vite-plugin": "2.14.0", + "@sentry/webpack-plugin": "2.14.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index fd0ff6b2e066..ab1c8c6b9895 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/bundler-plugin-core": "2.14.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 87c7b4371509..36437951d89e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.13.0", + "version": "2.14.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/bundler-plugin-core": "2.14.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 89cca6f504f2..339b794c2a45 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.13.0", + "version": "2.14.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e821d4010c3c..83e412a4494f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.13.0", + "version": "2.14.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/bundler-plugin-core": "2.14.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f31e7e76b811..4e50111c7d7e 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.13.0", + "version": "2.14.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.13.0", + "@sentry/bundler-plugin-core": "2.14.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.13.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.13.0", + "@sentry-internal/eslint-config": "2.14.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 99b24e3e2b9552ef2de78c61581d1fc562535b88 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Mon, 12 Feb 2024 12:01:55 -0500 Subject: [PATCH 325/640] feat(core): Add telemetry for React component annotations (#482) --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 219eaf0045d0..390d99049bf8 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -60,7 +60,7 @@ export function createSentryInstance( } export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bundler: string) { - const { org, project, release, errorHandler, sourcemaps } = options; + const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; hub.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); if (release.uploadLegacySourcemaps) { @@ -91,6 +91,8 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund !!sourcemaps?.deleteFilesAfterUpload || !!sourcemaps?.filesToDeleteAfterUpload ); + hub.setTag("react-annotate", !!reactComponentAnnotation?.enabled); + hub.setTag("node", process.version); hub.setTag("platform", process.platform); From ca1533b863f77b8f6315b65ec4e97ba4a6d28a0b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Feb 2024 11:13:56 +0100 Subject: [PATCH 326/640] =?UTF-8?q?meta:=20Remove=20husky=20=F0=9F=92=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was annoying and we have a ci check --- .husky/pre-commit | 4 ---- package.json | 4 +--- yarn.lock | 5 ----- 3 files changed, 1 insertion(+), 12 deletions(-) delete mode 100755 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index 0da96d6baa59..000000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npx pretty-quick --staged diff --git a/package.json b/package.json index 94401948f721..1abce4f100cf 100644 --- a/package.json +++ b/package.json @@ -23,13 +23,11 @@ "test:e2e": "nx run @sentry-internal/bundler-plugin-e2e-tests:test", "lint": "nx run-many --target=lint --all", "check:formatting": "prettier --check .", - "fix:formatting": "prettier --write .", - "prepare": "husky install" + "fix:formatting": "prettier --write ." }, "devDependencies": { "@nrwl/cli": "14.5.10", "@nrwl/workspace": "14.5.10", - "husky": "^8.0.0", "lerna": "^6.6.2", "nx": "14.5.10", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index b9dd2b24d1e4..eb2007cf6838 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7463,11 +7463,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^8.0.0: - version "8.0.3" - resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" From dd413d879377064c6ae0b07a6470ac54d1dad74a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Feb 2024 11:33:22 +0100 Subject: [PATCH 327/640] fix(core): Stop .env files from being picked up (#486) Co-authored-by: Lukas Stracke --- packages/bundler-plugin-core/src/index.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e530365861cd..0a11fa595f28 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -78,17 +78,20 @@ export function sentryUnpluginFactory({ debug: userOptions.debug ?? false, }); - const dotenvResult = dotenv.config({ - path: path.join(process.cwd(), ".env.sentry-build-plugin"), - }); - - // Ignore "file not found" errors but throw all others - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore Accessing `code` on error should be safe - if (dotenvResult.error && dotenvResult.error.code !== "ENOENT") { - throw dotenvResult.error; - } else if (dotenvResult.parsed) { + try { + const dotenvFile = fs.readFileSync( + path.join(process.cwd(), ".env.sentry-build-plugin"), + "utf-8" + ); + // NOTE: Do not use the dotenv.config API directly to read the dotenv file! For some ungodly reason, it falls back to reading `${process.cwd()}/.env` which is absolutely not what we want. + const dotenvResult = dotenv.parse(dotenvFile); + process.env = { ...process.env, ...dotenvResult }; logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); + } catch (e: unknown) { + // Ignore "file not found" errors but throw all others + if (typeof e === "object" && e && "code" in e && e.code !== "ENOENT") { + throw e; + } } const options = normalizeUserOptions(userOptions); From 9851e6f4a6220c3f59e571dfc9f370861d9a6b2f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Feb 2024 11:35:16 +0100 Subject: [PATCH 328/640] meta: Update changelog for 2.14.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f3dcc171672..d627e34ad16f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.14.1 + +- fix(core): Stop .env files from being picked up (#486) +- feat(core): Add telemetry for React component annotations (#482) + ## 2.14.0 - ref(component-annotate): Use default export (#478) From 4cf426002703b4d71a5e9d7a2b887f7a01197b85 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 15 Feb 2024 10:36:24 +0000 Subject: [PATCH 329/640] release: 2.14.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 61800ca0b5a1..ec0d09d719ec 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.14.0", + "version": "2.14.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 7be00316735e..e1fc54a8fabf 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.14.0", + "version": "2.14.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ac34df19d365..a0f60deb38a1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.14.0", + "version": "2.14.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.0", + "@sentry/babel-plugin-component-annotate": "2.14.1", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", @@ -70,8 +70,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6b5ec20e7f08..dd105a067534 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index aea64017e763..3c916638c72d 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.14.0", - "@sentry/rollup-plugin": "2.14.0", - "@sentry/vite-plugin": "2.14.0", - "@sentry/webpack-plugin": "2.14.0", + "@sentry/esbuild-plugin": "2.14.1", + "@sentry/rollup-plugin": "2.14.1", + "@sentry/vite-plugin": "2.14.1", + "@sentry/webpack-plugin": "2.14.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c7e93b595dac..215141028b10 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.14.0", + "version": "2.14.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index e462ad3b9ba8..dcd6a53c95f8 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 26ed4d4ed25b..e08275c1d2c9 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", - "@sentry/bundler-plugin-core": "2.14.0", - "@sentry/esbuild-plugin": "2.14.0", - "@sentry/rollup-plugin": "2.14.0", - "@sentry/vite-plugin": "2.14.0", - "@sentry/webpack-plugin": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/esbuild-plugin": "2.14.1", + "@sentry/rollup-plugin": "2.14.1", + "@sentry/vite-plugin": "2.14.1", + "@sentry/webpack-plugin": "2.14.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index ab1c8c6b9895..a1ba4ed54730 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 36437951d89e..a6c22f13e412 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.14.0", + "version": "2.14.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 339b794c2a45..5dde8446a696 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.14.0", + "version": "2.14.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 83e412a4494f..8cd06674a983 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.14.0", + "version": "2.14.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 4e50111c7d7e..1089dc923a42 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.14.0", + "version": "2.14.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.14.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.0", + "@sentry-internal/eslint-config": "2.14.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 21fefd4955585060b030fe0df438ed69afe1fd63 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 21 Feb 2024 09:58:53 -0500 Subject: [PATCH 330/640] feat: Bundle in Sentry SDK deps (#487) --- .../rollup.config.js | 8 +- packages/bundler-plugin-core/package.json | 4 +- packages/bundler-plugin-core/rollup.config.js | 8 +- packages/bundler-plugin-core/src/index.ts | 3 +- packages/esbuild-plugin/rollup.config.js | 8 +- packages/rollup-plugin/rollup.config.js | 8 +- packages/vite-plugin/rollup.config.js | 8 +- packages/webpack-plugin/rollup.config.js | 8 +- yarn.lock | 86 ++++++++----------- 9 files changed, 82 insertions(+), 59 deletions(-) diff --git a/packages/babel-plugin-component-annotate/rollup.config.js b/packages/babel-plugin-component-annotate/rollup.config.js index eba8a5639595..b7ede1e85db8 100644 --- a/packages/babel-plugin-component-annotate/rollup.config.js +++ b/packages/babel-plugin-component-annotate/rollup.config.js @@ -11,7 +11,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies ?? []), ...modulePackage.builtinModules], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a0f60deb38a1..52e5baa601fc 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -55,8 +55,6 @@ "@babel/core": "7.18.5", "@sentry/babel-plugin-component-annotate": "2.14.1", "@sentry/cli": "^2.22.3", - "@sentry/node": "^7.60.0", - "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", "find-up": "5.0.0", "glob": "9.3.2", @@ -70,6 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", + "@sentry/node": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry-internal/eslint-config": "2.14.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js index 7996f6bcd72f..68697166b4b6 100644 --- a/packages/bundler-plugin-core/rollup.config.js +++ b/packages/bundler-plugin-core/rollup.config.js @@ -12,7 +12,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0a11fa595f28..dbaf9f8d69bc 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -24,8 +24,7 @@ import { } from "./utils"; import * as dotenv from "dotenv"; import { glob } from "glob"; -import pkg from "@sentry/utils"; -const { logger } = pkg; +import { logger } from "@sentry/utils"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; diff --git a/packages/esbuild-plugin/rollup.config.js b/packages/esbuild-plugin/rollup.config.js index 95b1158525af..441dbce54c0a 100644 --- a/packages/esbuild-plugin/rollup.config.js +++ b/packages/esbuild-plugin/rollup.config.js @@ -11,7 +11,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/packages/rollup-plugin/rollup.config.js b/packages/rollup-plugin/rollup.config.js index 95b1158525af..441dbce54c0a 100644 --- a/packages/rollup-plugin/rollup.config.js +++ b/packages/rollup-plugin/rollup.config.js @@ -11,7 +11,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/packages/vite-plugin/rollup.config.js b/packages/vite-plugin/rollup.config.js index 95b1158525af..441dbce54c0a 100644 --- a/packages/vite-plugin/rollup.config.js +++ b/packages/vite-plugin/rollup.config.js @@ -11,7 +11,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index c6aa4f18685e..8751124bf233 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -11,7 +11,13 @@ export default { input, external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], onwarn: (warning) => { - throw new Error(warning.message); // Warnings are usually high-consequence for us so let's throw to catch them + if (warning.code === "CIRCULAR_DEPENDENCY") { + // Circular dependencies are usually not a big deal for us so let's just warn about them + console.warn(warning.message); + return; + } + // Warnings are usually high-consequence for us so let's throw to catch them + throw new Error(warning.message); }, plugins: [ resolve({ diff --git a/yarn.lock b/yarn.lock index eb2007cf6838..d47326959828 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2647,6 +2647,15 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@sentry-internal/tracing@7.102.0": + version "7.102.0" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.102.0.tgz#24cf662e1eb5623f6d5197e78c66d7b257560eb8" + integrity sha512-BlE33HWL1IzkGa0W+pwTiyu01MUIfYf+WnO9UC8qkDW3jxVvg2zhoSjXSxikT+KPCOgoZpQHspaTzwjnI1LCvw== + dependencies: + "@sentry/core" "7.102.0" + "@sentry/types" "7.102.0" + "@sentry/utils" "7.102.0" + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -2657,16 +2666,6 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry-internal/tracing@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.60.0.tgz#4f101d936a45965b086e042a3fba7ec7683cc034" - integrity sha512-2qvxmR954H+K7u4o92sS2u+hntzshem9XwfHAqDvBe51arNbFVy8LfJTJ5fffgZq/6jXlozCO0/6aR5yLR5mBg== - dependencies: - "@sentry/core" "7.60.0" - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - tslib "^2.4.1 || ^1.9.3" - "@sentry/cli-darwin@2.22.3": version "2.22.3" resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.22.3.tgz#d81f6a1b2060d20adb1da7e65e1c57e050e8ffcc" @@ -2721,6 +2720,14 @@ "@sentry/cli-win32-i686" "2.22.3" "@sentry/cli-win32-x64" "2.22.3" +"@sentry/core@7.102.0": + version "7.102.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.102.0.tgz#da5e04a5fe97ed91464944dac40b813e6f8aa453" + integrity sha512-GO9eLOSBK1waW4AD0wDXAreaNqXFQ1MPQZrkKcN+GJYEFhJK1+u+MSV7vO5Fs/rIfaTZIZ2jtEkxSSAOucE8EQ== + dependencies: + "@sentry/types" "7.102.0" + "@sentry/utils" "7.102.0" + "@sentry/core@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" @@ -2730,15 +2737,6 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/core@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.60.0.tgz#c256d1305b52210d608e71de8d8f365ca9377f15" - integrity sha512-B02OlFMoqdkfDZlbQfmk7tL2vObShofk7ySd/7mp+oRdUuCvX0tyrGlwI87YJvd8YWSZOCKINs3aVYivw/b6gg== - dependencies: - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - tslib "^2.4.1 || ^1.9.3" - "@sentry/integrations@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" @@ -2749,6 +2747,16 @@ localforage "^1.8.1" tslib "^1.9.3" +"@sentry/node@7.102.0": + version "7.102.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.102.0.tgz#f2853bad8650b1f94a57ae3bafad3440740f98ab" + integrity sha512-ZS1s2uO/+K4rHkmWjyqm5Jtl6dT7klbZSMvn4tfIpkfWuqrs7pP0jaATyvmF+96z3lpq6fRAJliV5tRqPy7w5Q== + dependencies: + "@sentry-internal/tracing" "7.102.0" + "@sentry/core" "7.102.0" + "@sentry/types" "7.102.0" + "@sentry/utils" "7.102.0" + "@sentry/node@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" @@ -2763,29 +2771,22 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/node@^7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.60.0.tgz#9db8fa0e71a4365b2a93a3504f2e48a38eeaae1b" - integrity sha512-I27gr7BSkdT1uwDPcbdPm7+w2yke5tojVGgothtvKfql1en4/cJZmk2bkvO2Di41+EF0UrTlUgLQff5X/q24WQ== - dependencies: - "@sentry-internal/tracing" "7.60.0" - "@sentry/core" "7.60.0" - "@sentry/types" "7.60.0" - "@sentry/utils" "7.60.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^2.4.1 || ^1.9.3" +"@sentry/types@7.102.0": + version "7.102.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.102.0.tgz#b31e9faa54036053ab82c09c3c855035a4889c59" + integrity sha512-FPfFBP0x3LkPARw1/6cWySLq1djIo8ao3Qo2KNBeE9CHdq8bsS1a8zzjJLuWG4Ww+wieLP8/lY3WTgrCz4jowg== "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/types@7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.60.0.tgz#e3e5f16436feff802b1b126a16dba537000cef55" - integrity sha512-MSEuF9YjE0j+UKdqee2AzcNlMnShVNTkCB2Wnng6Bc5hHhn4fyYeTLbuFpNxL0ffN65lxblaWx6doDsMcvRxcA== +"@sentry/utils@7.102.0": + version "7.102.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.102.0.tgz#66325f2567986cc3fd12fbdb980fb8ada170342b" + integrity sha512-cp5KCRe0slOVMwG4iP2Z4UajQkjryRTiFskZ5H7Q3X9R5voM8+DAhiDcIW88GL9NxqyUrAJOjmKdeLK2vM+bdA== + dependencies: + "@sentry/types" "7.102.0" "@sentry/utils@7.50.0": version "7.50.0" @@ -2795,14 +2796,6 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" -"@sentry/utils@7.60.0", "@sentry/utils@^7.60.0": - version "7.60.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.60.0.tgz#a96d772dcc2d007f73a5bcf67dcc66f6a7085736" - integrity sha512-Oc/PQqzeNDOSy4ZzVj6h9U+GEGRkg2PEVn9PC2V9/v3HDD20mndFqR/S2B5OOgDb/6pNGyz8XiZYI5rb29WFHA== - dependencies: - "@sentry/types" "7.60.0" - tslib "^2.4.1 || ^1.9.3" - "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" @@ -12520,11 +12513,6 @@ tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== -"tslib@^2.4.1 || ^1.9.3": - version "2.6.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From d06878faa04ab692af8a5d9c6c4149b4b667c45c Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 21 Feb 2024 11:11:51 -0500 Subject: [PATCH 331/640] meta: Update CHANGELOG for 2.14.2 (#489) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d627e34ad16f..091823087e64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.14.2 + +- feat(core): Bundle in Sentry SDK deps (#487) + ## 2.14.1 - fix(core): Stop .env files from being picked up (#486) From 29912be48e1b8d8d6fedb59a16fa724d7f59aba4 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 21 Feb 2024 16:13:13 +0000 Subject: [PATCH 332/640] release: 2.14.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index ec0d09d719ec..28e667d56960 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.14.1", + "version": "2.14.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e1fc54a8fabf..97e09729b595 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.14.1", + "version": "2.14.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 52e5baa601fc..39dd06cbb394 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.14.1", + "version": "2.14.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.1", + "@sentry/babel-plugin-component-annotate": "2.14.2", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "5.0.0", @@ -68,10 +68,10 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index dd105a067534..03b0584bfc29 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 3c916638c72d..f66a9070528c 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.14.1", - "@sentry/rollup-plugin": "2.14.1", - "@sentry/vite-plugin": "2.14.1", - "@sentry/webpack-plugin": "2.14.1", + "@sentry/esbuild-plugin": "2.14.2", + "@sentry/rollup-plugin": "2.14.2", + "@sentry/vite-plugin": "2.14.2", + "@sentry/webpack-plugin": "2.14.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 215141028b10..c0a990b70fa8 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.14.1", + "version": "2.14.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index dcd6a53c95f8..140e48829d5b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index e08275c1d2c9..99c3a3838451 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", - "@sentry/bundler-plugin-core": "2.14.1", - "@sentry/esbuild-plugin": "2.14.1", - "@sentry/rollup-plugin": "2.14.1", - "@sentry/vite-plugin": "2.14.1", - "@sentry/webpack-plugin": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/esbuild-plugin": "2.14.2", + "@sentry/rollup-plugin": "2.14.2", + "@sentry/vite-plugin": "2.14.2", + "@sentry/webpack-plugin": "2.14.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index a1ba4ed54730..9afb98481be5 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index a6c22f13e412..e6984c27e4e2 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.14.1", + "version": "2.14.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5dde8446a696..5cee4eb1e2f8 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.14.1", + "version": "2.14.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 8cd06674a983..4159851196ad 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.14.1", + "version": "2.14.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 1089dc923a42..b343aa310b33 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.14.1", + "version": "2.14.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.14.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.14.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.1", + "@sentry-internal/eslint-config": "2.14.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6e41b5a7488043dc63c75c03c613a0158800164f Mon Sep 17 00:00:00 2001 From: Allan Lewis Date: Tue, 5 Mar 2024 08:50:03 +0000 Subject: [PATCH 333/640] Allow newer versions of 3rd-party dependencies of `core` (#496) --- packages/bundler-plugin-core/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 39dd06cbb394..871bb98ae76d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -52,12 +52,12 @@ "fix": "eslint ./src ./test --format stylish --fix" }, "dependencies": { - "@babel/core": "7.18.5", + "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "2.14.2", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", - "find-up": "5.0.0", - "glob": "9.3.2", + "find-up": "^5.0.0", + "glob": "^9.3.2", "magic-string": "0.27.0", "unplugin": "1.0.1" }, From 5853f1707538ff5c07a579e1ab95086be7e2872a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 5 Mar 2024 18:08:54 +0100 Subject: [PATCH 334/640] meta: Update changelog for 2.14.3 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 091823087e64..5980aac68fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.14.3 + +- deps(core): Unpin `@babel/core`, `find-up`, and `glob` (#496) + +Work in this release contributed by @allanlewis. Thank you for your contribution! + ## 2.14.2 - feat(core): Bundle in Sentry SDK deps (#487) From b8822f1866f7f737d7f64a5f630455bca211ba36 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 5 Mar 2024 17:10:16 +0000 Subject: [PATCH 335/640] release: 2.14.3 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 28e667d56960..a6d71d0bdbc0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.14.2", + "version": "2.14.3", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 97e09729b595..ce37b85f23c9 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.14.2", + "version": "2.14.3", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 871bb98ae76d..d32b759ed9dd 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.14.2", + "version": "2.14.3", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.2", + "@sentry/babel-plugin-component-annotate": "2.14.3", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 03b0584bfc29..31ecc806ff0f 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index f66a9070528c..f2aaf066a8b5 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.14.2", - "@sentry/rollup-plugin": "2.14.2", - "@sentry/vite-plugin": "2.14.2", - "@sentry/webpack-plugin": "2.14.2", + "@sentry/esbuild-plugin": "2.14.3", + "@sentry/rollup-plugin": "2.14.3", + "@sentry/vite-plugin": "2.14.3", + "@sentry/webpack-plugin": "2.14.3", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c0a990b70fa8..cf46ca466279 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.14.2", + "version": "2.14.3", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 140e48829d5b..574755bb1f53 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 99c3a3838451..fefc294753be 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", - "@sentry/bundler-plugin-core": "2.14.2", - "@sentry/esbuild-plugin": "2.14.2", - "@sentry/rollup-plugin": "2.14.2", - "@sentry/vite-plugin": "2.14.2", - "@sentry/webpack-plugin": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/esbuild-plugin": "2.14.3", + "@sentry/rollup-plugin": "2.14.3", + "@sentry/vite-plugin": "2.14.3", + "@sentry/webpack-plugin": "2.14.3", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9afb98481be5..0f2278219c57 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.3", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e6984c27e4e2..8fe6bedb3eb9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.14.2", + "version": "2.14.3", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.3", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5cee4eb1e2f8..43a52d9c1a69 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.14.2", + "version": "2.14.3", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 4159851196ad..97caa2ea44c8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.14.2", + "version": "2.14.3", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.3", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b343aa310b33..f20c75835a46 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.14.2", + "version": "2.14.3", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.2", + "@sentry/bundler-plugin-core": "2.14.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.14.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.2", + "@sentry-internal/eslint-config": "2.14.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 4942fd6d979ed8251864e34ec80e302e58757037 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 5 Mar 2024 18:21:24 +0100 Subject: [PATCH 336/640] build: Unstale yarn.lock (#497) --- yarn.lock | 88 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 18 deletions(-) diff --git a/yarn.lock b/yarn.lock index d47326959828..fb9d3976024a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -77,6 +77,27 @@ json5 "^2.2.2" semver "^6.3.0" +"@babel/core@^7.18.5": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" + integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.0" + "@babel/parser" "^7.24.0" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.0" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/core@^7.23.5": version "7.23.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" @@ -415,6 +436,15 @@ "@babel/traverse" "^7.23.9" "@babel/types" "^7.23.9" +"@babel/helpers@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" + integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -443,6 +473,11 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== +"@babel/parser@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1172,6 +1207,15 @@ "@babel/parser" "^7.23.9" "@babel/types" "^7.23.9" +"@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/traverse@^7.18.5", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": version "7.21.5" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" @@ -1204,6 +1248,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" + integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.21.5" resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -1222,6 +1282,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -7096,16 +7165,6 @@ glob@8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@9.3.2: - version "9.3.2" - resolved "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda" - integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== - dependencies: - fs.realpath "^1.0.0" - minimatch "^7.4.1" - minipass "^4.2.4" - path-scurry "^1.6.1" - glob@^10.2.2: version "10.2.6" resolved "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1" @@ -7140,7 +7199,7 @@ glob@^8.0.1, glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@^9.2.0: +glob@^9.2.0, glob@^9.3.2: version "9.3.5" resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== @@ -9540,13 +9599,6 @@ minimatch@^6.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^7.4.1: - version "7.4.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" - integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== - dependencies: - brace-expansion "^2.0.1" - minimatch@^8.0.2: version "8.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" From 5bbf8ea04e6e89c6798e31a25e8c057e0dcf64e1 Mon Sep 17 00:00:00 2001 From: Josh Parnham Date: Thu, 7 Mar 2024 20:06:22 +1100 Subject: [PATCH 337/640] docs: Fix "latter requires" typo (#498) --- packages/bundler-plugin-core/src/types.ts | 2 +- packages/dev-utils/src/generate-documentation-table.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index ab758b12a7da..0a569bfc1202 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -154,7 +154,7 @@ export interface Options { * * Defaults to automatically detecting a value for your environment. * This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. - * (the latterrequires access to git CLI and for the root directory to be a valid repository) + * (the latter requires access to git CLI and for the root directory to be a valid repository) * * If you didn't provide a value and the plugin can't automatically detect one, no release will be created. */ diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 0be360131e69..d8dfca722abe 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -114,7 +114,7 @@ errorHandler: (err) => { name: "name", type: "string", fullDescription: - "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latterrequires access to git CLI and for the root directory to be a valid repository)\n\nIf you didn't provide a value and the plugin can't automatically detect one, no release will be created.", + "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latter requires access to git CLI and for the root directory to be a valid repository)\n\nIf you didn't provide a value and the plugin can't automatically detect one, no release will be created.", }, { name: "inject", From 998df09e408a8dddd8959ecff11649ec81751b11 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 12 Mar 2024 17:26:03 +0100 Subject: [PATCH 338/640] feat: Make options argument optional (#502) --- packages/bundler-plugin-core/src/index.ts | 2 +- packages/esbuild-plugin/src/index.ts | 2 +- packages/rollup-plugin/src/index.ts | 2 +- packages/vite-plugin/src/index.ts | 2 +- packages/webpack-plugin/src/index.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index dbaf9f8d69bc..571012d6307b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -70,7 +70,7 @@ export function sentryUnpluginFactory({ debugIdUploadPlugin, bundleSizeOptimizationsPlugin, }: SentryUnpluginFactoryOptions) { - return createUnplugin((userOptions, unpluginMetaContext) => { + return createUnplugin((userOptions = {}, unpluginMetaContext) => { const logger = createLogger({ prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, silent: userOptions.silent ?? false, diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index cf5781d780df..49651bc381eb 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -258,7 +258,7 @@ const sentryUnplugin = sentryUnpluginFactory({ }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryEsbuildPlugin: (options: Options) => any = sentryUnplugin.esbuild; +export const sentryEsbuildPlugin: (options?: Options) => any = sentryUnplugin.esbuild; export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 8a45c0c338dc..dbdd63b8f793 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -67,7 +67,7 @@ const sentryUnplugin = sentryUnpluginFactory({ }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryRollupPlugin: (options: Options) => any = sentryUnplugin.rollup; +export const sentryRollupPlugin: (options?: Options) => any = sentryUnplugin.rollup; export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 1fd8d04f90ec..d840077b26b0 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -69,7 +69,7 @@ const sentryUnplugin = sentryUnpluginFactory({ }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryVitePlugin: (options: Options) => any = sentryUnplugin.vite; +export const sentryVitePlugin: (options?: Options) => any = sentryUnplugin.vite; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 43ccd38c6f8b..39b6233256df 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -174,7 +174,7 @@ const sentryUnplugin = sentryUnpluginFactory({ }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options: Options) => any = sentryUnplugin.webpack; +export const sentryWebpackPlugin: (options?: Options) => any = sentryUnplugin.webpack; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; From 0dc46395ff22e1807738cd65ba3cb87284cb15be Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 12 Mar 2024 17:45:41 +0100 Subject: [PATCH 339/640] ref(annotate): Turn disabled message to debug log (#504) --- packages/bundler-plugin-core/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 571012d6307b..6e8e23980964 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -327,7 +327,7 @@ export function sentryUnpluginFactory({ if (options.reactComponentAnnotation) { if (!options.reactComponentAnnotation.enabled) { - logger.info( + logger.debug( "The component name annotate plugin is currently disabled. Skipping component name annotations." ); } else if (options.reactComponentAnnotation.enabled && !componentNameAnnotatePlugin) { From 265a0f2187ab1b6723858467b918ff08252c0cc9 Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:49:21 +0100 Subject: [PATCH 340/640] meta: Update changelog for 2.15.0 (#505) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5980aac68fc8..84facd05381e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.15.0 + +- feat: Make options argument optional (#502) +- ref(annotate): Turn disabled message to debug log (#504) + ## 2.14.3 - deps(core): Unpin `@babel/core`, `find-up`, and `glob` (#496) From 5e74bfdd0d3c917ace5ebc0a80c5c33e6fa83ca9 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 13 Mar 2024 10:56:41 +0000 Subject: [PATCH 341/640] release: 2.15.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index a6d71d0bdbc0..f32fe9c5bec6 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.14.3", + "version": "2.15.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index ce37b85f23c9..66274dd6d43a 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.14.3", + "version": "2.15.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d32b759ed9dd..335a6e3621c6 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.14.3", + "version": "2.15.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.3", + "@sentry/babel-plugin-component-annotate": "2.15.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 31ecc806ff0f..970a019d6834 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index f2aaf066a8b5..8fbced1074e7 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.14.3", - "@sentry/rollup-plugin": "2.14.3", - "@sentry/vite-plugin": "2.14.3", - "@sentry/webpack-plugin": "2.14.3", + "@sentry/esbuild-plugin": "2.15.0", + "@sentry/rollup-plugin": "2.15.0", + "@sentry/vite-plugin": "2.15.0", + "@sentry/webpack-plugin": "2.15.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index cf46ca466279..f3a7881e3c80 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.14.3", + "version": "2.15.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/bundler-plugin-core": "2.15.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 574755bb1f53..56b556e58612 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index fefc294753be..bdf5130272e7 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", - "@sentry/bundler-plugin-core": "2.14.3", - "@sentry/esbuild-plugin": "2.14.3", - "@sentry/rollup-plugin": "2.14.3", - "@sentry/vite-plugin": "2.14.3", - "@sentry/webpack-plugin": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/esbuild-plugin": "2.15.0", + "@sentry/rollup-plugin": "2.15.0", + "@sentry/vite-plugin": "2.15.0", + "@sentry/webpack-plugin": "2.15.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 0f2278219c57..f76ec93d640c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/bundler-plugin-core": "2.15.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 8fe6bedb3eb9..9a369baf17dc 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.14.3", + "version": "2.15.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/bundler-plugin-core": "2.15.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 43a52d9c1a69..63f6642f1a01 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.14.3", + "version": "2.15.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 97caa2ea44c8..b24ab8b715ae 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.14.3", + "version": "2.15.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/bundler-plugin-core": "2.15.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f20c75835a46..61be8c46f5d1 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.14.3", + "version": "2.15.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.14.3", + "@sentry/bundler-plugin-core": "2.15.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.14.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.14.3", + "@sentry-internal/eslint-config": "2.15.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From febe9ce8dfa34c08ae1b7badc9c9e23182aa2ace Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 13 Mar 2024 15:00:57 +0100 Subject: [PATCH 342/640] feat(core): Add `loggerPrefixOverride` meta option (#506) --- packages/bundler-plugin-core/src/index.ts | 4 +++- packages/bundler-plugin-core/src/types.ts | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 6e8e23980964..36024446035b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -72,7 +72,9 @@ export function sentryUnpluginFactory({ }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions = {}, unpluginMetaContext) => { const logger = createLogger({ - prefix: `[sentry-${unpluginMetaContext.framework}-plugin]`, + prefix: + userOptions._metaOptions?.loggerPrefixOverride ?? + `[sentry-${unpluginMetaContext.framework}-plugin]`, silent: userOptions.silent ?? false, debug: userOptions.debug ?? false, }); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 0a569bfc1202..46248bd3cbb1 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -320,6 +320,19 @@ export interface Options { // eslint-disable-next-line @typescript-eslint/no-explicit-any moduleMetadata?: any | ModuleMetadataCallback; }; + + /** + * Options that are useful for building wrappers around the plugin. You likely don't need these options unless you + * are distributing a tool that depends on this plugin + */ + _metaOptions?: { + /** + * Overrides the prefix that come before logger messages. (e.g. `[some-prefix] Info: Some log message`) + * + * Example value: `[sentry-webpack-plugin (client)]` + */ + loggerPrefixOverride?: string; + }; } export interface ModuleMetadataCallbackArgs { From e4d08db8b4387964174c16b4f2adbb38002444df Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 18 Mar 2024 13:15:10 +0100 Subject: [PATCH 343/640] meta: Update changelog for 2.16.0 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84facd05381e..2bd3c494d36d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.16.0 + +- feat(core): Add `loggerPrefixOverride` meta option (#506) + ## 2.15.0 - feat: Make options argument optional (#502) From 477dea6998f85eaabc57e89d0346e162c08415d2 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 18 Mar 2024 12:16:31 +0000 Subject: [PATCH 344/640] release: 2.16.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index f32fe9c5bec6..d911d7059061 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.15.0", + "version": "2.16.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 66274dd6d43a..488b50ae4298 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.15.0", + "version": "2.16.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 335a6e3621c6..b6a0d64e2342 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.15.0", + "version": "2.16.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.15.0", + "@sentry/babel-plugin-component-annotate": "2.16.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 970a019d6834..45b45830dfca 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 8fbced1074e7..4da66ffbd74e 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.15.0", - "@sentry/rollup-plugin": "2.15.0", - "@sentry/vite-plugin": "2.15.0", - "@sentry/webpack-plugin": "2.15.0", + "@sentry/esbuild-plugin": "2.16.0", + "@sentry/rollup-plugin": "2.16.0", + "@sentry/vite-plugin": "2.16.0", + "@sentry/webpack-plugin": "2.16.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index f3a7881e3c80..c595c9770ed0 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.15.0", + "version": "2.16.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/bundler-plugin-core": "2.16.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 56b556e58612..9ad9fad75f26 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index bdf5130272e7..7185832810bb 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", - "@sentry/bundler-plugin-core": "2.15.0", - "@sentry/esbuild-plugin": "2.15.0", - "@sentry/rollup-plugin": "2.15.0", - "@sentry/vite-plugin": "2.15.0", - "@sentry/webpack-plugin": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/esbuild-plugin": "2.16.0", + "@sentry/rollup-plugin": "2.16.0", + "@sentry/vite-plugin": "2.16.0", + "@sentry/webpack-plugin": "2.16.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index f76ec93d640c..c17849389a69 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/bundler-plugin-core": "2.16.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 9a369baf17dc..7ae8b3087663 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.15.0", + "version": "2.16.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/bundler-plugin-core": "2.16.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 63f6642f1a01..af29a8d88e43 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.15.0", + "version": "2.16.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b24ab8b715ae..7f2a5ffa3883 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.15.0", + "version": "2.16.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/bundler-plugin-core": "2.16.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 61be8c46f5d1..e0706cc9ea6c 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.15.0", + "version": "2.16.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.15.0", + "@sentry/bundler-plugin-core": "2.16.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.15.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.15.0", + "@sentry-internal/eslint-config": "2.16.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6fd1363a2c36ab087308db627eab243a7a473362 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 19 Mar 2024 09:50:06 +0100 Subject: [PATCH 345/640] fix: Also match `.cjs` and `.mjs` files when finding files to upload in rollup-based bundlers (#509) --- packages/bundler-plugin-core/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 36024446035b..f601bca2c6dc 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -515,7 +515,7 @@ export function createRollupDebugIdUploadHooks( if (outputOptions.dir) { const outputDir = outputOptions.dir; const buildArtifacts = await glob( - ["/**/*.js", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"], + ["/**/*.js", "/**/*.mjs", "/**/*.cjs", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"], { root: outputDir, absolute: true, From b87511c739f0a1a8ac00272732cfa65ebf999f5a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 Apr 2024 09:56:21 +0200 Subject: [PATCH 346/640] fix: Create word-based fidelity source mapping for code transformations (#513) --- packages/bundler-plugin-core/package.json | 2 +- packages/bundler-plugin-core/src/index.ts | 6 +++--- packages/bundler-plugin-core/src/utils.ts | 2 +- yarn.lock | 12 ++++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b6a0d64e2342..9d08c326b5ef 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -58,7 +58,7 @@ "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", - "magic-string": "0.27.0", + "magic-string": "0.30.8", "unplugin": "1.0.1" }, "devDependencies": { diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index f601bca2c6dc..c4f12ee85228 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -419,7 +419,7 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { return { code: ms.toString(), - map: ms.generateMap({ hires: true }), + map: ms.generateMap({ hires: "boundary" }), }; }, }; @@ -464,7 +464,7 @@ export function createRollupDebugIdInjectionHooks() { return { code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: true }), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), }; } else { return null; // returning null means not modifying the chunk at all @@ -495,7 +495,7 @@ export function createRollupModuleMetadataInjectionHooks(injectionCode: string) return { code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: true }), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), }; } else { return null; // returning null means not modifying the chunk at all diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 870dcb762426..2389ecaeb311 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -326,7 +326,7 @@ export function replaceBooleanFlagsInCode( if (ms.hasChanged()) { return { code: ms.toString(), - map: ms.generateMap({ hires: true }), + map: ms.generateMap({ hires: "boundary" }), }; } diff --git a/yarn.lock b/yarn.lock index fb9d3976024a..79095fe6c928 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2001,7 +2001,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -9314,12 +9314,12 @@ lru_map@^0.3.3: resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@0.27.0: - version "0.27.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== +magic-string@0.30.8: + version "0.30.8" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" + "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@^0.25.7: version "0.25.9" From 26e9c3d48c8b04c3c050ffa23c48210784caf65e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 Apr 2024 09:57:58 +0200 Subject: [PATCH 347/640] meta: Update changelog for 2.16.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd3c494d36d..ffb07e7bd9e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.16.1 + +- fix: Create word-based fidelity source mapping for code transformations (#513) +- fix: Also match `.cjs` and `.mjs` files when finding files to upload in rollup-based bundlers (#509) + ## 2.16.0 - feat(core): Add `loggerPrefixOverride` meta option (#506) From 7373c62105bccef485f64b5782e0882d7acbf963 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 Apr 2024 08:44:16 +0200 Subject: [PATCH 348/640] deps(ci): Bump actions (#514) --- .github/workflows/checks.yml | 58 +++++++++++++++++------------------ .github/workflows/codeql.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index fc1991fb950a..234e4256a6e8 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -12,18 +12,18 @@ jobs: name: Build packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -39,18 +39,18 @@ jobs: name: Typing check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -65,18 +65,18 @@ jobs: name: Formatting check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -92,18 +92,18 @@ jobs: name: Unit Tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -132,18 +132,18 @@ jobs: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -167,16 +167,16 @@ jobs: env: SENTRY_AUTH_TOKEN: ${{ secrets.E2E_TESTS_SENTRY_AUTH_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: volta-cli/action@v3 - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}-${{ github.run_id }} @@ -192,18 +192,18 @@ jobs: name: Linter check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -221,8 +221,8 @@ jobs: # Build artifacts are only needed for releasing workflow. if: startsWith(github.ref, 'refs/heads/release/') steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version-file: "package.json" - name: Install dependencies diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3d891f155309..3cfbefab4765 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 15eea42568e2..55317e45f884 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest name: "Release a new version" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.GH_RELEASE_PAT }} fetch-depth: 0 From e876fa9cb2ae6176a9655aa25b26b3c7b51de4fc Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 3 Apr 2024 07:12:02 +0000 Subject: [PATCH 349/640] release: 2.16.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index d911d7059061..d7429de094fa 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.16.0", + "version": "2.16.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 488b50ae4298..9f0d6937b4dd 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.16.0", + "version": "2.16.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9d08c326b5ef..8327e8acfa98 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.16.0", + "version": "2.16.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.16.0", + "@sentry/babel-plugin-component-annotate": "2.16.1", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 45b45830dfca..30db82c76700 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4da66ffbd74e..4bd51d0f1114 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.16.0", - "@sentry/rollup-plugin": "2.16.0", - "@sentry/vite-plugin": "2.16.0", - "@sentry/webpack-plugin": "2.16.0", + "@sentry/esbuild-plugin": "2.16.1", + "@sentry/rollup-plugin": "2.16.1", + "@sentry/vite-plugin": "2.16.1", + "@sentry/webpack-plugin": "2.16.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c595c9770ed0..3d528baac069 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.16.0", + "version": "2.16.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9ad9fad75f26..59f940041b8a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 7185832810bb..4fea19357897 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", - "@sentry/bundler-plugin-core": "2.16.0", - "@sentry/esbuild-plugin": "2.16.0", - "@sentry/rollup-plugin": "2.16.0", - "@sentry/vite-plugin": "2.16.0", - "@sentry/webpack-plugin": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/esbuild-plugin": "2.16.1", + "@sentry/rollup-plugin": "2.16.1", + "@sentry/vite-plugin": "2.16.1", + "@sentry/webpack-plugin": "2.16.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index c17849389a69..f66962756de5 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 7ae8b3087663..d5b023df0db7 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.16.0", + "version": "2.16.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index af29a8d88e43..33e9f521e0b0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.16.0", + "version": "2.16.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7f2a5ffa3883..5c5d26f6a59a 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.16.0", + "version": "2.16.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e0706cc9ea6c..c0bb022a18ba 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.16.0", + "version": "2.16.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.0", + "@sentry/bundler-plugin-core": "2.16.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.16.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.0", + "@sentry-internal/eslint-config": "2.16.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 82d41cde6cc81891d93e38d2291340952d08cdcd Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Tue, 9 Apr 2024 04:28:59 -0300 Subject: [PATCH 350/640] feat: Support Heroku env vars when infering release name (#517) --- packages/bundler-plugin-core/src/utils.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 2389ecaeb311..1fbe108365a1 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -233,6 +233,10 @@ export function determineReleaseName(): string | undefined { process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables process.env["FC_GIT_COMMIT_SHA"] || + // Heroku #1 https://devcenter.heroku.com/changelog-items/630 + process.env["SOURCE_VERSION"] || + // Heroku #2 https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases + process.env["HEROKU_SLUG_COMMIT"] || gitRevision() ); } From 5bd855d3fe0e30bd7d1beb0b29dad8da4c2fc416 Mon Sep 17 00:00:00 2001 From: BunnyBit Date: Tue, 9 Apr 2024 15:33:15 +0800 Subject: [PATCH 351/640] fix(docs): Update pnpm install commands (#516) Co-authored-by: Luca Forstner --- packages/babel-plugin-component-annotate/README.md | 2 +- packages/esbuild-plugin/README_TEMPLATE.md | 2 +- packages/rollup-plugin/README_TEMPLATE.md | 2 +- packages/vite-plugin/README_TEMPLATE.md | 2 +- packages/webpack-plugin/README_TEMPLATE.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/babel-plugin-component-annotate/README.md b/packages/babel-plugin-component-annotate/README.md index 67f8b37c63a9..a062dd602809 100644 --- a/packages/babel-plugin-component-annotate/README.md +++ b/packages/babel-plugin-component-annotate/README.md @@ -46,7 +46,7 @@ yarn add @sentry/babel-plugin-component-annotate --dev Using pnpm: ```bash -pnpm install @sentry/babel-plugin-component-annotate --dev +pnpm add @sentry/babel-plugin-component-annotate --save-dev ``` ## Example diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md index 8b6382ecbfb3..ca35df295a80 100644 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -29,7 +29,7 @@ yarn add @sentry/esbuild-plugin --dev Using pnpm: ```bash -pnpm install @sentry/esbuild-plugin --dev +pnpm add @sentry/esbuild-plugin --save-dev ``` ## Example diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md index 45b11483a5dd..53ebf7c823e9 100644 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -29,7 +29,7 @@ yarn add @sentry/rollup-plugin --dev Using pnpm: ```bash -pnpm install @sentry/rollup-plugin --dev +pnpm add @sentry/rollup-plugin --save-dev ``` ## Example diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index ff33405b4a95..ad8d3cbc6c89 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -29,7 +29,7 @@ yarn add @sentry/vite-plugin --dev Using pnpm: ```bash -pnpm add -D @sentry/vite-plugin +pnpm add @sentry/vite-plugin --save-dev ``` ## Example diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index 48d0f0a3d80f..fa02bed19a22 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -29,7 +29,7 @@ yarn add @sentry/webpack-plugin --dev Using pnpm: ```bash -pnpm install @sentry/webpack-plugin --dev +pnpm add @sentry/webpack-plugin --save-dev ``` ## Example From 295fa1952ed2a08b62d8bf866b13d81220191265 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 18 Apr 2024 10:51:35 +0200 Subject: [PATCH 352/640] feat: Deprecate and noop `cleanArtifacts` (#525) Co-authored-by: Lukas Stracke --- packages/bundler-plugin-core/src/index.ts | 10 ++++------ packages/bundler-plugin-core/src/options-mapping.ts | 1 - .../src/plugins/release-management.ts | 9 --------- packages/bundler-plugin-core/src/sentry/telemetry.ts | 1 - packages/bundler-plugin-core/src/types.ts | 5 +++++ .../bundler-plugin-core/test/option-mappings.test.ts | 2 -- .../bundler-plugin-core/test/sentry/telemetry.test.ts | 2 -- packages/dev-utils/src/generate-documentation-table.ts | 2 +- packages/playground/vite.config.smallNodeApp.js | 1 - 9 files changed, 10 insertions(+), 23 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index c4f12ee85228..0eb376461681 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -54,11 +54,10 @@ interface SentryUnpluginFactoryOptions { * release creation pipeline: * * 1. Create a new release - * 2. Delete already uploaded artifacts for this release (if `cleanArtifacts` is enabled) - * 3. Upload sourcemaps based on `include` and source-map-specific options - * 4. Associate a range of commits with the release (if `setCommits` is specified) - * 5. Finalize the release (unless `finalize` is disabled) - * 6. Add deploy information to the release (if `deploy` is specified) + * 2. Upload sourcemaps based on `include` and source-map-specific options + * 3. Associate a range of commits with the release (if `setCommits` is specified) + * 4. Finalize the release (unless `finalize` is disabled) + * 5. Add deploy information to the release (if `deploy` is specified) * * This release creation pipeline relies on Sentry CLI to execute the different steps. */ @@ -261,7 +260,6 @@ export function sentryUnpluginFactory({ logger, releaseName: options.release.name, shouldCreateRelease: options.release.create, - shouldCleanArtifacts: options.release.cleanArtifacts, shouldFinalizeRelease: options.release.finalize, include: options.release.uploadLegacySourcemaps, setCommitsOption: options.release.setCommits, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 01f066a14700..32306c8dbcb9 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -26,7 +26,6 @@ export function normalizeUserOptions(userOptions: UserOptions) { create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", - cleanArtifacts: userOptions.release?.cleanArtifacts ?? false, }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index aaa177ede731..dd905acbd988 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -10,7 +10,6 @@ interface ReleaseManagementPluginOptions { logger: Logger; releaseName: string; shouldCreateRelease: boolean; - shouldCleanArtifacts: boolean; shouldFinalizeRelease: boolean; include?: string | IncludeEntry | Array; setCommitsOption?: SentryCliCommitsOptions; @@ -36,7 +35,6 @@ export function releaseManagementPlugin({ dist, setCommitsOption, shouldCreateRelease, - shouldCleanArtifacts, shouldFinalizeRelease, deployOptions, handleRecoverableError, @@ -54,13 +52,6 @@ export function releaseManagementPlugin({ await cliInstance.releases.new(releaseName); } - if (shouldCleanArtifacts) { - await cliInstance.releases.execute( - ["releases", "files", releaseName, "delete", "--all"], - true - ); - } - if (include) { const normalizedInclude = arrayify(include) .map((includeItem) => diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 390d99049bf8..d011b13cfd10 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -74,7 +74,6 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund hub.setTag("inject-build-information", !!options._experiments.injectBuildInformation); // Optional release pipeline steps - hub.setTag("clean-artifacts", release.cleanArtifacts); if (release.setCommits) { hub.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); } else { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 46248bd3cbb1..6419c0747689 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -212,7 +212,12 @@ export interface Options { * Remove all previously uploaded artifacts for this release on Sentry before the upload. * * Defaults to `false`. + * + * @deprecated `cleanArtifacts` is deprecated and currently doesn't do anything. Historically it was needed + * since uploading the same artifacts twice was not allowed. Nowadays, when uploading artifacts with the same name + * more than once to the same release on Sentry, Sentry will prefer the most recent artifact for source mapping. */ + // TODO(v3): Remove this option cleanArtifacts?: boolean; /** diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 2470e67026dd..d9386cbb793a 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -20,7 +20,6 @@ describe("normalizeUserOptions()", () => { name: "my-release", finalize: true, inject: true, - cleanArtifacts: false, create: true, vcsRemote: "origin", uploadLegacySourcemaps: "./out", @@ -62,7 +61,6 @@ describe("normalizeUserOptions()", () => { finalize: true, create: true, inject: true, - cleanArtifacts: false, uploadLegacySourcemaps: { ext: ["js", "map", ".foo"], ignore: ["./files"], diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 67b3f8716a5a..213775a847a6 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -104,7 +104,6 @@ describe("addPluginOptionTagsToHub", () => { normalizeUserOptions({ ...defaultOptions, release: { - cleanArtifacts: true, finalize: true, }, }), @@ -112,7 +111,6 @@ describe("addPluginOptionTagsToHub", () => { "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("clean-artifacts", true); expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); }); diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index d8dfca722abe..56cff549b530 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -232,7 +232,7 @@ errorHandler: (err) => { name: "cleanArtifacts", type: "boolean", fullDescription: - "Remove all previously uploaded artifacts for this release on Sentry before the upload.\n\nDefaults to `false`.", + "Remove all previously uploaded artifacts for this release on Sentry before the upload.\n\nDefaults to `false`.\n\n**Deprecation Notice:** `cleanArtifacts` is deprecated and will does currently not do anything. Historically it was needed since uploading the same artifacts twice was not allowed. Nowadays, when uploading artifacts with the same name more than once to the same release on Sentry, Sentry will prefer the most recent artifact for source mapping.", }, { name: "uploadLegacySourcemaps", diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 1b86efcd8386..34c1586ad373 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -23,7 +23,6 @@ export default defineConfig({ debug: true, release: "0.0.14", include: "out/vite-smallNodeApp", - cleanArtifacts: true, // ignore: ["out/*", "!out/vite-smallNodeApp/index.js.map"], ignore: ["!out/vite-smallNodeApp/index.js.map"], ignoreFile: ".sentryignore", From fd2a99c4ffb79974db1830ab59cd59a32433f60c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 3 May 2024 13:33:16 +0200 Subject: [PATCH 353/640] misc(esbuild): Log warning when attempting to inject debug IDs with esbuild `bundle` option active (#526) --- packages/bundler-plugin-core/src/index.ts | 7 ++++--- packages/esbuild-plugin/src/index.ts | 9 ++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0eb376461681..3831fa8caddb 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -9,7 +9,7 @@ import { normalizeUserOptions, validateOptions } from "./options-mapping"; import { createDebugIdUploadFunction } from "./debug-id-upload"; import { releaseManagementPlugin } from "./plugins/release-management"; import { telemetryPlugin } from "./plugins/telemetry"; -import { createLogger } from "./sentry/logger"; +import { createLogger, Logger } from "./sentry/logger"; import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; import { Options, SentrySDKBuildFlags } from "./types"; import { @@ -30,7 +30,7 @@ interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; componentNameAnnotatePlugin?: () => UnpluginOptions; moduleMetadataInjectionPlugin?: (injectionCode: string) => UnpluginOptions; - debugIdInjectionPlugin: () => UnpluginOptions; + debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; } @@ -281,7 +281,7 @@ export function sentryUnpluginFactory({ ); } - plugins.push(debugIdInjectionPlugin()); + plugins.push(debugIdInjectionPlugin(logger)); if (!options.authToken) { logger.warn( @@ -592,3 +592,4 @@ export function getDebugIdSnippet(debugId: string): string { export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; export type { Options, SentrySDKBuildFlags } from "./types"; +export type { Logger } from "./sentry/logger"; diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 49651bc381eb..37f68e350ccc 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -4,6 +4,7 @@ import { getDebugIdSnippet, SentrySDKBuildFlags, } from "@sentry/bundler-plugin-core"; +import type { Logger } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; import * as path from "path"; @@ -41,7 +42,7 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } -function esbuildDebugIdInjectionPlugin(): UnpluginOptions { +function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { const pluginName = "sentry-esbuild-debug-id-injection-plugin"; const stubNamespace = "sentry-debug-id-stub"; @@ -50,6 +51,12 @@ function esbuildDebugIdInjectionPlugin(): UnpluginOptions { esbuild: { setup({ initialOptions, onLoad, onResolve }) { + if (initialOptions.bundle) { + logger.warn( + "Esbuild's `bundle: true` option is currently not supported! Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps with the `bundle` option, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" + ); + } + onResolve({ filter: /.*/ }, (args) => { if (args.kind !== "entry-point") { return; From 9208472f0932013a3ba5ac10a851586e6becbb5e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 23 May 2024 12:58:20 +0200 Subject: [PATCH 354/640] meta: Update changelog for 2.17.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffb07e7bd9e0..4229b2776240 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.17.0 + +- feat: Deprecate and noop `cleanArtifacts` (#525) +- feat: Support Heroku env vars when inferring release name (#517) +- fix(docs): Update pnpm install commands (#516) +- misc(esbuild): Log warning when attempting to inject debug IDs with esbuild `bundle` option active (#526) + +Work in this release contributed by @et84121, and @duailibe. Thank you for your contributions! + ## 2.16.1 - fix: Create word-based fidelity source mapping for code transformations (#513) From 65cebf2064ca249c5d5b3ac6052ec945d986a914 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 23 May 2024 10:59:35 +0000 Subject: [PATCH 355/640] release: 2.17.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index d7429de094fa..24b225288307 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.16.1", + "version": "2.17.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 9f0d6937b4dd..715837fa31c9 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.16.1", + "version": "2.17.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8327e8acfa98..712ce1ee1116 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.16.1", + "version": "2.17.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.16.1", + "@sentry/babel-plugin-component-annotate": "2.17.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 30db82c76700..e6904e9dce76 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4bd51d0f1114..389453798eaf 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.16.1", - "@sentry/rollup-plugin": "2.16.1", - "@sentry/vite-plugin": "2.16.1", - "@sentry/webpack-plugin": "2.16.1", + "@sentry/esbuild-plugin": "2.17.0", + "@sentry/rollup-plugin": "2.17.0", + "@sentry/vite-plugin": "2.17.0", + "@sentry/webpack-plugin": "2.17.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 3d528baac069..95d64403cd90 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.16.1", + "version": "2.17.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.17.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 59f940041b8a..ef78e7e0fe3e 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 4fea19357897..824a4d716809 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", - "@sentry/bundler-plugin-core": "2.16.1", - "@sentry/esbuild-plugin": "2.16.1", - "@sentry/rollup-plugin": "2.16.1", - "@sentry/vite-plugin": "2.16.1", - "@sentry/webpack-plugin": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/esbuild-plugin": "2.17.0", + "@sentry/rollup-plugin": "2.17.0", + "@sentry/vite-plugin": "2.17.0", + "@sentry/webpack-plugin": "2.17.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index f66962756de5..05604696c4aa 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.17.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d5b023df0db7..0c7888826b59 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.16.1", + "version": "2.17.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.17.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 33e9f521e0b0..321aa64dc532 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.16.1", + "version": "2.17.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 5c5d26f6a59a..d16705a355ba 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.16.1", + "version": "2.17.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.17.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index c0bb022a18ba..7660b310c1b5 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.16.1", + "version": "2.17.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.17.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.16.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.16.1", + "@sentry-internal/eslint-config": "2.17.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 929aa15f822df3e7a92600cebcf823162ca05288 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 23 May 2024 14:57:28 +0200 Subject: [PATCH 356/640] docs: Clarify interaction between `uploadLegacySourcemaps` and other options (#535) --- packages/dev-utils/src/generate-documentation-table.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 56cff549b530..1c9bbf637894 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -245,6 +245,8 @@ Each path can be given as a string or an object with more specific options. The modern version of doing source maps upload is more robust and way easier to get working but has to inject a very small snippet of JavaScript into your output bundles. In situations where this leads to problems (e.g subresource integrity) you can use this option as a fallback. +Please note that this option will not interact with any settings provided in the \`sourcemaps\` option. Using \`uploadLegacySourcemaps\` is a completely separate upload mechanism we provide for backwards-compatibility. + The \`IncludeEntry\` type looks as follows: \`\`\`ts From f22747b156392ed538cb6301be858eb1fbc195cd Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 31 May 2024 14:37:28 +0200 Subject: [PATCH 357/640] feat: Promote experimental `moduleMetadata` option to stable (#538) --- packages/bundler-plugin-core/src/index.ts | 23 +++++++----- .../src/options-mapping.ts | 1 + .../src/sentry/telemetry.ts | 2 +- packages/bundler-plugin-core/src/types.ts | 36 ++++++++++++++++--- packages/bundler-plugin-core/src/utils.ts | 33 ++++++++++------- .../fixtures/metadata-injection/setup.ts | 4 +-- 6 files changed, 69 insertions(+), 30 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 3831fa8caddb..8799f1d8f1e7 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -29,7 +29,7 @@ import { logger } from "@sentry/utils"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; componentNameAnnotatePlugin?: () => UnpluginOptions; - moduleMetadataInjectionPlugin?: (injectionCode: string) => UnpluginOptions; + moduleMetadataInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; @@ -96,6 +96,13 @@ export function sentryUnpluginFactory({ const options = normalizeUserOptions(userOptions); + // TODO(v3): Remove this warning + if (userOptions._experiments?.moduleMetadata) { + logger.warn( + "The `_experiments.moduleMetadata` option has been promoted to being stable. You can safely move the option out of the `_experiments` object scope." + ); + } + if (unpluginMetaContext.watchMode || options.disable) { return [ { @@ -217,25 +224,23 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } - if (moduleMetadataInjectionPlugin && options._experiments.moduleMetadata) { - let metadata: object; - if (typeof options._experiments.moduleMetadata === "function") { + if (options.moduleMetadata) { + let metadata: Record; + if (typeof options.moduleMetadata === "function") { const args = { org: options.org, project: options.project, release: options.release.name, }; - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - metadata = options._experiments.moduleMetadata(args); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + metadata = options.moduleMetadata(args); } else { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - metadata = options._experiments.moduleMetadata; + metadata = options.moduleMetadata; } const injectionCode = generateModuleMetadataInjectorCode(metadata); plugins.push(moduleMetadataInjectionPlugin(injectionCode)); - } else if (options._experiments.moduleMetadata) { - logger.warn("'moduleMetadata' is currently only supported by '@sentry/webpack-plugin'"); } if (!options.release.name) { diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 32306c8dbcb9..ca25a3d8275b 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -29,6 +29,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, + moduleMetadata: userOptions.moduleMetadata || userOptions._experiments?.moduleMetadata, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index d011b13cfd10..61620e9b4d0b 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -70,7 +70,7 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund ); } - hub.setTag("module-metadata", !!options._experiments.moduleMetadata); + hub.setTag("module-metadata", !!options.moduleMetadata); hub.setTag("inject-build-information", !!options._experiments.injectBuildInformation); // Optional release pipeline steps diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 6419c0747689..6aae67713bbf 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -297,11 +297,27 @@ export interface Options { enabled?: boolean; }; + /** + * Metadata that should be associated with the built application. + * + * The metadata is serialized and can be looked up at runtime from within the SDK (for example in the `beforeSend`, + * event processors, or the transport), allowing for custom event filtering logic or routing of events. + * + * Metadata can either be passed directly or alternatively a callback can be provided that will be + * called with the following parameters: + * - `org`: The organization slug. + * - `project`: The project slug. + * - `release`: The release name. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + moduleMetadata?: ModuleMetadata | ModuleMetadataCallback; + /** * Options that are considered experimental and subject to change. * * @experimental API that does not follow semantic versioning and may change in any release */ + // TODO(v3): Remove these _experiments?: { /** * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. @@ -312,18 +328,23 @@ export interface Options { injectBuildInformation?: boolean; /** - * Metadata associated with this module. + * NOTE: This option has been promoted to stable. * - * The metadata is serialized and can be looked up at runtime by filename. + * Metadata that should be associated with the built application. + * + * The metadata is serialized and can be looked up at runtime from within the SDK (for example in the `beforeSend`, + * event processors, or the transport), allowing for custom event filtering logic or routing of events. * * Metadata can either be passed directly or alternatively a callback can be provided that will be - * called with the following arguments: + * called with the following parameters: * - `org`: The organization slug. * - `project`: The project slug. * - `release`: The release name. + * + * @deprecated Use the non-experimental `moduleMetadata` option instead. (Basically just move this option out of `_experiments`) */ // eslint-disable-next-line @typescript-eslint/no-explicit-any - moduleMetadata?: any | ModuleMetadataCallback; + moduleMetadata?: ModuleMetadata | ModuleMetadataCallback; }; /** @@ -340,13 +361,18 @@ export interface Options { }; } +export interface ModuleMetadata { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [key: string]: any; +} + export interface ModuleMetadataCallbackArgs { org?: string; project?: string; release?: string; } -export type ModuleMetadataCallback = (args: ModuleMetadataCallbackArgs) => object; +export type ModuleMetadataCallback = (args: ModuleMetadataCallbackArgs) => ModuleMetadata; export type IncludeEntry = { /** diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 1fbe108365a1..97f6f97f9a16 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -280,18 +280,27 @@ export function generateGlobalInjectorCode({ export function generateModuleMetadataInjectorCode(metadata: any) { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - return ` - var _global2 = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global2._sentryModuleMetadata = _global2._sentryModuleMetadata || {}; - _global2._sentryModuleMetadata[new Error().stack] = ${JSON.stringify(metadata)};`; + // We are merging the metadata objects in case modules are bundled twice with the plugin + return `{ + var _sentryModuleMetadataGlobal = + typeof window !== "undefined" + ? window + : typeof global !== "undefined" + ? global + : typeof self !== "undefined" + ? self + : {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata = + _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata[new Error().stack] = + Object.assign( + {}, + _sentryModuleMetadataGlobal._sentryModuleMetadata[new Error().stack], + ${JSON.stringify(metadata)} + ); +}`; } function getBuildInformation() { diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts index 23e3822c756a..6f7c31d16c99 100644 --- a/packages/integration-tests/fixtures/metadata-injection/setup.ts +++ b/packages/integration-tests/fixtures/metadata-injection/setup.ts @@ -9,9 +9,7 @@ createCjsBundles( }, outputDir, { - _experiments: { - moduleMetadata: { team: "frontend" }, - }, + moduleMetadata: { team: "frontend" }, }, ["webpack4", "webpack5", "esbuild", "rollup", "vite"] ); From 45c7f1c816c7fb5fbff86a8516e22341cb4dd8ce Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 31 May 2024 14:47:05 +0200 Subject: [PATCH 358/640] feat: Allow passing of meta-framework as telemetry data (#539) --- packages/bundler-plugin-core/src/options-mapping.ts | 5 +++++ packages/bundler-plugin-core/src/sentry/telemetry.ts | 2 ++ packages/bundler-plugin-core/src/types.ts | 10 ++++++++++ .../bundler-plugin-core/test/option-mappings.test.ts | 10 ++++++++++ 4 files changed, 27 insertions(+) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ca25a3d8275b..86f4e3c449c9 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -29,6 +29,11 @@ export function normalizeUserOptions(userOptions: UserOptions) { }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, + _metaOptions: { + telemetry: { + metaFramework: userOptions._metaOptions?.telemetry?.metaFramework, + }, + }, moduleMetadata: userOptions.moduleMetadata || userOptions._experiments?.moduleMetadata, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 61620e9b4d0b..d26664c8d94b 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -95,6 +95,8 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund hub.setTag("node", process.version); hub.setTag("platform", process.platform); + hub.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none"); + hub.setTags({ organization: org, project, diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 6aae67713bbf..05cc6f889385 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -358,6 +358,16 @@ export interface Options { * Example value: `[sentry-webpack-plugin (client)]` */ loggerPrefixOverride?: string; + + /** + * Arbitrary telemetry items. + */ + telemetry?: { + /** + * The meta framework using the plugin. + */ + metaFramework?: string; + }; }; } diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index d9386cbb793a..549075711086 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -27,6 +27,11 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, _experiments: {}, + _metaOptions: { + telemetry: { + metaFramework: undefined, + }, + }, url: "https://sentry.io", }); }); @@ -73,6 +78,11 @@ describe("normalizeUserOptions()", () => { silent: false, telemetry: true, _experiments: {}, + _metaOptions: { + telemetry: { + metaFramework: undefined, + }, + }, url: "https://sentry.io", }); }); From 450f2a98f004a3b31090b378bfea7ff191b3f57b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 3 Jun 2024 09:59:10 +0200 Subject: [PATCH 359/640] feat: Add `applicationKey` option to identify application code from within the SDK (#540) --- packages/bundler-plugin-core/src/index.ts | 19 ++++++++-- .../src/options-mapping.ts | 1 + packages/bundler-plugin-core/src/types.ts | 6 +++ .../application-key-injection/input/bundle.js | 3 ++ .../metadata-injection.test.ts | 38 +++++++++++++++++++ .../application-key-injection/setup.ts | 15 ++++++++ 6 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 packages/integration-tests/fixtures/application-key-injection/input/bundle.js create mode 100644 packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts create mode 100644 packages/integration-tests/fixtures/application-key-injection/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 8799f1d8f1e7..a04b03fa0970 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -224,8 +224,19 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } - if (options.moduleMetadata) { - let metadata: Record; + if (options.moduleMetadata || options.applicationKey) { + let metadata: Record = {}; + + if (options.applicationKey) { + // We use different keys so that if user-code receives multiple bundling passes, we will store the application keys of all the passes. + // It is a bit unfortunate that we have to inject the metadata snippet at the top, because after multiple + // injections, the first injection will always "win" because it comes last in the code. We would generally be + // fine with making the last bundling pass win. But because it cannot win, we have to use a workaround of storing + // the app keys in different object keys. + // We can simply use the `_sentryBundlerPluginAppKey:` to filter for app keys in the SDK. + metadata[`_sentryBundlerPluginAppKey:${options.applicationKey}`] = true; + } + if (typeof options.moduleMetadata === "function") { const args = { org: options.org, @@ -233,10 +244,10 @@ export function sentryUnpluginFactory({ release: options.release.name, }; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - metadata = options.moduleMetadata(args); + metadata = { ...metadata, ...options.moduleMetadata(args) }; } else { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - metadata = options.moduleMetadata; + metadata = { ...metadata, ...options.moduleMetadata }; } const injectionCode = generateModuleMetadataInjectorCode(metadata); diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 86f4e3c449c9..3a141378526d 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -34,6 +34,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { metaFramework: userOptions._metaOptions?.telemetry?.metaFramework, }, }, + applicationKey: userOptions.applicationKey, moduleMetadata: userOptions.moduleMetadata || userOptions._experiments?.moduleMetadata, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 05cc6f889385..3cac126db6b7 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -312,6 +312,12 @@ export interface Options { // eslint-disable-next-line @typescript-eslint/no-explicit-any moduleMetadata?: ModuleMetadata | ModuleMetadataCallback; + /** + * A key which will embedded in all the bundled files. The SDK will be able to use the key to apply filtering + * rules, for example using the `thirdPartyErrorFilterIntegration`. + */ + applicationKey?: string; + /** * Options that are considered experimental and subject to change. * diff --git a/packages/integration-tests/fixtures/application-key-injection/input/bundle.js b/packages/integration-tests/fixtures/application-key-injection/input/bundle.js new file mode 100644 index 000000000000..bf1389636d9e --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-injection/input/bundle.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryModuleMetadata)); 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 new file mode 100644 index 000000000000..85fc09dee743 --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts @@ -0,0 +1,38 @@ +/* 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"; + +function checkBundle(bundlePath: string): void { + const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + + const map = JSON.parse(output) as Record; + + // There should be only one key in the map + expect(Object.values(map)).toHaveLength(1); + // The value should be the expected metadata + expect(Object.values(map)).toEqual([{ ["_sentryBundlerPluginAppKey:my-app"]: true }]); +} + +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("esbuild bundle", () => { + checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); + }); + + test("rollup bundle", () => { + checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); + }); + + test("vite bundle", () => { + checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); + }); +}); diff --git a/packages/integration-tests/fixtures/application-key-injection/setup.ts b/packages/integration-tests/fixtures/application-key-injection/setup.ts new file mode 100644 index 000000000000..a745efa23e53 --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-injection/setup.ts @@ -0,0 +1,15 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + applicationKey: "my-app", + }, + ["webpack4", "webpack5", "esbuild", "rollup", "vite"] +); From 07f54b262a287a678ae2e0d90fede770dca2b978 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 3 Jun 2024 11:07:47 +0200 Subject: [PATCH 360/640] fix(esbuild): Invert warning about `bundle: true` (#542) Co-authored-by: Francesco Novy --- packages/esbuild-plugin/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 37f68e350ccc..598b57eb3d11 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -51,9 +51,9 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { esbuild: { setup({ initialOptions, onLoad, onResolve }) { - if (initialOptions.bundle) { + if (!initialOptions.bundle) { logger.warn( - "Esbuild's `bundle: true` option is currently not supported! Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps with the `bundle` option, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" + "The Sentry esbuild plugin only supports esbuild with `bundle: true` being set in the esbuild build options. Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps without `bundle: true`, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" ); } From a1361335660aa673b875a3d98bf084941b61845d Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Mon, 3 Jun 2024 05:33:13 -0400 Subject: [PATCH 361/640] docs(component-annotate): Remove beta note (#541) --- packages/babel-plugin-component-annotate/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/babel-plugin-component-annotate/README.md b/packages/babel-plugin-component-annotate/README.md index a062dd602809..7d0799341014 100644 --- a/packages/babel-plugin-component-annotate/README.md +++ b/packages/babel-plugin-component-annotate/README.md @@ -4,14 +4,12 @@

-# Sentry Babel Component Annotate Plugin (Beta) +# Sentry Babel Component Annotate Plugin [![npm version](https://img.shields.io/npm/v/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) [![npm dm](https://img.shields.io/npm/dm/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) [![npm dt](https://img.shields.io/npm/dt/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@babel-plugin-component-annotate) -This plugin is currently in beta. Please help us improve by [reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript-bundler-plugins/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). - A Babel plugin that automatically annotates your output DOM with their respective frontend component names. This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. Please note that your Sentry JavaScript SDK version must be at least `7.91.0` to take advantage of these features. From f313aa4e7141488b1465bc4ae2a05671bbc34212 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 3 Jun 2024 11:37:34 +0200 Subject: [PATCH 362/640] docs: Add README entries for `moduleMetadata` and `applicationKey` --- .../dev-utils/src/generate-documentation-table.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 1c9bbf637894..1606e5103191 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -355,6 +355,18 @@ type IncludeEntry = { }, ], }, + { + name: "moduleMetadata", + type: "Record | (args: { org?: string; project?: string; release?: string; }) => Record", + fullDescription: + "Metadata that should be associated with the built application.\n\nThe metadata is serialized and can be looked up at runtime from within the SDK (for example in the `beforeSend`, event processors, or the transport), allowing for custom event filtering logic or routing of events.\n\nMetadata can either be passed directly or alternatively a callback can be provided that will be called with the following parameters:\n\n- `org`: The organization slug.\n- `project`: The project slug.\n- `release`: The release name.", + }, + { + name: "applicationKey", + type: "string", + fullDescription: + "A key which will embedded in all the bundled files. The SDK will be able to use the key to apply filtering rules, for example using the `thirdPartyErrorFilterIntegration`.", + }, { name: "_experiments", type: "string", From fcec19fc9c9926b41ddcb6ca9ecc409c7823dd34 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 4 Jun 2024 09:46:35 +0200 Subject: [PATCH 363/640] meta: Update changelog for 2.18.0 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4229b2776240..8e75f33a9601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.18.0 + +- feat: Add `applicationKey` option to identify application code from within the SDK (#540) +- feat: Allow passing of meta-framework as telemetry data (#539) +- feat: Promote experimental `moduleMetadata` option to stable (#538) +- fix(esbuild): Invert warning about `bundle: true` (#542) + ## 2.17.0 - feat: Deprecate and noop `cleanArtifacts` (#525) From b45ac683bceb383ed00dcd5d877f643fded6c790 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 4 Jun 2024 07:47:55 +0000 Subject: [PATCH 364/640] release: 2.18.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 24b225288307..ad9f347ae0be 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.17.0", + "version": "2.18.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 715837fa31c9..65773158b5f7 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.17.0", + "version": "2.18.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 712ce1ee1116..b1dd7f540b9d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.17.0", + "version": "2.18.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.17.0", + "@sentry/babel-plugin-component-annotate": "2.18.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index e6904e9dce76..d9516b386919 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 389453798eaf..8c19981312b5 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.17.0", - "@sentry/rollup-plugin": "2.17.0", - "@sentry/vite-plugin": "2.17.0", - "@sentry/webpack-plugin": "2.17.0", + "@sentry/esbuild-plugin": "2.18.0", + "@sentry/rollup-plugin": "2.18.0", + "@sentry/vite-plugin": "2.18.0", + "@sentry/webpack-plugin": "2.18.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 95d64403cd90..39cf36d4002d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.17.0", + "version": "2.18.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/bundler-plugin-core": "2.18.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index ef78e7e0fe3e..f830ecd8fd64 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 824a4d716809..d75cd19626fa 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", - "@sentry/bundler-plugin-core": "2.17.0", - "@sentry/esbuild-plugin": "2.17.0", - "@sentry/rollup-plugin": "2.17.0", - "@sentry/vite-plugin": "2.17.0", - "@sentry/webpack-plugin": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/esbuild-plugin": "2.18.0", + "@sentry/rollup-plugin": "2.18.0", + "@sentry/vite-plugin": "2.18.0", + "@sentry/webpack-plugin": "2.18.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 05604696c4aa..75e01af88856 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/bundler-plugin-core": "2.18.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 0c7888826b59..fbbe8b602b97 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.17.0", + "version": "2.18.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/bundler-plugin-core": "2.18.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 321aa64dc532..bf529c2843ee 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.17.0", + "version": "2.18.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index d16705a355ba..4ebb8b8b47d7 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.17.0", + "version": "2.18.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/bundler-plugin-core": "2.18.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 7660b310c1b5..dffcf6b19189 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.17.0", + "version": "2.18.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.17.0", + "@sentry/bundler-plugin-core": "2.18.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.17.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.17.0", + "@sentry-internal/eslint-config": "2.18.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6244ac95693fe40cb56bdd2c8cad8a9acea6ab38 Mon Sep 17 00:00:00 2001 From: Deniz Date: Mon, 10 Jun 2024 11:01:49 +0300 Subject: [PATCH 365/640] fix(vite): Fix environment variable loading issue for Windows (#545) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/index.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a04b03fa0970..5680103ad734 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -85,7 +85,11 @@ export function sentryUnpluginFactory({ ); // NOTE: Do not use the dotenv.config API directly to read the dotenv file! For some ungodly reason, it falls back to reading `${process.cwd()}/.env` which is absolutely not what we want. const dotenvResult = dotenv.parse(dotenvFile); - process.env = { ...process.env, ...dotenvResult }; + + // Vite has a bug/behaviour where spreading into process.env will cause it to crash + // https://github.com/vitest-dev/vitest/issues/1870#issuecomment-1501140251 + Object.assign(process.env, dotenvResult); + logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); } catch (e: unknown) { // Ignore "file not found" errors but throw all others From 645653697aefe408e9125f23c01693ab6c3038cc Mon Sep 17 00:00:00 2001 From: mateusz-daniluk-xtb Date: Mon, 17 Jun 2024 12:09:38 +0200 Subject: [PATCH 366/640] feat: Don't use word "error" in log message about telemetry (#548) --- packages/bundler-plugin-core/src/plugins/telemetry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts index 68f3b0bf3a08..7f2a7ebf10f8 100644 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -21,7 +21,7 @@ export function telemetryPlugin({ async buildStart() { if (await shouldSendTelemetry) { logger.info( - "Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`." + "Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`." ); sentryHub.startTransaction({ name: "Sentry Bundler Plugin execution" }).finish(); await safeFlushTelemetry(sentryClient); From 4534093f74028362745febd9de9392ffa067f68f Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 19 Jun 2024 15:28:22 +0200 Subject: [PATCH 367/640] fix: Always delete files when `sourcemaps.filesToDeleteAfterUpload` is set (#547) --- .../src/debug-id-upload.ts | 35 ++------------- packages/bundler-plugin-core/src/index.ts | 43 +++++++++++++++++-- .../src/plugins/release-management.ts | 4 ++ .../src/plugins/sourcemap-deletion.ts | 30 +++++++++++++ .../after-upload-deletion.test.ts | 27 ++++++++++++ .../after-upload-deletion/input/bundle.js | 2 + .../fixtures/after-upload-deletion/setup.ts | 19 ++++++++ .../utils/create-cjs-bundles.ts | 5 +++ 8 files changed, 130 insertions(+), 35 deletions(-) create mode 100644 packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts create mode 100644 packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts create mode 100644 packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js create mode 100644 packages/integration-tests/fixtures/after-upload-deletion/setup.ts diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 1e7b4822c8d2..9f38a37144be 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -24,7 +24,7 @@ interface DebugIdUploadPluginOptions { handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; - filesToDeleteAfterUpload?: string | string[]; + deleteFilesUpForDeletion: () => Promise; sentryCliOptions: { url: string; authToken: string; @@ -47,7 +47,7 @@ export function createDebugIdUploadFunction({ sentryClient, sentryCliOptions, rewriteSourcesHook, - filesToDeleteAfterUpload, + deleteFilesUpForDeletion, }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { const artifactBundleUploadTransaction = sentryHub.startTransaction({ @@ -180,36 +180,7 @@ export function createDebugIdUploadFunction({ logger.info("Successfully uploaded source maps to Sentry"); } - if (filesToDeleteAfterUpload) { - const deleteGlobSpan = artifactBundleUploadTransaction.startChild({ - description: "delete-glob", - }); - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); - deleteGlobSpan.finish(); - - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); - - const deleteSpan = artifactBundleUploadTransaction.startChild({ - description: "delete-files-after-upload", - }); - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occured while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); - deleteSpan.finish(); - } + await deleteFilesUpForDeletion(); } catch (e) { sentryHub.withScope((scope) => { scope.setSpan(artifactBundleUploadTransaction); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 5680103ad734..2780524c6f88 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -25,6 +25,7 @@ import { import * as dotenv from "dotenv"; import { glob } from "glob"; import { logger } from "@sentry/utils"; +import { fileDeletionPlugin } from "./plugins/sourcemap-deletion"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; @@ -184,6 +185,34 @@ export function sentryUnpluginFactory({ }) ); + async function deleteFilesUpForDeletion() { + const filesToDeleteAfterUpload = + options.sourcemaps?.filesToDeleteAfterUpload ?? options.sourcemaps?.deleteFilesAfterUpload; + + if (filesToDeleteAfterUpload) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } + } + if (options.bundleSizeOptimizations) { const { bundleSizeOptimizations } = options; const replacementValues: SentrySDKBuildFlags = {}; @@ -297,12 +326,22 @@ export function sentryUnpluginFactory({ vcsRemote: options.release.vcsRemote, headers: options.headers, }, + deleteFilesUpForDeletion, }) ); } plugins.push(debugIdInjectionPlugin(logger)); + plugins.push( + fileDeletionPlugin({ + deleteFilesUpForDeletion, + handleRecoverableError, + sentryHub, + sentryClient, + }) + ); + if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" @@ -321,9 +360,7 @@ export function sentryUnpluginFactory({ createDebugIdUploadFunction({ assets: options.sourcemaps?.assets, ignore: options.sourcemaps?.ignore, - filesToDeleteAfterUpload: - options.sourcemaps?.filesToDeleteAfterUpload ?? - options.sourcemaps?.deleteFilesAfterUpload, + deleteFilesUpForDeletion, dist: options.release.dist, releaseName: options.release.name, logger: logger, diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index dd905acbd988..acf7387073ea 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -27,6 +27,7 @@ interface ReleaseManagementPluginOptions { silent: boolean; headers?: Record; }; + deleteFilesUpForDeletion: () => Promise; } export function releaseManagementPlugin({ @@ -41,6 +42,7 @@ export function releaseManagementPlugin({ sentryHub, sentryClient, sentryCliOptions, + deleteFilesUpForDeletion, }: ReleaseManagementPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", @@ -83,6 +85,8 @@ export function releaseManagementPlugin({ if (deployOptions) { await cliInstance.releases.newDeploy(releaseName, deployOptions); } + + await deleteFilesUpForDeletion(); } catch (e) { sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook'); await safeFlushTelemetry(sentryClient); diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts new file mode 100644 index 000000000000..032deadef1ac --- /dev/null +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -0,0 +1,30 @@ +import { Hub, NodeClient } from "@sentry/node"; +import { UnpluginOptions } from "unplugin"; +import { safeFlushTelemetry } from "../sentry/telemetry"; + +interface FileDeletionPlugin { + handleRecoverableError: (error: unknown) => void; + deleteFilesUpForDeletion: () => Promise; + sentryHub: Hub; + sentryClient: NodeClient; +} + +export function fileDeletionPlugin({ + handleRecoverableError, + sentryHub, + sentryClient, + deleteFilesUpForDeletion, +}: FileDeletionPlugin): UnpluginOptions { + return { + name: "sentry-file-deletion-plugin", + async writeBundle() { + try { + await deleteFilesUpForDeletion(); + } catch (e) { + sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e); + } + }, + }; +} 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 new file mode 100644 index 000000000000..cf0955025f12 --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts @@ -0,0 +1,27 @@ +/* eslint-disable jest/no-standalone-expect */ +/* eslint-disable jest/expect-expect */ +import path from "path"; +import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +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("esbuild bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "esbuild", "bundle.js.map"))).toBe(false); + }); + + test("rollup bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "rollup", "bundle.js.map"))).toBe(false); + }); + + test("vite bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "vite", "bundle.js.map"))).toBe(false); + }); +}); diff --git a/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js b/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js new file mode 100644 index 000000000000..aa70f660a1fc --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("whatever"); diff --git a/packages/integration-tests/fixtures/after-upload-deletion/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion/setup.ts new file mode 100644 index 000000000000..e28f10b98b1e --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion/setup.ts @@ -0,0 +1,19 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +["webpack4", "webpack5", "esbuild", "rollup", "vite"].forEach((bundler) => { + createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + sourcemaps: { + filesToDeleteAfterUpload: [path.join(__dirname, "out", bundler, "bundle.js.map")], + }, + }, + [bundler] + ); +}); diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 1569b3ea9d28..a03916cf4b41 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -23,6 +23,7 @@ export function createCjsBundles( void vite.build({ clearScreen: false, build: { + sourcemap: true, outDir: path.join(outFolder, "vite"), rollupOptions: { input: entrypoints, @@ -43,6 +44,7 @@ export function createCjsBundles( }) .then((bundle) => bundle.write({ + sourcemap: true, dir: path.join(outFolder, "rollup"), format: "cjs", exports: "named", @@ -52,6 +54,7 @@ export function createCjsBundles( if (plugins.length === 0 || plugins.includes("esbuild")) { void esbuild.build({ + sourcemap: true, entryPoints: entrypoints, outdir: path.join(outFolder, "esbuild"), plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], @@ -65,6 +68,7 @@ export function createCjsBundles( if (parseInt(nodejsMajorversion) < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { webpack4( { + devtool: "source-map", mode: "production", entry: entrypoints, cache: false, @@ -86,6 +90,7 @@ export function createCjsBundles( if (plugins.length === 0 || plugins.includes("webpack5")) { webpack5( { + devtool: "source-map", cache: false, entry: entrypoints, output: { From a0230b92b1b3d78f8a6d8f314073283ca6a32997 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 19 Jun 2024 09:43:45 -0400 Subject: [PATCH 368/640] feat(core): Detect releases from more providers (#549) --- packages/bundler-plugin-core/src/utils.ts | 85 +++++++++++++++++++---- 1 file changed, 71 insertions(+), 14 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 97f6f97f9a16..18860e2ad8c5 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -209,19 +209,61 @@ function gitRevision(): string | undefined { * Tries to guess a release name based on environmental data. */ export function determineReleaseName(): string | undefined { - return ( + // This list is in approximate alpha order, separated into 3 categories: + // 1. Git providers + // 2. CI providers with specific environment variables (has the provider name in the variable name) + // 3. CI providers with generic environment variables (checked for last to prevent possible false positives) + + const possibleReleaseNameOfGitProvider = // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables process.env["GITHUB_SHA"] || - // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata - process.env["COMMIT_REF"] || - // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables - process.env["CF_PAGES_COMMIT_SHA"] || + // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html + process.env["CI_MERGE_REQUEST_SOURCE_BRANCH_SHA"] || + process.env["CI_BUILD_REF"] || + process.env["CI_COMMIT_SHA"] || + // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/ + process.env["BITBUCKET_COMMIT"]; + + const possibleReleaseNameOfCiProvidersWithSpecificEnvVar = + // AppVeyor - https://www.appveyor.com/docs/environment-variables/ + process.env["APPVEYOR_PULL_REQUEST_HEAD_COMMIT"] || + process.env["APPVEYOR_REPO_COMMIT"] || // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] || - // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/ - process.env["BITBUCKET_COMMIT"] || - // CircleCI - https://circleci.com/docs/2.0/env-vars/ + // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html + process.env["AWS_COMMIT_ID"] || + // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml + process.env["BUILD_SOURCEVERSION"] || + // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/ + process.env["GIT_CLONE_COMMIT_HASH"] || + // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables + process.env["BUDDY_EXECUTION_REVISION"] || + // Builtkite - https://buildkite.com/docs/pipelines/environment-variables + process.env["BUILDKITE_COMMIT"] || + // CircleCI - https://circleci.com/docs/variables/ process.env["CIRCLE_SHA1"] || + // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables + process.env["CIRRUS_CHANGE_IN_REPO"] || + // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/ + process.env["CF_REVISION"] || + // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/ + process.env["CM_COMMIT"] || + // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables + process.env["CF_PAGES_COMMIT_SHA"] || + // Drone - https://docs.drone.io/pipeline/environment/reference/ + process.env["DRONE_COMMIT_SHA"] || + // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables + process.env["FC_GIT_COMMIT_SHA"] || + // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci + process.env["HEROKU_TEST_RUN_COMMIT_VERSION"] || + // Heroku #2 https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases + process.env["HEROKU_SLUG_COMMIT"] || + // Render - https://render.com/docs/environment-variables + process.env["RENDER_GIT_COMMIT"] || + // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables + process.env["SEMAPHORE_GIT_SHA"] || + // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables + process.env["TRAVIS_PULL_REQUEST_SHA"] || // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables process.env["VERCEL_GIT_COMMIT_SHA"] || process.env["VERCEL_GITHUB_COMMIT_SHA"] || @@ -230,13 +272,28 @@ export function determineReleaseName(): string | undefined { // Zeit (now known as Vercel) process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || - process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || - // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables - process.env["FC_GIT_COMMIT_SHA"] || - // Heroku #1 https://devcenter.heroku.com/changelog-items/630 + process.env["ZEIT_BITBUCKET_COMMIT_SHA"]; + + const possibleReleaseNameOfCiProvidersWithGenericEnvVar = + // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables + process.env["CI_COMMIT_ID"] || + // Coolify - https://coolify.io/docs/knowledge-base/environment-variables + process.env["SOURCE_COMMIT"] || + // Heroku #3 https://devcenter.heroku.com/changelog-items/630 process.env["SOURCE_VERSION"] || - // Heroku #2 https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases - process.env["HEROKU_SLUG_COMMIT"] || + // Jenkins - https://plugins.jenkins.io/git/#environment-variables + process.env["GIT_COMMIT"] || + // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata + process.env["COMMIT_REF"] || + // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html + process.env["BUILD_VCS_NUMBER"] || + // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment + process.env["CI_COMMIT_SHA"]; + + return ( + possibleReleaseNameOfGitProvider || + possibleReleaseNameOfCiProvidersWithSpecificEnvVar || + possibleReleaseNameOfCiProvidersWithGenericEnvVar || gitRevision() ); } From b80f74258954fc4a3d62ae332efd1e544d69e244 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 19 Jun 2024 15:46:24 +0200 Subject: [PATCH 369/640] meta: Update changelog for 2.19.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e75f33a9601..13d540337855 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.19.0 + +- feat: Don't use word "error" in log message about telemetry (#548) +- feat(core): Detect releases from more providers (#549) +- fix: Always delete files when `sourcemaps.filesToDeleteAfterUpload` is set (#547) +- fix(vite): Fix environment variable loading issue for Windows (#545) + +Work in this release contributed by @Rassilion, and @mateusz-daniluk-xtb. Thank you for your contributions! + ## 2.18.0 - feat: Add `applicationKey` option to identify application code from within the SDK (#540) From 50bf988312fca242d950a2ef69e960402de202b6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 19 Jun 2024 13:47:42 +0000 Subject: [PATCH 370/640] release: 2.19.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index ad9f347ae0be..b52778df78c8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.18.0", + "version": "2.19.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 65773158b5f7..6703f9fdae54 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.18.0", + "version": "2.19.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b1dd7f540b9d..321040838e2e 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.18.0", + "version": "2.19.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.18.0", + "@sentry/babel-plugin-component-annotate": "2.19.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index d9516b386919..c420f9cbd374 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 8c19981312b5..bb2d2eb3d2c3 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.18.0", - "@sentry/rollup-plugin": "2.18.0", - "@sentry/vite-plugin": "2.18.0", - "@sentry/webpack-plugin": "2.18.0", + "@sentry/esbuild-plugin": "2.19.0", + "@sentry/rollup-plugin": "2.19.0", + "@sentry/vite-plugin": "2.19.0", + "@sentry/webpack-plugin": "2.19.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 39cf36d4002d..c5ba6503e09e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.18.0", + "version": "2.19.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/bundler-plugin-core": "2.19.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index f830ecd8fd64..d63e1d37811f 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index d75cd19626fa..3a97794e9262 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", - "@sentry/bundler-plugin-core": "2.18.0", - "@sentry/esbuild-plugin": "2.18.0", - "@sentry/rollup-plugin": "2.18.0", - "@sentry/vite-plugin": "2.18.0", - "@sentry/webpack-plugin": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/esbuild-plugin": "2.19.0", + "@sentry/rollup-plugin": "2.19.0", + "@sentry/vite-plugin": "2.19.0", + "@sentry/webpack-plugin": "2.19.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 75e01af88856..e819536a3b10 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/bundler-plugin-core": "2.19.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index fbbe8b602b97..e719017b71ef 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.18.0", + "version": "2.19.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/bundler-plugin-core": "2.19.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index bf529c2843ee..6e3860c69838 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.18.0", + "version": "2.19.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 4ebb8b8b47d7..a3f3f72867d6 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.18.0", + "version": "2.19.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/bundler-plugin-core": "2.19.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index dffcf6b19189..6d7cb1973d98 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.18.0", + "version": "2.19.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.18.0", + "@sentry/bundler-plugin-core": "2.19.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.18.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.18.0", + "@sentry-internal/eslint-config": "2.19.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 604077b6aac0480aee5ca4d29a7638d08e2f7b57 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Jun 2024 10:08:21 +0200 Subject: [PATCH 371/640] feat: Export esbuild plugin as default (#555) --- packages/esbuild-plugin/src/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 598b57eb3d11..08cc17c471bb 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -267,5 +267,8 @@ const sentryUnplugin = sentryUnpluginFactory({ // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryEsbuildPlugin: (options?: Options) => any = sentryUnplugin.esbuild; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export default sentryUnplugin.esbuild as (options?: Options) => any; + export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; From 9982c89c1805edfe699b081163c10b561aacb203 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Jun 2024 10:10:05 +0200 Subject: [PATCH 372/640] meta: Update changelog for 2.20.0 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13d540337855..b990b7cf7d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.20.0 + +- feat: Export esbuild plugin as default (#555) + ## 2.19.0 - feat: Don't use word "error" in log message about telemetry (#548) From 3d3da7a2e1258dd3c30bda76076e3bafb28947b2 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 24 Jun 2024 08:11:30 +0000 Subject: [PATCH 373/640] release: 2.20.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index b52778df78c8..f7d4cdaaf40a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.19.0", + "version": "2.20.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 6703f9fdae54..af23b5987cbe 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.19.0", + "version": "2.20.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 321040838e2e..df3753cf0a66 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.19.0", + "version": "2.20.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.19.0", + "@sentry/babel-plugin-component-annotate": "2.20.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c420f9cbd374..1eb1275f7d44 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index bb2d2eb3d2c3..16698b670214 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.19.0", - "@sentry/rollup-plugin": "2.19.0", - "@sentry/vite-plugin": "2.19.0", - "@sentry/webpack-plugin": "2.19.0", + "@sentry/esbuild-plugin": "2.20.0", + "@sentry/rollup-plugin": "2.20.0", + "@sentry/vite-plugin": "2.20.0", + "@sentry/webpack-plugin": "2.20.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index c5ba6503e09e..1c1f45c33af0 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.19.0", + "version": "2.20.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/bundler-plugin-core": "2.20.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index d63e1d37811f..043ba697375d 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3a97794e9262..305019e5965c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", - "@sentry/bundler-plugin-core": "2.19.0", - "@sentry/esbuild-plugin": "2.19.0", - "@sentry/rollup-plugin": "2.19.0", - "@sentry/vite-plugin": "2.19.0", - "@sentry/webpack-plugin": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/esbuild-plugin": "2.20.0", + "@sentry/rollup-plugin": "2.20.0", + "@sentry/vite-plugin": "2.20.0", + "@sentry/webpack-plugin": "2.20.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index e819536a3b10..02a0f8bbc956 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/bundler-plugin-core": "2.20.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e719017b71ef..6d13fb1a0278 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.19.0", + "version": "2.20.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/bundler-plugin-core": "2.20.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6e3860c69838..cf663554abd1 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.19.0", + "version": "2.20.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a3f3f72867d6..e03f149a0b51 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.19.0", + "version": "2.20.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/bundler-plugin-core": "2.20.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6d7cb1973d98..2cf9faedff7d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.19.0", + "version": "2.20.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.19.0", + "@sentry/bundler-plugin-core": "2.20.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.19.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.19.0", + "@sentry-internal/eslint-config": "2.20.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 75ca15ee53a31ab4bc476ef023f6f3888110e9bc Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 25 Jun 2024 11:26:33 +0200 Subject: [PATCH 374/640] fix: Wait for tasks depending on sourcemaps before deleting (#557) --- .../src/debug-id-upload.ts | 7 +- packages/bundler-plugin-core/src/index.ts | 88 ++++++++++++------- .../src/plugins/release-management.ts | 8 +- .../src/plugins/sourcemap-deletion.ts | 40 ++++++++- 4 files changed, 98 insertions(+), 45 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 9f38a37144be..7ff8f226bb8c 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -24,7 +24,6 @@ interface DebugIdUploadPluginOptions { handleRecoverableError: (error: unknown) => void; sentryHub: Hub; sentryClient: NodeClient; - deleteFilesUpForDeletion: () => Promise; sentryCliOptions: { url: string; authToken: string; @@ -34,6 +33,7 @@ interface DebugIdUploadPluginOptions { silent: boolean; headers?: Record; }; + freeDependencyOnSourcemapFiles: () => void; } export function createDebugIdUploadFunction({ @@ -47,7 +47,7 @@ export function createDebugIdUploadFunction({ sentryClient, sentryCliOptions, rewriteSourcesHook, - deleteFilesUpForDeletion, + freeDependencyOnSourcemapFiles, }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { const artifactBundleUploadTransaction = sentryHub.startTransaction({ @@ -179,8 +179,6 @@ export function createDebugIdUploadFunction({ uploadSpan.finish(); logger.info("Successfully uploaded source maps to Sentry"); } - - await deleteFilesUpForDeletion(); } catch (e) { sentryHub.withScope((scope) => { scope.setSpan(artifactBundleUploadTransaction); @@ -196,6 +194,7 @@ export function createDebugIdUploadFunction({ cleanupSpan.finish(); } artifactBundleUploadTransaction.finish(); + freeDependencyOnSourcemapFiles(); await safeFlushTelemetry(sentryClient); } }; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 2780524c6f88..8f91ced2b52a 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -185,32 +185,46 @@ export function sentryUnpluginFactory({ }) ); - async function deleteFilesUpForDeletion() { - const filesToDeleteAfterUpload = - options.sourcemaps?.filesToDeleteAfterUpload ?? options.sourcemaps?.deleteFilesAfterUpload; - - if (filesToDeleteAfterUpload) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); + // We have multiple plugins depending on generated source map files. (debug ID upload, legacy upload) + // Additionally, we also want to have the functionality to delete files after uploading sourcemaps. + // All of these plugins and the delete functionality need to run in the same hook (`writeBundle`). + // Since the plugins among themselves are not aware of when they run and finish, we need a system to + // track their dependencies on the generated files, so that we can initiate the file deletion only after + // nothing depends on the files anymore. + const dependenciesOnSourcemapFiles = new Set(); + const sourcemapFileDependencySubscribers: (() => void)[] = []; + + function notifySourcemapFileDependencySubscribers() { + sourcemapFileDependencySubscribers.forEach((subscriber) => { + subscriber(); + }); + } + + function createDependencyOnSourcemapFiles() { + const dependencyIdentifier = Symbol(); + dependenciesOnSourcemapFiles.add(dependencyIdentifier); - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + return function freeDependencyOnSourcemapFiles() { + dependenciesOnSourcemapFiles.delete(dependencyIdentifier); + notifySourcemapFileDependencySubscribers(); + }; + } + + /** + * Returns a Promise that resolves when all the currently active dependencies are freed again. + */ + function waitUntilSourcemapFileDependenciesAreFreed() { + return new Promise((resolve) => { + sourcemapFileDependencySubscribers.push(() => { + if (dependenciesOnSourcemapFiles.size === 0) { + resolve(); + } }); - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); - } + if (dependenciesOnSourcemapFiles.size === 0) { + resolve(); + } + }); } if (options.bundleSizeOptimizations) { @@ -326,22 +340,13 @@ export function sentryUnpluginFactory({ vcsRemote: options.release.vcsRemote, headers: options.headers, }, - deleteFilesUpForDeletion, + freeDependencyOnSourcemapFiles: createDependencyOnSourcemapFiles(), }) ); } plugins.push(debugIdInjectionPlugin(logger)); - plugins.push( - fileDeletionPlugin({ - deleteFilesUpForDeletion, - handleRecoverableError, - sentryHub, - sentryClient, - }) - ); - if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" @@ -360,7 +365,7 @@ export function sentryUnpluginFactory({ createDebugIdUploadFunction({ assets: options.sourcemaps?.assets, ignore: options.sourcemaps?.ignore, - deleteFilesUpForDeletion, + freeDependencyOnSourcemapFiles: createDependencyOnSourcemapFiles(), dist: options.release.dist, releaseName: options.release.name, logger: logger, @@ -396,6 +401,21 @@ export function sentryUnpluginFactory({ } } + plugins.push( + fileDeletionPlugin({ + // It is very important that this is only called after all other dependencies have been created with `createDependencyOnSourcemapFiles`. + // Ideally, we always register this plugin last. + dependenciesAreFreedPromise: waitUntilSourcemapFileDependenciesAreFreed(), + filesToDeleteAfterUpload: + options.sourcemaps?.filesToDeleteAfterUpload ?? + options.sourcemaps?.deleteFilesAfterUpload, + logger, + handleRecoverableError, + sentryHub, + sentryClient, + }) + ); + return plugins; }); } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index acf7387073ea..d984cc4edbbc 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -27,7 +27,7 @@ interface ReleaseManagementPluginOptions { silent: boolean; headers?: Record; }; - deleteFilesUpForDeletion: () => Promise; + freeDependencyOnSourcemapFiles: () => void; } export function releaseManagementPlugin({ @@ -42,7 +42,7 @@ export function releaseManagementPlugin({ sentryHub, sentryClient, sentryCliOptions, - deleteFilesUpForDeletion, + freeDependencyOnSourcemapFiles, }: ReleaseManagementPluginOptions): UnpluginOptions { return { name: "sentry-debug-id-upload-plugin", @@ -85,12 +85,12 @@ export function releaseManagementPlugin({ if (deployOptions) { await cliInstance.releases.newDeploy(releaseName, deployOptions); } - - await deleteFilesUpForDeletion(); } catch (e) { sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook'); await safeFlushTelemetry(sentryClient); handleRecoverableError(e); + } finally { + freeDependencyOnSourcemapFiles(); } }, }; diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 032deadef1ac..53043df06732 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -1,25 +1,59 @@ import { Hub, NodeClient } from "@sentry/node"; +import { glob } from "glob"; import { UnpluginOptions } from "unplugin"; +import { Logger } from "../sentry/logger"; import { safeFlushTelemetry } from "../sentry/telemetry"; +import fs from "fs"; interface FileDeletionPlugin { handleRecoverableError: (error: unknown) => void; - deleteFilesUpForDeletion: () => Promise; + dependenciesAreFreedPromise: Promise; sentryHub: Hub; sentryClient: NodeClient; + filesToDeleteAfterUpload: string | string[] | undefined; + logger: Logger; } export function fileDeletionPlugin({ handleRecoverableError, sentryHub, sentryClient, - deleteFilesUpForDeletion, + filesToDeleteAfterUpload, + dependenciesAreFreedPromise, + logger, }: FileDeletionPlugin): UnpluginOptions { return { name: "sentry-file-deletion-plugin", async writeBundle() { try { - await deleteFilesUpForDeletion(); + if (filesToDeleteAfterUpload !== undefined) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); + + logger.debug( + "Waiting for dependencies on generated files to be freed before deleting..." + ); + + await dependenciesAreFreedPromise; + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } } catch (e) { sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); await safeFlushTelemetry(sentryClient); From 473e3718bf2fd9810e2d867bf942fd71808326f5 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 25 Jun 2024 13:15:23 +0200 Subject: [PATCH 375/640] feat(telemetry): Collect whether `applicationKey` is set (#559) --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index d26664c8d94b..7167bb2958c6 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -97,6 +97,8 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund hub.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none"); + hub.setTag("application-key-set", options.applicationKey !== undefined); + hub.setTags({ organization: org, project, From 0339fd68380d6d011748f7272833e97da013970e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 25 Jun 2024 13:18:29 +0200 Subject: [PATCH 376/640] meta: Update changelog for 2.20.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b990b7cf7d30..0296ca1883ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.20.1 + +- feat(telemetry): Collect whether applicationKey is set (#559) +- fix: Wait for tasks depending on sourcemaps before deleting (#557) + ## 2.20.0 - feat: Export esbuild plugin as default (#555) From efc8e2ee46ea42d334d84129d7509832bb20acf6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 25 Jun 2024 11:20:38 +0000 Subject: [PATCH 377/640] release: 2.20.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index f7d4cdaaf40a..2a45831e32d5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.20.0", + "version": "2.20.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index af23b5987cbe..29d43141b7cf 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.20.0", + "version": "2.20.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index df3753cf0a66..b62b437ccca5 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.20.0", + "version": "2.20.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.20.0", + "@sentry/babel-plugin-component-annotate": "2.20.1", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 1eb1275f7d44..67941f23df10 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 16698b670214..435babb6ab0d 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.20.0", - "@sentry/rollup-plugin": "2.20.0", - "@sentry/vite-plugin": "2.20.0", - "@sentry/webpack-plugin": "2.20.0", + "@sentry/esbuild-plugin": "2.20.1", + "@sentry/rollup-plugin": "2.20.1", + "@sentry/vite-plugin": "2.20.1", + "@sentry/webpack-plugin": "2.20.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1c1f45c33af0..9eb643593850 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.20.0", + "version": "2.20.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 043ba697375d..0bc3b3ff4288 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 305019e5965c..5e9e22796b90 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", - "@sentry/bundler-plugin-core": "2.20.0", - "@sentry/esbuild-plugin": "2.20.0", - "@sentry/rollup-plugin": "2.20.0", - "@sentry/vite-plugin": "2.20.0", - "@sentry/webpack-plugin": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/esbuild-plugin": "2.20.1", + "@sentry/rollup-plugin": "2.20.1", + "@sentry/vite-plugin": "2.20.1", + "@sentry/webpack-plugin": "2.20.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 02a0f8bbc956..dd8e6accce58 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 6d13fb1a0278..12d129a3523e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.20.0", + "version": "2.20.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index cf663554abd1..9dcec5482e8a 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.20.0", + "version": "2.20.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e03f149a0b51..509706e830a9 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.20.0", + "version": "2.20.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2cf9faedff7d..75f823d8238b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.20.0", + "version": "2.20.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.0", + "@sentry/bundler-plugin-core": "2.20.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.20.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.0", + "@sentry-internal/eslint-config": "2.20.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 9bb19f36d0c3260972f744563a2375b4c041c96b Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Tue, 25 Jun 2024 11:14:39 -0400 Subject: [PATCH 378/640] chore: Add contributors to README (#558) --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 6768f1148d85..584cb7298712 100644 --- a/README.md +++ b/README.md @@ -29,3 +29,11 @@ The Sentry Bundler Plugins take care of Sentry-related tasks at build time of yo - [Sentry Documentation](https://docs.sentry.io/quickstart/) - [Sentry Discord](https://discord.gg/Ww9hbqr) - [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) + +## Contributors + +Thanks to everyone who contributed to the Sentry JavaScript Bundler Plugins! + + + + From a7e69d354d64b0d75dda07d9d63b7ee334f7a105 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 27 Jun 2024 13:22:39 +0200 Subject: [PATCH 379/640] feat: Add option to disable sourcemaps (#561) --- packages/bundler-plugin-core/src/index.ts | 4 +++- packages/bundler-plugin-core/src/sentry/telemetry.ts | 1 + packages/bundler-plugin-core/src/types.ts | 7 +++++++ packages/dev-utils/src/generate-documentation-table.ts | 6 ++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 8f91ced2b52a..d7dc258550cb 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -301,7 +301,9 @@ export function sentryUnpluginFactory({ plugins.push(moduleMetadataInjectionPlugin(injectionCode)); } - if (!options.release.name) { + if (options.sourcemaps?.disable) { + logger.debug("Source map upload was disabled. Will not upload sourcemaps."); + } else if (!options.release.name) { logger.warn( "No release name provided. Will not create release. Please set the `release.name` option to identify your release." ); diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 7167bb2958c6..452f605cadf9 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -89,6 +89,7 @@ export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bund "delete-after-upload", !!sourcemaps?.deleteFilesAfterUpload || !!sourcemaps?.filesToDeleteAfterUpload ); + hub.setTag("sourcemaps-disabled", !!sourcemaps?.disable); hub.setTag("react-annotate", !!reactComponentAnnotation?.enabled); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 3cac126db6b7..b7799e08b2ca 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -90,6 +90,13 @@ export interface Options { * Options for source maps uploading. */ sourcemaps?: { + /** + * Disables all functionality related to sourcemaps. + * + * Defaults to `false`. + */ + disable?: boolean; + /** * A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry. * diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 1606e5103191..e79dc6390c42 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -102,6 +102,12 @@ errorHandler: (err) => { fullDescription: "A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", }, + { + name: "disable", + type: "boolean", + fullDescription: + "Disables all functionality related to sourcemaps.\n\nDefaults to `false`.", + }, ], }, From e26b875ea28ce0a48a7f64d26e70471f6ee768e0 Mon Sep 17 00:00:00 2001 From: Paris Outen Date: Wed, 10 Jul 2024 17:12:16 +0800 Subject: [PATCH 380/640] fix: Use `sequential` and `post` order for vite artifact deletion (#568) Co-authored-by: zhangrui11 --- .../src/plugins/sourcemap-deletion.ts | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 53043df06732..6ea38fb2ec8c 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -22,43 +22,49 @@ export function fileDeletionPlugin({ dependenciesAreFreedPromise, logger, }: FileDeletionPlugin): UnpluginOptions { - return { - name: "sentry-file-deletion-plugin", - async writeBundle() { - try { - if (filesToDeleteAfterUpload !== undefined) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); + const writeBundle = async () => { + try { + if (filesToDeleteAfterUpload !== undefined) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); - logger.debug( - "Waiting for dependencies on generated files to be freed before deleting..." - ); + logger.debug("Waiting for dependencies on generated files to be freed before deleting..."); - await dependenciesAreFreedPromise; + await dependenciesAreFreedPromise; - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); - } - } catch (e) { - sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); - await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); } + } catch (e) { + sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e); + } + }; + return { + name: "sentry-file-deletion-plugin", + vite: { + writeBundle: { + sequential: true, + order: "post", + handler: writeBundle, + }, }, + writeBundle, }; } From 5891db6e8d38452d45ad9cf83ec108675b983572 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 10 Jul 2024 13:15:31 +0200 Subject: [PATCH 381/640] meta: Update changelog for 2.21.0 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0296ca1883ff..538c9bcc5670 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.21.0 + +- fix: Use `sequential` and `post` order for vite artifact deletion (#568) +- feat: Add option to disable sourcemaps (#561) + +Work in this release contributed by @tyouzu1. Thank you for your contribution! + ## 2.20.1 - feat(telemetry): Collect whether applicationKey is set (#559) From 277064f898b11dc460b216f267a7275bfcbdcf17 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 10 Jul 2024 11:16:52 +0000 Subject: [PATCH 382/640] release: 2.21.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 2a45831e32d5..174ecb41e2df 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.20.1", + "version": "2.21.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 29d43141b7cf..a81ec6bb9b57 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.20.1", + "version": "2.21.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b62b437ccca5..b0c14aa2c389 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.20.1", + "version": "2.21.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.20.1", + "@sentry/babel-plugin-component-annotate": "2.21.0", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 67941f23df10..8600e5cbdd53 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 435babb6ab0d..51340e4f3ad5 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.20.1", - "@sentry/rollup-plugin": "2.20.1", - "@sentry/vite-plugin": "2.20.1", - "@sentry/webpack-plugin": "2.20.1", + "@sentry/esbuild-plugin": "2.21.0", + "@sentry/rollup-plugin": "2.21.0", + "@sentry/vite-plugin": "2.21.0", + "@sentry/webpack-plugin": "2.21.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 9eb643593850..a7e8389aa8af 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.20.1", + "version": "2.21.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/bundler-plugin-core": "2.21.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 0bc3b3ff4288..b23930313620 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5e9e22796b90..b212f2e95bb2 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", - "@sentry/bundler-plugin-core": "2.20.1", - "@sentry/esbuild-plugin": "2.20.1", - "@sentry/rollup-plugin": "2.20.1", - "@sentry/vite-plugin": "2.20.1", - "@sentry/webpack-plugin": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/esbuild-plugin": "2.21.0", + "@sentry/rollup-plugin": "2.21.0", + "@sentry/vite-plugin": "2.21.0", + "@sentry/webpack-plugin": "2.21.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index dd8e6accce58..bea3ee979295 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/bundler-plugin-core": "2.21.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 12d129a3523e..65e69ff008d1 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.20.1", + "version": "2.21.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/bundler-plugin-core": "2.21.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 9dcec5482e8a..c88dc59a1782 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.20.1", + "version": "2.21.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 509706e830a9..7da921a66e86 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.20.1", + "version": "2.21.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/bundler-plugin-core": "2.21.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 75f823d8238b..463e0b40e978 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.20.1", + "version": "2.21.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.20.1", + "@sentry/bundler-plugin-core": "2.21.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.20.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.20.1", + "@sentry-internal/eslint-config": "2.21.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From e66910d2e0d4d7d60da275daed523a9f5e9e88b6 Mon Sep 17 00:00:00 2001 From: Paris Outen Date: Fri, 12 Jul 2024 19:06:09 +0800 Subject: [PATCH 383/640] fix: Do not delete files before all upload tasks executed (#572) Co-authored-by: Luca Forstner --- .../src/debug-id-upload.ts | 13 +++- packages/bundler-plugin-core/src/index.ts | 11 +-- .../src/plugins/release-management.ts | 13 +++- .../src/plugins/sourcemap-deletion.ts | 74 +++++++++---------- 4 files changed, 60 insertions(+), 51 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 7ff8f226bb8c..22f4b6662092 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -33,7 +33,7 @@ interface DebugIdUploadPluginOptions { silent: boolean; headers?: Record; }; - freeDependencyOnSourcemapFiles: () => void; + createDependencyOnSourcemapFiles: () => () => void; } export function createDebugIdUploadFunction({ @@ -47,8 +47,10 @@ export function createDebugIdUploadFunction({ sentryClient, sentryCliOptions, rewriteSourcesHook, - freeDependencyOnSourcemapFiles, + createDependencyOnSourcemapFiles, }: DebugIdUploadPluginOptions) { + const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); + return async (buildArtifactPaths: string[]) => { const artifactBundleUploadTransaction = sentryHub.startTransaction({ name: "debug-id-sourcemap-upload", @@ -56,6 +58,10 @@ export function createDebugIdUploadFunction({ let folderToCleanUp: string | undefined; + // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) + // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. + const freeUploadDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); + try { const mkdtempSpan = artifactBundleUploadTransaction.startChild({ description: "mkdtemp" }); const tmpUploadFolder = await fs.promises.mkdtemp( @@ -194,7 +200,8 @@ export function createDebugIdUploadFunction({ cleanupSpan.finish(); } artifactBundleUploadTransaction.finish(); - freeDependencyOnSourcemapFiles(); + freeGlobalDependencyOnSourcemapFiles(); + freeUploadDependencyOnSourcemapFiles(); await safeFlushTelemetry(sentryClient); } }; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d7dc258550cb..794b67c9ca72 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -212,6 +212,9 @@ export function sentryUnpluginFactory({ /** * Returns a Promise that resolves when all the currently active dependencies are freed again. + * + * It is very important that this function is called as late as possible before wanting to await the Promise to give + * the dependency producers as much time as possible to register themselves. */ function waitUntilSourcemapFileDependenciesAreFreed() { return new Promise((resolve) => { @@ -342,7 +345,7 @@ export function sentryUnpluginFactory({ vcsRemote: options.release.vcsRemote, headers: options.headers, }, - freeDependencyOnSourcemapFiles: createDependencyOnSourcemapFiles(), + createDependencyOnSourcemapFiles, }) ); } @@ -367,7 +370,7 @@ export function sentryUnpluginFactory({ createDebugIdUploadFunction({ assets: options.sourcemaps?.assets, ignore: options.sourcemaps?.ignore, - freeDependencyOnSourcemapFiles: createDependencyOnSourcemapFiles(), + createDependencyOnSourcemapFiles, dist: options.release.dist, releaseName: options.release.name, logger: logger, @@ -405,9 +408,7 @@ export function sentryUnpluginFactory({ plugins.push( fileDeletionPlugin({ - // It is very important that this is only called after all other dependencies have been created with `createDependencyOnSourcemapFiles`. - // Ideally, we always register this plugin last. - dependenciesAreFreedPromise: waitUntilSourcemapFileDependenciesAreFreed(), + waitUntilSourcemapFileDependenciesAreFreed, filesToDeleteAfterUpload: options.sourcemaps?.filesToDeleteAfterUpload ?? options.sourcemaps?.deleteFilesAfterUpload, diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index d984cc4edbbc..f088ea044156 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -27,7 +27,7 @@ interface ReleaseManagementPluginOptions { silent: boolean; headers?: Record; }; - freeDependencyOnSourcemapFiles: () => void; + createDependencyOnSourcemapFiles: () => () => void; } export function releaseManagementPlugin({ @@ -42,11 +42,17 @@ export function releaseManagementPlugin({ sentryHub, sentryClient, sentryCliOptions, - freeDependencyOnSourcemapFiles, + createDependencyOnSourcemapFiles, }: ReleaseManagementPluginOptions): UnpluginOptions { + const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); return { name: "sentry-debug-id-upload-plugin", async writeBundle() { + // It is possible that this writeBundle hook is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) + // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. + const freeWriteBundleInvocationDependencyOnSourcemapFiles = + createDependencyOnSourcemapFiles(); + try { const cliInstance = new SentryCli(null, sentryCliOptions); @@ -90,7 +96,8 @@ export function releaseManagementPlugin({ await safeFlushTelemetry(sentryClient); handleRecoverableError(e); } finally { - freeDependencyOnSourcemapFiles(); + freeGlobalDependencyOnSourcemapFiles(); + freeWriteBundleInvocationDependencyOnSourcemapFiles(); } }, }; diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 6ea38fb2ec8c..97d743f24ebb 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -7,7 +7,7 @@ import fs from "fs"; interface FileDeletionPlugin { handleRecoverableError: (error: unknown) => void; - dependenciesAreFreedPromise: Promise; + waitUntilSourcemapFileDependenciesAreFreed: () => Promise; sentryHub: Hub; sentryClient: NodeClient; filesToDeleteAfterUpload: string | string[] | undefined; @@ -19,52 +19,46 @@ export function fileDeletionPlugin({ sentryHub, sentryClient, filesToDeleteAfterUpload, - dependenciesAreFreedPromise, + waitUntilSourcemapFileDependenciesAreFreed, logger, }: FileDeletionPlugin): UnpluginOptions { - const writeBundle = async () => { - try { - if (filesToDeleteAfterUpload !== undefined) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); + return { + name: "sentry-file-deletion-plugin", + async writeBundle() { + try { + if (filesToDeleteAfterUpload !== undefined) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); - logger.debug("Waiting for dependencies on generated files to be freed before deleting..."); + logger.debug( + "Waiting for dependencies on generated files to be freed before deleting..." + ); - await dependenciesAreFreedPromise; + await waitUntilSourcemapFileDependenciesAreFreed(); - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } + } catch (e) { + sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e); } - } catch (e) { - sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); - await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); - } - }; - return { - name: "sentry-file-deletion-plugin", - vite: { - writeBundle: { - sequential: true, - order: "post", - handler: writeBundle, - }, }, - writeBundle, }; } From 060f323d45507fb56158b11ec8974df85e6b2004 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 12 Jul 2024 13:09:29 +0200 Subject: [PATCH 384/640] meta: Update changelog for 2.21.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 538c9bcc5670..2931498ea862 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.21.1 + +- fix: Do not delete files before all upload tasks executed (#572) + +Work in this release contributed by @tyouzu1. Thank you for your contribution! + ## 2.21.0 - fix: Use `sequential` and `post` order for vite artifact deletion (#568) From a05ce77fa92abfe0bf43404495d16d48500597f2 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 12 Jul 2024 11:11:31 +0000 Subject: [PATCH 385/640] release: 2.21.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 174ecb41e2df..c5ded62b944b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.21.0", + "version": "2.21.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a81ec6bb9b57..a435fff3bc6b 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.21.0", + "version": "2.21.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b0c14aa2c389..97efd7f82b3f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.21.0", + "version": "2.21.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.21.0", + "@sentry/babel-plugin-component-annotate": "2.21.1", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 8600e5cbdd53..bf60e587d5c9 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 51340e4f3ad5..0f21ed1bcd33 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.21.0", - "@sentry/rollup-plugin": "2.21.0", - "@sentry/vite-plugin": "2.21.0", - "@sentry/webpack-plugin": "2.21.0", + "@sentry/esbuild-plugin": "2.21.1", + "@sentry/rollup-plugin": "2.21.1", + "@sentry/vite-plugin": "2.21.1", + "@sentry/webpack-plugin": "2.21.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index a7e8389aa8af..060185075da0 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.21.0", + "version": "2.21.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index b23930313620..5a978b944516 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b212f2e95bb2..bba5d07bb50b 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", - "@sentry/bundler-plugin-core": "2.21.0", - "@sentry/esbuild-plugin": "2.21.0", - "@sentry/rollup-plugin": "2.21.0", - "@sentry/vite-plugin": "2.21.0", - "@sentry/webpack-plugin": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/esbuild-plugin": "2.21.1", + "@sentry/rollup-plugin": "2.21.1", + "@sentry/vite-plugin": "2.21.1", + "@sentry/webpack-plugin": "2.21.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index bea3ee979295..83ce2204e615 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 65e69ff008d1..754fe3aab2b1 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.21.0", + "version": "2.21.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c88dc59a1782..b0a7e231f3ff 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.21.0", + "version": "2.21.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7da921a66e86..06ec57a1ac0a 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.21.0", + "version": "2.21.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 463e0b40e978..4f7c4db81f74 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.21.0", + "version": "2.21.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.0", + "@sentry/bundler-plugin-core": "2.21.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.21.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.0", + "@sentry-internal/eslint-config": "2.21.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 12b2a39f7a7d48fe268523f216c3f7f11a4cb42c Mon Sep 17 00:00:00 2001 From: Matthew T <20070360+mdtro@users.noreply.github.com> Date: Wed, 24 Jul 2024 04:14:54 -0500 Subject: [PATCH 386/640] ci: dependency review action (#576) --- .github/workflows/dependency-review.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 000000000000..916937a613b4 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,19 @@ +name: "Dependency Review" +on: + pull_request: + branches: ["master"] + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: "Checkout Repository" + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Dependency Review + uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 + with: + # Possible values: "critical", "high", "moderate", "low" + fail-on-severity: high From 6f209ccfefdebbeb16ee5d6685ccdfb817e460cc Mon Sep 17 00:00:00 2001 From: Matthew T <20070360+mdtro@users.noreply.github.com> Date: Wed, 24 Jul 2024 12:51:42 -0500 Subject: [PATCH 387/640] Revert "ci: dependency review action" (#577) Revert "ci: dependency review action (#576)" This reverts commit 12b2a39f7a7d48fe268523f216c3f7f11a4cb42c. --- .github/workflows/dependency-review.yml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml deleted file mode 100644 index 916937a613b4..000000000000 --- a/.github/workflows/dependency-review.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: "Dependency Review" -on: - pull_request: - branches: ["master"] - -permissions: - contents: read - -jobs: - dependency-review: - runs-on: ubuntu-latest - steps: - - name: "Checkout Repository" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Dependency Review - uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 - with: - # Possible values: "critical", "high", "moderate", "low" - fail-on-severity: high From 808f52a3a5ca5222dd649e4aa7b2d659610194ed Mon Sep 17 00:00:00 2001 From: joshuarli Date: Wed, 31 Jul 2024 04:35:28 -0700 Subject: [PATCH 388/640] ci: Update actions/upload-artifact to v4 (#580) --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 234e4256a6e8..1d6ec81ffaea 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -230,7 +230,7 @@ jobs: - name: pack run: yarn build:npm - name: archive artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ github.sha }} path: | From a11470f23cb0dd581e8035e6de8b913d8bf2b5f6 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 5 Aug 2024 11:32:48 +0200 Subject: [PATCH 389/640] deps: Bump `@sentry/cli` to `2.33.1` (#581) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 92 +++++++++++------------ 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 97efd7f82b3f..d3d507f669bd 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "2.21.1", - "@sentry/cli": "^2.22.3", + "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index 79095fe6c928..d8755c9225b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2735,45 +2735,45 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.22.3.tgz#d81f6a1b2060d20adb1da7e65e1c57e050e8ffcc" - integrity sha512-A1DwFTffg3+fF68qujaJI07dk/1H1pRuihlvS5WQ9sD7nQLnXZGoLUht4eULixhDzZYinWHKkcWzQ6k40UTvNA== - -"@sentry/cli-linux-arm64@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.22.3.tgz#9bdd3f3a441017b82fdbf0986fdf3b2e19ceda0c" - integrity sha512-PnBPb4LJ+A2LlqLjtVFn4mEizcVdxBSLZvB85pEGzq9DRXjZ6ZEuGWFHTVnWvjd79TB/s0me29QnLc3n4B6lgA== - -"@sentry/cli-linux-arm@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.22.3.tgz#74ae1d9bf8a9334e155412fc66c770573b264d7c" - integrity sha512-mDtLVbqbCu/5b/v2quTAMzY/atGlJVvrqO2Wvpro0Jb/LYhn7Y1pVBdoXEDcnOX82/pseFkLT8PFfq/OcezPhA== - -"@sentry/cli-linux-i686@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.22.3.tgz#8e077d2f48c6c9a791e2db303c55bd4b3f47e2f8" - integrity sha512-wxvbpQ2hiw4hwJWfJMp7K45BV40nXL62f91jLuftFXIbieKX1Li57NNKNu2JUVn7W1bJxkwz/PKGGTXSgeJlRw== - -"@sentry/cli-linux-x64@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.22.3.tgz#c3d653032105043b5e72202812c2b85dbbfbabbb" - integrity sha512-0GxsYNO5GyRWifeOpng+MmdUFZRA64bgA1n1prsEsXnoeLcm3Zj4Q63hBZmiwz9Qbhf5ibohkpf94a7dI7pv3A== - -"@sentry/cli-win32-i686@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.22.3.tgz#836baaa8af96b5249c753d2f0b5c111d4c850e4a" - integrity sha512-YERPsd7ClBrxKcmCUw+ZrAvQfbyIZFrqh269hgDuXFodpsB7LPGnI33ilo0uzmKdq2vGppTb6Z3gf1Rbq0Hadg== - -"@sentry/cli-win32-x64@2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.22.3.tgz#c450136539e8860d46434a932383005cffd89136" - integrity sha512-NUh56xWvgJo2KuC9lI6o6nTPXdzbpQUB4qGwJ73L9NP3HT2P1I27jtHyrC2zlXTVlYE23gQZGrL3wgW4Jy80QA== - -"@sentry/cli@^2.22.3": - version "2.22.3" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.22.3.tgz#e28613885c30979f4760de7365e5d30d5a32d51d" - integrity sha512-VFHdtrHsMyTRSZhDLeMyXvit7xB4e81KugIEwMve95c7h5HO672bfmCcM/403CAugj4NzvQ+IR2NKF/2SsEPlg== +"@sentry/cli-darwin@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.33.1.tgz#e4eb1dd01ee3ce2788025426b860ccc63759589c" + integrity sha512-+4/VIx/E1L2hChj5nGf5MHyEPHUNHJ/HoG5RY+B+vyEutGily1c1+DM2bum7RbD0xs6wKLIyup5F02guzSzG8A== + +"@sentry/cli-linux-arm64@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.33.1.tgz#9ea1718c21ef32ca83b0852ca29fb461fd26d25a" + integrity sha512-DbGV56PRKOLsAZJX27Jt2uZ11QfQEMmWB4cIvxkKcFVE+LJP4MVA+MGGRUL6p+Bs1R9ZUuGbpKGtj0JiG6CoXw== + +"@sentry/cli-linux-arm@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.33.1.tgz#e8a1dca4d008dd6a72ab5935304c104e98e2901c" + integrity sha512-zbxEvQju+tgNvzTOt635le4kS/Fbm2XC2RtYbCTs034Vb8xjrAxLnK0z1bQnStUV8BkeBHtsNVrG+NSQDym2wg== + +"@sentry/cli-linux-i686@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.33.1.tgz#f1fe8dd4d6dde0812a94fba31de8054ddfb7284a" + integrity sha512-g2LS4oPXkPWOfKWukKzYp4FnXVRRSwBxhuQ9eSw2peeb58ZIObr4YKGOA/8HJRGkooBJIKGaAR2mH2Pk1TKaiA== + +"@sentry/cli-linux-x64@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.33.1.tgz#6e086675356a9eb79731bf9e447d078bae1b5adf" + integrity sha512-IV3dcYV/ZcvO+VGu9U6kuxSdbsV2kzxaBwWUQxtzxJ+cOa7J8Hn1t0koKGtU53JVZNBa06qJWIcqgl4/pCuKIg== + +"@sentry/cli-win32-i686@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.33.1.tgz#0e6b36c4a2f5f6e85a59247a123d276b3ef10f1a" + integrity sha512-F7cJySvkpzIu7fnLKNHYwBzZYYwlhoDbAUnaFX0UZCN+5DNp/5LwTp37a5TWOsmCaHMZT4i9IO4SIsnNw16/zQ== + +"@sentry/cli-win32-x64@2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.33.1.tgz#2d00b38a2dd9f3355df91825582ada3ea0034e86" + integrity sha512-8VyRoJqtb2uQ8/bFRKNuACYZt7r+Xx0k2wXRGTyH05lCjAiVIXn7DiS2BxHFty7M1QEWUCMNsb/UC/x/Cu2wuA== + +"@sentry/cli@^2.33.1": + version "2.33.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.33.1.tgz#cfbdffdd896b05b92a659baf435b5607037af928" + integrity sha512-dUlZ4EFh98VFRPJ+f6OW3JEYQ7VvqGNMa0AMcmvk07ePNeK/GicAWmSQE4ZfJTTl80ul6HZw1kY01fGQOQlVRA== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2781,13 +2781,13 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.22.3" - "@sentry/cli-linux-arm" "2.22.3" - "@sentry/cli-linux-arm64" "2.22.3" - "@sentry/cli-linux-i686" "2.22.3" - "@sentry/cli-linux-x64" "2.22.3" - "@sentry/cli-win32-i686" "2.22.3" - "@sentry/cli-win32-x64" "2.22.3" + "@sentry/cli-darwin" "2.33.1" + "@sentry/cli-linux-arm" "2.33.1" + "@sentry/cli-linux-arm64" "2.33.1" + "@sentry/cli-linux-i686" "2.33.1" + "@sentry/cli-linux-x64" "2.33.1" + "@sentry/cli-win32-i686" "2.33.1" + "@sentry/cli-win32-x64" "2.33.1" "@sentry/core@7.102.0": version "7.102.0" From 6867395ce79cd5ab97ef3b6ea13ffb3412f956e5 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:40:14 +0200 Subject: [PATCH 390/640] fix(vite-plugin): Ensure `post` order of `sentry-vite-release-injection-plugin` to avoid breaking `@rollup/plugin-commonjs` step (#578) --- .gitignore | 1 + packages/bundler-plugin-core/src/index.ts | 2 +- packages/playground/vite.config.smallNodeApp.js | 2 +- packages/vite-plugin/src/index.ts | 4 +++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index e462f7bc3c7a..7f95f1013fff 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules yarn-error.log .vscode/settings.json +.idea *.tgz diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 794b67c9ca72..e61627108008 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -43,7 +43,7 @@ interface SentryUnpluginFactoryOptions { * * Release injection: * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module - * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector;"`) + * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector";`) * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js index 34c1586ad373..a038686a296b 100644 --- a/packages/playground/vite.config.smallNodeApp.js +++ b/packages/playground/vite.config.smallNodeApp.js @@ -1,5 +1,5 @@ // @ts-check -import { sentryVitePlugin } from "@sentry/bundler-plugin-core"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; import { defineConfig } from "vite"; import * as path from "path"; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index d840077b26b0..9aa1ee3441f9 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -14,7 +14,9 @@ import { UnpluginOptions } from "unplugin"; function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { return { name: "sentry-vite-release-injection-plugin", - enforce: "pre" as const, // need this so that vite runs the resolveId hook + // run `post` to avoid tripping up @rollup/plugin-commonjs when cjs is used + // as we inject an `import` statement + enforce: "post" as const, // need this so that vite runs the resolveId hook vite: createRollupReleaseInjectionHooks(injectionCode), }; } From 087b0c6bd7256816bbd26e0d36d0e0226e65191b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Aug 2024 12:32:59 +0200 Subject: [PATCH 391/640] feat: Add `bundleSizeOptimizations.excludeTracing` option as alias to deprecated `bundleSizeOptimizations.excludePerformanceMonitoring` (#582) --- packages/bundler-plugin-core/src/index.ts | 5 +- packages/bundler-plugin-core/src/types.ts | 56 ++++++++++++------- .../src/generate-documentation-table.ts | 31 ++++++++++ 3 files changed, 71 insertions(+), 21 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e61627108008..b69aca73854a 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -237,7 +237,10 @@ export function sentryUnpluginFactory({ if (bundleSizeOptimizations.excludeDebugStatements) { replacementValues["__SENTRY_DEBUG__"] = false; } - if (bundleSizeOptimizations.excludePerformanceMonitoring) { + if ( + bundleSizeOptimizations.excludePerformanceMonitoring || + bundleSizeOptimizations.excludeTracing + ) { replacementValues["__SENTRY_TRACE__"] = false; } if (bundleSizeOptimizations.excludeReplayCanvas) { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index b7799e08b2ca..a89b872aaf55 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -245,47 +245,63 @@ export interface Options { */ bundleSizeOptimizations?: { /** - * If set to true, the plugin will try to tree-shake debug statements out. - * Note that the success of this depends on tree shaking generally being enabled in your build. + * If set to `true`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * Setting this option to `true` will disable features like the SDK's `debug` option. */ excludeDebugStatements?: boolean; /** - * If set to true, the plugin will try to tree-shake performance monitoring statements out. - * Note that the success of this depends on tree shaking generally being enabled in your build. - * Attention: DO NOT enable this when you're using any performance monitoring-related SDK features (e.g. Sentry.startTransaction()). - * This flag is intended to be used in combination with packages like @sentry/next or @sentry/sveltekit, - * which automatically include performance monitoring functionality. + * If set to `true`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * **Notice**: Do not enable this when you're using any performance monitoring-related SDK features (e.g. `Sentry.startTransaction()`). + * + * @deprecated This option has been replaced with the `excludeTracing`. Currently, this option is an alias for `excludeTracing` but `excludePerformanceMonitoring` will be removed in the next major version. */ + // TODO(v3): Remove this option excludePerformanceMonitoring?: boolean; /** - * If set to true, the plugin will try to tree-shake Session Replay's Canvas recording functionality out. - * You can safely do this when you do not want to capture any Canvas activity via Replay. - * Note that the success of this depends on tree shaking generally being enabled in your build. + * If set to `true`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * **Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. `Sentry.startTransaction()`). + */ + excludeTracing?: boolean; + + /** + * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Canvas recording functionality. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * You can safely do this when you do not want to capture any Canvas activity via Sentry Session Replay. * - * @deprecated Versions v7.78.0 and later of the Sentry JavaScript SDKs do not include canvas support by default, making this option redundant. + * @deprecated In versions v7.78.0 and later of the Sentry JavaScript SDKs, canvas recording is opt-in making this option redundant. */ excludeReplayCanvas?: boolean; /** - * If set to true, the plugin will try to tree-shake Session Replay's Shadow DOM recording functionality out. - * You can safely do this when you do not want to capture any Shadow DOM activity via Replay. - * Note that the success of this depends on tree shaking generally being enabled in your build. + * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * This option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay. */ excludeReplayShadowDom?: boolean; /** - * If set to true, the plugin will try to tree-shake Session Replay's IFrame recording functionality out. - * You can safely do this when you do not want to capture any IFrame activity via Replay. - * Note that the success of this depends on tree shaking generally being enabled in your build. + * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay `iframe` recording functionality. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * You can safely do this when you do not want to capture any `iframe` activity via Sentry Session Replay. */ excludeReplayIframe?: boolean; /** - * If set to true, the plugin will try to tree-shake Session Replay's Compression Web Worker out. - * You should only do this if you manually host a compression worker and configure it in your Replay config via `workerUrl`. - * Note that the success of this depends on tree shaking generally being enabled in your build. + * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker. + * Note that the success of this depends on tree shaking being enabled in your build tooling. + * + * **Notice:** You should only do use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the `workerUrl` option. */ excludeReplayWorker?: boolean; }; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index e79dc6390c42..fae1fd41be3e 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -343,6 +343,37 @@ type IncludeEntry = { }, ], }, + { + name: "bundleSizeOptimizations", + fullDescription: `Options related to bundle size optimizations. These options will allow you to optimize and reduce the bundle size of the Sentry SDK.`, + children: [ + { + name: "excludeDebugStatements", + type: "boolean", + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nSetting this option to \`true\` will disable features like the SDK's \`debug\` option.`, + }, + { + name: "excludeTracing", + type: "boolean", + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. \`Sentry.startTransaction()\`).`, + }, + { + name: "excludeReplayShadowDom", + type: "boolean", + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nThis option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay.`, + }, + { + name: "excludeReplayIframe", + type: "boolean", + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay \`iframe\` recording functionality.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nYou can safely do this when you do not want to capture any \`iframe\` activity via Sentry Session Replay.`, + }, + { + name: "excludeReplayWorker", + type: "boolean", + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** You should only do use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.`, + }, + ], + }, { name: "reactComponentAnnotation", fullDescription: `Options related to react component name annotations. From 912e3f9fd110552cd365c0ae639f5fc698f6cd0b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 6 Aug 2024 17:27:17 +0200 Subject: [PATCH 392/640] meta: Update changelog for 2.22.0 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2931498ea862..571a313fa614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.0 + +- deps: Bump `@sentry/cli` to `2.33.1` (#581) +- feat: Add `bundleSizeOptimizations.excludeTracing` option as alias to deprecated `bundleSizeOptimizations.excludePerformanceMonitoring` (#582) +- fix(vite-plugin): Ensure `post` order of `sentry-vite-release-injection-plugin` to avoid breaking `@rollup/plugin-commonjs` step (#578) + ## 2.21.1 - fix: Do not delete files before all upload tasks executed (#572) From 6c7d2f976383b9e0ee9e41582daded2e6b2636c2 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 6 Aug 2024 15:30:47 +0000 Subject: [PATCH 393/640] release: 2.22.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index c5ded62b944b..3c05b4a175ad 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.21.1", + "version": "2.22.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a435fff3bc6b..912a65c4737b 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.21.1", + "version": "2.22.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d3d507f669bd..7f852fc21e3a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.21.1", + "version": "2.22.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.21.1", + "@sentry/babel-plugin-component-annotate": "2.22.0", "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index bf60e587d5c9..7ac9b3857c02 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 0f21ed1bcd33..04c68d4450e1 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.21.1", - "@sentry/rollup-plugin": "2.21.1", - "@sentry/vite-plugin": "2.21.1", - "@sentry/webpack-plugin": "2.21.1", + "@sentry/esbuild-plugin": "2.22.0", + "@sentry/rollup-plugin": "2.22.0", + "@sentry/vite-plugin": "2.22.0", + "@sentry/webpack-plugin": "2.22.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 060185075da0..635d98e2ad8b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.21.1", + "version": "2.22.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/bundler-plugin-core": "2.22.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 5a978b944516..2d4450d4c8c4 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index bba5d07bb50b..87d6e041f978 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", - "@sentry/bundler-plugin-core": "2.21.1", - "@sentry/esbuild-plugin": "2.21.1", - "@sentry/rollup-plugin": "2.21.1", - "@sentry/vite-plugin": "2.21.1", - "@sentry/webpack-plugin": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/esbuild-plugin": "2.22.0", + "@sentry/rollup-plugin": "2.22.0", + "@sentry/vite-plugin": "2.22.0", + "@sentry/webpack-plugin": "2.22.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 83ce2204e615..37b21aaaf13c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/bundler-plugin-core": "2.22.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 754fe3aab2b1..a2afddcfd437 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.21.1", + "version": "2.22.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/bundler-plugin-core": "2.22.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b0a7e231f3ff..2cde27b1bf67 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.21.1", + "version": "2.22.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 06ec57a1ac0a..007f64335981 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.21.1", + "version": "2.22.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/bundler-plugin-core": "2.22.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 4f7c4db81f74..a45fd4b998d4 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.21.1", + "version": "2.22.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.21.1", + "@sentry/bundler-plugin-core": "2.22.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.21.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.21.1", + "@sentry-internal/eslint-config": "2.22.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 28bf63068363343f7a684c23317e49cb6550415b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Aug 2024 11:33:56 +0200 Subject: [PATCH 394/640] fix: Escape release string in injection snippet (#585) --- packages/bundler-plugin-core/src/utils.ts | 2 +- .../release-value-with-quotes/input/bundle.js | 3 ++ .../release-value-with-quotes.test.ts | 32 +++++++++++++++++++ .../release-value-with-quotes/setup.ts | 15 +++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js create mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/setup.ts diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 18860e2ad8c5..a49efd6ee000 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -321,7 +321,7 @@ export function generateGlobalInjectorCode({ self : {}; - _global.SENTRY_RELEASE={id:"${release}"};`; + _global.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; if (injectBuildInformation) { const buildInfo = getBuildInformation(); diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js b/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); 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 new file mode 100644 index 000000000000..509db17c78e5 --- /dev/null +++ b/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts @@ -0,0 +1,32 @@ +/* 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"; + +function checkBundle(bundlePath: string): void { + const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +} + +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("esbuild bundle", () => { + checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); + }); + + test("rollup bundle", () => { + checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); + }); + + test("vite bundle", () => { + checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); + }); +}); diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts b/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts new file mode 100644 index 000000000000..4782d2843d11 --- /dev/null +++ b/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts @@ -0,0 +1,15 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + release: { name: 'i am a dangerous release value because I contain a "' }, + }, + ["webpack4", "webpack5", "esbuild", "rollup", "vite"] +); From ceae06d56e07363fed2e96a8b229a683f703d7da Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Aug 2024 17:52:42 +0200 Subject: [PATCH 395/640] fix: Use `sourcemaps.disable` to disable debug ID upload instead of legacy upload (#587) --- packages/bundler-plugin-core/src/index.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b69aca73854a..94c242784fd5 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -307,9 +307,7 @@ export function sentryUnpluginFactory({ plugins.push(moduleMetadataInjectionPlugin(injectionCode)); } - if (options.sourcemaps?.disable) { - logger.debug("Source map upload was disabled. Will not upload sourcemaps."); - } else if (!options.release.name) { + if (!options.release.name) { logger.warn( "No release name provided. Will not create release. Please set the `release.name` option to identify your release." ); @@ -355,7 +353,11 @@ export function sentryUnpluginFactory({ plugins.push(debugIdInjectionPlugin(logger)); - if (!options.authToken) { + if (options.sourcemaps?.disable) { + logger.debug( + "Source map upload was disabled. Will not upload sourcemaps using debug ID process." + ); + } else if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" ); From 4eb2dba81fccf11d3e571a207deaafde97a3e710 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 13 Aug 2024 09:34:14 +0200 Subject: [PATCH 396/640] meta: Update changelog for 2.22.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 571a313fa614..371515603185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.1 + +- fix: Use `sourcemaps.disable` to disable debug ID upload instead of legacy upload (#587) +- fix: Escape release string in injection snippet (#585) + ## 2.22.0 - deps: Bump `@sentry/cli` to `2.33.1` (#581) From 4c16227a8b7e3d1b0ed6c880b48207fe3f709a85 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 13 Aug 2024 07:36:46 +0000 Subject: [PATCH 397/640] release: 2.22.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 3c05b4a175ad..fea3aab27a27 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.0", + "version": "2.22.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 912a65c4737b..28b7e3255874 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.0", + "version": "2.22.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7f852fc21e3a..539c2aa417b1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.0", + "version": "2.22.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.0", + "@sentry/babel-plugin-component-annotate": "2.22.1", "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 7ac9b3857c02..8d28ba324e2e 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 04c68d4450e1..d95de0864e70 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.0", - "@sentry/rollup-plugin": "2.22.0", - "@sentry/vite-plugin": "2.22.0", - "@sentry/webpack-plugin": "2.22.0", + "@sentry/esbuild-plugin": "2.22.1", + "@sentry/rollup-plugin": "2.22.1", + "@sentry/vite-plugin": "2.22.1", + "@sentry/webpack-plugin": "2.22.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 635d98e2ad8b..eb8df56e4e49 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.0", + "version": "2.22.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2d4450d4c8c4..d6c57805cba8 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 87d6e041f978..84ff6ba840c2 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", - "@sentry/bundler-plugin-core": "2.22.0", - "@sentry/esbuild-plugin": "2.22.0", - "@sentry/rollup-plugin": "2.22.0", - "@sentry/vite-plugin": "2.22.0", - "@sentry/webpack-plugin": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/esbuild-plugin": "2.22.1", + "@sentry/rollup-plugin": "2.22.1", + "@sentry/vite-plugin": "2.22.1", + "@sentry/webpack-plugin": "2.22.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 37b21aaaf13c..d6dd8102bce7 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index a2afddcfd437..ef1a52def113 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.0", + "version": "2.22.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 2cde27b1bf67..ace8d801ef15 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.0", + "version": "2.22.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 007f64335981..5852b99ac951 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.0", + "version": "2.22.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index a45fd4b998d4..18fe80ddf277 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.0", + "version": "2.22.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.0", + "@sentry/bundler-plugin-core": "2.22.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.0", + "@sentry-internal/eslint-config": "2.22.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From db774ceed391ba0ecc6b92df82e5d74c46767172 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 14 Aug 2024 11:35:53 +0200 Subject: [PATCH 398/640] docs: Fix typo --- packages/bundler-plugin-core/src/types.ts | 2 +- packages/dev-utils/src/generate-documentation-table.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index a89b872aaf55..aa521145c781 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -301,7 +301,7 @@ export interface Options { * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker. * Note that the success of this depends on tree shaking being enabled in your build tooling. * - * **Notice:** You should only do use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the `workerUrl` option. + * **Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the `workerUrl` option. */ excludeReplayWorker?: boolean; }; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index fae1fd41be3e..d13c8ac33aa1 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -370,7 +370,7 @@ type IncludeEntry = { { name: "excludeReplayWorker", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** You should only do use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.`, + fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.`, }, ], }, From c0976a584f208aea78a3c52bfbc4dcef44f61875 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 14 Aug 2024 16:25:53 +0200 Subject: [PATCH 399/640] fix: Disable debug ID injection when `sourcemaps.disable` is set (#589) --- packages/bundler-plugin-core/src/index.ts | 4 +- .../disabled-debug-id-injection.test.ts | 50 +++++++++++++++++++ .../input/bundle1.js | 5 ++ .../input/bundle2.js | 5 ++ .../disabled-debug-id-injection/setup.ts | 18 +++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts create mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js create mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js create mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 94c242784fd5..b7a78437185f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -351,7 +351,9 @@ export function sentryUnpluginFactory({ ); } - plugins.push(debugIdInjectionPlugin(logger)); + if (!options.sourcemaps?.disable) { + plugins.push(debugIdInjectionPlugin(logger)); + } if (options.sourcemaps?.disable) { logger.debug( 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 new file mode 100644 index 000000000000..948c29ddf239 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts @@ -0,0 +1,50 @@ +/* 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"; + +function checkBundle(bundlePath1: string, bundlePath2: string) { + const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); + expect(process1Output).toBe("undefined\n"); + + const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); + expect(process2Output).toBe("undefined\n"); +} + +describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () => { + test("esbuild bundle", () => { + checkBundle( + path.join(__dirname, "out", "esbuild", "bundle1.js"), + path.join(__dirname, "out", "esbuild", "bundle2.js") + ); + }); + + test("rollup bundle", () => { + checkBundle( + path.join(__dirname, "out", "rollup", "bundle1.js"), + path.join(__dirname, "out", "rollup", "bundle2.js") + ); + }); + + test("vite bundle", () => { + checkBundle( + path.join(__dirname, "out", "vite", "bundle1.js"), + path.join(__dirname, "out", "vite", "bundle2.js") + ); + }); + + testIfNodeMajorVersionIsLessThan18("webpack 4 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") + ); + }); +}); diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js new file mode 100644 index 000000000000..b6aa931ae685 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js @@ -0,0 +1,5 @@ +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryDebugIds)); + +// Just so the two bundles generate different hashes: +global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js new file mode 100644 index 000000000000..97e6dbd93d42 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js @@ -0,0 +1,5 @@ +// eslint-disable-next-line no-console +console.log(JSON.stringify(global._sentryDebugIds)); + +// Just so the two bundles generate different hashes: +global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts b/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts new file mode 100644 index 000000000000..029a30c5b050 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts @@ -0,0 +1,18 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle1: path.resolve(__dirname, "input", "bundle1.js"), + bundle2: path.resolve(__dirname, "input", "bundle2.js"), + }, + outputDir, + { + telemetry: false, + sourcemaps: { + disable: true, + }, + } +); From 075c66eb687c1261743adc3bba60be1d284558c9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 14 Aug 2024 16:26:37 +0200 Subject: [PATCH 400/640] meta: Update changelog for 2.22.2 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 371515603185..d57dd3ddd552 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.2 + +- fix: Disable debug ID injection when `sourcemaps.disable` is set (#589) + ## 2.22.1 - fix: Use `sourcemaps.disable` to disable debug ID upload instead of legacy upload (#587) From 22a472de5bf7baa64a3b6582debbc415e7ccabb3 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 14 Aug 2024 14:28:02 +0000 Subject: [PATCH 401/640] release: 2.22.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index fea3aab27a27..acb9a625a675 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.1", + "version": "2.22.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 28b7e3255874..ade0207d0ce1 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.1", + "version": "2.22.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 539c2aa417b1..dc73e0150535 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.1", + "version": "2.22.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.1", + "@sentry/babel-plugin-component-annotate": "2.22.2", "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 8d28ba324e2e..5d81495491d6 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index d95de0864e70..58029b4bfce0 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.1", - "@sentry/rollup-plugin": "2.22.1", - "@sentry/vite-plugin": "2.22.1", - "@sentry/webpack-plugin": "2.22.1", + "@sentry/esbuild-plugin": "2.22.2", + "@sentry/rollup-plugin": "2.22.2", + "@sentry/vite-plugin": "2.22.2", + "@sentry/webpack-plugin": "2.22.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index eb8df56e4e49..822088cba377 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.1", + "version": "2.22.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index d6c57805cba8..73bc1e7ecef1 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 84ff6ba840c2..5a4e02becf90 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", - "@sentry/bundler-plugin-core": "2.22.1", - "@sentry/esbuild-plugin": "2.22.1", - "@sentry/rollup-plugin": "2.22.1", - "@sentry/vite-plugin": "2.22.1", - "@sentry/webpack-plugin": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/esbuild-plugin": "2.22.2", + "@sentry/rollup-plugin": "2.22.2", + "@sentry/vite-plugin": "2.22.2", + "@sentry/webpack-plugin": "2.22.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index d6dd8102bce7..6e70563c0f46 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ef1a52def113..d7db273da489 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.1", + "version": "2.22.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index ace8d801ef15..112616315979 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.1", + "version": "2.22.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 5852b99ac951..5090dd1d49f8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.1", + "version": "2.22.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 18fe80ddf277..810bb896b001 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.1", + "version": "2.22.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.1", + "@sentry/bundler-plugin-core": "2.22.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.1", + "@sentry-internal/eslint-config": "2.22.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 22b9a47f66ad45819f2b9317cc84f9b088da0dd5 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 27 Aug 2024 13:39:08 +0200 Subject: [PATCH 402/640] fix(core): Always instantiate global `Error` class in injected code snippets (#594) Ensures that we always use the `Error` class explicitly from the global object instead of the "ambient" `Error` class. The reason is that users (or as reported frameworks) are free to name their own classes "Error" in which case the file injection would instantiate the user-created and not the global class. --- .../sentry-esbuild-debugid-injection-file.js | 2 +- packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 4 +- .../bundler-plugin-core/test/index.test.ts | 10 +++ .../bundler-plugin-core/test/utils.test.ts | 62 +++++++++++++++++++ .../debug-id-injection.test.ts | 4 ++ .../metadata-injection.test.ts | 4 ++ 7 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 packages/bundler-plugin-core/test/index.test.ts diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index b3cdf857dc09..6135fac33d40 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -8,7 +8,7 @@ try { ? self : {}; - var stack = new Error().stack; + var stack = new globalObject.Error().stack; if (stack) { globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b7a78437185f..8c7ca78a6856 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -673,7 +673,7 @@ export function createComponentNameAnnotateHooks() { } export function getDebugIdSnippet(debugId: string): string { - return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; + return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index a49efd6ee000..67bef5532932 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -351,10 +351,10 @@ export function generateModuleMetadataInjectorCode(metadata: any) { _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; - _sentryModuleMetadataGlobal._sentryModuleMetadata[new Error().stack] = + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = Object.assign( {}, - _sentryModuleMetadataGlobal._sentryModuleMetadata[new Error().stack], + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], ${JSON.stringify(metadata)} ); }`; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts new file mode 100644 index 000000000000..51d0fd57dc76 --- /dev/null +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -0,0 +1,10 @@ +import { getDebugIdSnippet } from "../src"; + +describe("getDebugIdSnippet", () => { + it("returns the debugId injection snippet for a passed debugId", () => { + const snippet = getDebugIdSnippet("1234"); + expect(snippet).toMatchInlineSnapshot( + `";!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof self?self:{},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/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 3dcd93e1b102..aaa9875c7513 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -1,4 +1,5 @@ import { + generateModuleMetadataInjectorCode, getDependencies, getPackageJson, parseMajorVersion, @@ -214,3 +215,64 @@ if (false && true) { }); }); }); + +describe("generateModuleMetadataInjectorCode", () => { + it("generates code with empty metadata object", () => { + const generatedCode = generateModuleMetadataInjectorCode({}); + expect(generatedCode).toMatchInlineSnapshot(` + "{ + var _sentryModuleMetadataGlobal = + typeof window !== \\"undefined\\" + ? window + : typeof global !== \\"undefined\\" + ? global + : typeof self !== \\"undefined\\" + ? self + : {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata = + _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = + Object.assign( + {}, + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], + {} + ); + }" + `); + }); + + it("generates code with metadata object", () => { + const generatedCode = generateModuleMetadataInjectorCode({ + "file1.js": { + foo: "bar", + }, + "file2.js": { + bar: "baz", + }, + }); + expect(generatedCode).toMatchInlineSnapshot(` + "{ + var _sentryModuleMetadataGlobal = + typeof window !== \\"undefined\\" + ? window + : typeof global !== \\"undefined\\" + ? global + : typeof self !== \\"undefined\\" + ? self + : {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata = + _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; + + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = + Object.assign( + {}, + _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], + {\\"file1.js\\":{\\"foo\\":\\"bar\\"},\\"file2.js\\":{\\"bar\\":\\"baz\\"}} + ); + }" + `); + }); +}); 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 96f39589bc04..c3605db7e722 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 @@ -13,6 +13,8 @@ function checkBundle(bundlePath1: string, bundlePath2: string): string[] { expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) ); + expect(Object.keys(debugIdMap1)[0]).toContain("Error"); + const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); const debugIdMap2 = JSON.parse(process2Output) as Record; const debugIds2 = Object.values(debugIdMap2); @@ -21,6 +23,8 @@ function checkBundle(bundlePath1: string, bundlePath2: string): string[] { expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) ); + expect(Object.keys(debugIdMap2)[0]).toContain("Error"); + expect(debugIds1).not.toEqual(debugIds2); return [...debugIds1, ...debugIds2]; 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 52243d2c695c..4b08baf133c4 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -13,6 +13,10 @@ function checkBundle(bundlePath: string): void { expect(Object.values(map)).toHaveLength(1); // The value should be the expected metadata expect(Object.values(map)).toEqual([{ team: "frontend" }]); + + // The key is the stack trace of the error thrown in the file + expect(Object.keys(map)[0]).toContain("Error"); + expect(Object.keys(map)[0]).toContain("bundle.js"); } describe("metadata injection", () => { From 4b9cea26e29fcbda5b4e825a516dd6ad7e596add Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 27 Aug 2024 16:49:14 +0200 Subject: [PATCH 403/640] meta: Update CHANGELOG for 2.22.3 (#595) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d57dd3ddd552..1096c561f799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.3 + +- fix(core): Always instantiate global `Error` class in injected code snippets (#594) + ## 2.22.2 - fix: Disable debug ID injection when `sourcemaps.disable` is set (#589) From 242dac9e9a6ac251b12b85cfb072cb154dbaa16d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 27 Aug 2024 14:50:21 +0000 Subject: [PATCH 404/640] release: 2.22.3 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index acb9a625a675..f4084ba94a8d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.2", + "version": "2.22.3", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index ade0207d0ce1..e2712ea1c88f 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.2", + "version": "2.22.3", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index dc73e0150535..ef6265b795df 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.2", + "version": "2.22.3", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.2", + "@sentry/babel-plugin-component-annotate": "2.22.3", "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 5d81495491d6..6ce624ecc0b1 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 58029b4bfce0..b2b7373d2c31 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.2", - "@sentry/rollup-plugin": "2.22.2", - "@sentry/vite-plugin": "2.22.2", - "@sentry/webpack-plugin": "2.22.2", + "@sentry/esbuild-plugin": "2.22.3", + "@sentry/rollup-plugin": "2.22.3", + "@sentry/vite-plugin": "2.22.3", + "@sentry/webpack-plugin": "2.22.3", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 822088cba377..07eeae128105 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.2", + "version": "2.22.3", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 73bc1e7ecef1..7fa231e43d70 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5a4e02becf90..b9157b1a8941 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", - "@sentry/bundler-plugin-core": "2.22.2", - "@sentry/esbuild-plugin": "2.22.2", - "@sentry/rollup-plugin": "2.22.2", - "@sentry/vite-plugin": "2.22.2", - "@sentry/webpack-plugin": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/esbuild-plugin": "2.22.3", + "@sentry/rollup-plugin": "2.22.3", + "@sentry/vite-plugin": "2.22.3", + "@sentry/webpack-plugin": "2.22.3", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 6e70563c0f46..957c022659f4 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.3", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d7db273da489..8131ac335804 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.2", + "version": "2.22.3", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.3", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 112616315979..4881cc6e3bab 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.2", + "version": "2.22.3", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 5090dd1d49f8..8d588986a19e 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.2", + "version": "2.22.3", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.3", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 810bb896b001..ef023f512a05 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.2", + "version": "2.22.3", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.2", + "@sentry/bundler-plugin-core": "2.22.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.2", + "@sentry-internal/eslint-config": "2.22.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 687a9f54fc935163bce623e843e24eb360a786d6 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Thu, 29 Aug 2024 04:26:20 -0400 Subject: [PATCH 405/640] feat(react-component-annotate): Handle function body returning a ternary (#598) --- .../src/index.ts | 32 ++++++++++++++++++- .../__snapshots__/test-plugin.test.ts.snap | 10 ++++++ .../test/test-plugin.test.ts | 14 ++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 56b0c8083768..5a3e4e5e43f7 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -84,6 +84,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): ArrowFunctionExpression(path, state) { // We're expecting a `VariableDeclarator` like `const MyComponent =` const parent = path.parent; + if ( !parent || !("id" in parent) || @@ -189,6 +190,36 @@ function functionBodyPushAttributes( return; } + // Handle the case of a function body returning a ternary operation. + // `return (maybeTrue ? '' : ())` + if (arg.isConditionalExpression()) { + const consequent = arg.get("consequent"); + if (consequent.isJSXFragment() || consequent.isJSXElement()) { + processJSX( + annotateFragments, + t, + consequent, + componentName, + sourceFileName, + attributeNames, + ignoredComponents + ); + } + const alternate = arg.get("alternate"); + if (alternate.isJSXFragment() || alternate.isJSXElement()) { + processJSX( + annotateFragments, + t, + alternate, + componentName, + sourceFileName, + attributeNames, + ignoredComponents + ); + } + return; + } + if (!arg.isJSXFragment() && !arg.isJSXElement()) { return; } @@ -223,7 +254,6 @@ function processJSX( if (!jsxNode) { return; } - // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate const paths = jsxNode.get("openingElement"); 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 a5c615e1c965..adb23ee5643e 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 @@ -223,6 +223,16 @@ class componentName extends Component { export default componentName;" `; +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\\" + }); +}" +`; + exports[`nonJSX snapshot matches 1`] = ` "import React, { Component } from 'react'; class TestClass extends Component { 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 97a632bf1f7f..edb581e0104e 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -2236,3 +2236,17 @@ it("Bananas incompatible plugin @react-navigation source snapshot matches", () = }" `); }); + +it("handles ternary operation returned by function body", () => { + const result = transform( + `const maybeTrue = Math.random() > 0.5; +export default function componentName() { + return (maybeTrue ? '' : ()) +}`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); + expect(result?.code).toMatchSnapshot(); +}); From 7ee1f9f87239c09f7947b21a47e8cee63bd3cb09 Mon Sep 17 00:00:00 2001 From: Tom Shea Date: Thu, 29 Aug 2024 05:53:37 -0700 Subject: [PATCH 406/640] fix: Allow injection plugins to apply to files with query parameters and fragments in their name (#597) Co-authored-by: Luca Forstner --- .../src/debug-id-upload.ts | 10 +- packages/bundler-plugin-core/src/index.ts | 19 +++- .../injection-with-query-param.test.ts | 74 ++++++++++++ .../input/bundle1.js | 8 ++ .../input/bundle2.js | 8 ++ .../injection-with-query-param/setup.ts | 18 +++ .../utils/create-cjs-bundles-with-query.ts | 105 ++++++++++++++++++ packages/webpack-plugin/src/index.ts | 6 +- 8 files changed, 236 insertions(+), 12 deletions(-) create mode 100644 packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts create mode 100644 packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js create mode 100644 packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js create mode 100644 packages/integration-tests/fixtures/injection-with-query-param/setup.ts create mode 100644 packages/integration-tests/utils/create-cjs-bundles-with-query.ts diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 22f4b6662092..3dd846e5430e 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -9,6 +9,7 @@ import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; import { safeFlushTelemetry } from "./sentry/telemetry"; +import { stripQueryAndHashFromPath } from "./utils"; interface RewriteSourcesHook { (source: string, map: any): string; @@ -89,12 +90,9 @@ export function createDebugIdUploadFunction({ }); globSpan.finish(); - const debugIdChunkFilePaths = globResult.filter( - (debugIdChunkFilePath) => - debugIdChunkFilePath.endsWith(".js") || - debugIdChunkFilePath.endsWith(".mjs") || - debugIdChunkFilePath.endsWith(".cjs") - ); + const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { + return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); + }); // The order of the files output by glob() is not deterministic // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 8c7ca78a6856..0171637631e2 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -528,7 +528,10 @@ export function createRollupDebugIdInjectionHooks() { return { renderChunk(code: string, chunk: { fileName: string }) { if ( - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + // chunks could be any file (html, md, ...) + [".js", ".mjs", ".cjs"].some((ending) => + stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) + ) ) { const debugId = stringToUUID(code); // generate a deterministic debug ID const codeToInject = getDebugIdSnippet(debugId); @@ -562,7 +565,10 @@ export function createRollupModuleMetadataInjectionHooks(injectionCode: string) return { renderChunk(code: string, chunk: { fileName: string }) { if ( - [".js", ".mjs", ".cjs"].some((ending) => chunk.fileName.endsWith(ending)) // chunks could be any file (html, md, ...) + // chunks could be any file (html, md, ...) + [".js", ".mjs", ".cjs"].some((ending) => + stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) + ) ) { const ms = new MagicString(code, { filename: chunk.fileName }); @@ -600,7 +606,14 @@ export function createRollupDebugIdUploadHooks( if (outputOptions.dir) { const outputDir = outputOptions.dir; const buildArtifacts = await glob( - ["/**/*.js", "/**/*.mjs", "/**/*.cjs", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"], + [ + "/**/*.js", + "/**/*.mjs", + "/**/*.cjs", + "/**/*.js.map", + "/**/*.mjs.map", + "/**/*.cjs.map", + ].map((q) => `${q}?(\\?*)?(#*)`), // We want to allow query and hashes strings at the end of files { root: outputDir, absolute: true, 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 new file mode 100644 index 000000000000..41d97bfe91d0 --- /dev/null +++ b/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts @@ -0,0 +1,74 @@ +/* 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"; + +function checkBundleForDebugIds(bundlePath1: string, bundlePath2: string): string[] { + const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const debugIdMap1 = JSON.parse(process1Output).debugIds as Record; + const debugIds1 = Object.values(debugIdMap1); + expect(debugIds1.length).toBeGreaterThan(0); + expect(debugIds1).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + + expect(Object.keys(debugIdMap1)[0]).toContain("Error"); + + const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const debugIdMap2 = JSON.parse(process2Output).debugIds as Record; + const debugIds2 = Object.values(debugIdMap2); + expect(debugIds2.length).toBeGreaterThan(0); + expect(debugIds2).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + + expect(Object.keys(debugIdMap2)[0]).toContain("Error"); + + expect(debugIds1).not.toEqual(debugIds2); + + return [...debugIds1, ...debugIds2]; +} + +function checkBundleForRelease(bundlePath: string): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + expect(JSON.parse(processOutput).release).toBe("I AM A RELEASE!"); +} + +// Query params and hashes are weird on windows +(process.platform === "win32" ? describe.skip : describe)("Injection with query params", () => { + test("vite bundle", () => { + checkBundleForDebugIds( + path.join(__dirname, "out", "vite", "bundle1.js?foo=bar#baz"), + path.join(__dirname, "out", "vite", "bundle2.js?foo=bar#baz") + ); + checkBundleForRelease(path.join(__dirname, "out", "vite", "bundle1.js?foo=bar#baz")); + }); + + test("rollup bundle", () => { + checkBundleForDebugIds( + path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz"), + path.join(__dirname, "out", "rollup", "bundle2.js?foo=bar#baz") + ); + checkBundleForRelease(path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz")); + }); + + testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + checkBundleForDebugIds( + path.join(__dirname, "out", "webpack4", "bundle1.js"), + path.join(__dirname, "out", "webpack4", "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")); + }); +}); diff --git a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js new file mode 100644 index 000000000000..beedb09651e5 --- /dev/null +++ b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js @@ -0,0 +1,8 @@ +// eslint-disable-next-line no-console +console.log( + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + JSON.stringify({ debugIds: global._sentryDebugIds, release: global.SENTRY_RELEASE.id }) +); + +// Just so the two bundles generate different hashes: +global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js new file mode 100644 index 000000000000..13ee683cf33d --- /dev/null +++ b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js @@ -0,0 +1,8 @@ +// eslint-disable-next-line no-console +console.log( + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + JSON.stringify({ debugIds: global._sentryDebugIds, release: global.SENTRY_RELEASE.id }) +); + +// Just so the two bundles generate different hashes: +global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/injection-with-query-param/setup.ts b/packages/integration-tests/fixtures/injection-with-query-param/setup.ts new file mode 100644 index 000000000000..681d4b234e58 --- /dev/null +++ b/packages/integration-tests/fixtures/injection-with-query-param/setup.ts @@ -0,0 +1,18 @@ +import * as path from "path"; +import { createCjsBundlesWithQueryParam } from "../../utils/create-cjs-bundles-with-query"; + +// Query params and hashes are weird on windows +if (process.platform !== "win32") { + const outputDir = path.resolve(__dirname, "out"); + createCjsBundlesWithQueryParam( + { + bundle1: path.resolve(__dirname, "input", "bundle1.js"), + bundle2: path.resolve(__dirname, "input", "bundle2.js"), + }, + outputDir, + { + telemetry: false, + release: { name: "I AM A RELEASE!", create: false }, + } + ); +} diff --git a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts new file mode 100644 index 000000000000..b3c065edd23a --- /dev/null +++ b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts @@ -0,0 +1,105 @@ +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 { 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, + sentryUnpluginOptions: Options, + plugins: string[] = [] +): void { + if (plugins.length === 0 || plugins.includes("vite")) { + void vite.build({ + clearScreen: false, + build: { + sourcemap: true, + outDir: path.join(outFolder, "vite"), + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js?foo=bar#baz", + }, + }, + }, + plugins: [sentryVitePlugin(sentryUnpluginOptions)], + }); + } + if (plugins.length === 0 || plugins.includes("rollup")) { + void rollup + .rollup({ + input: entrypoints, + plugins: [sentryRollupPlugin(sentryUnpluginOptions)], + }) + .then((bundle) => + bundle.write({ + sourcemap: true, + dir: path.join(outFolder, "rollup"), + format: "cjs", + exports: "named", + entryFileNames: "[name].js?foo=bar#baz", + }) + ); + } + + if (plugins.length === 0 || plugins.includes("esbuild")) { + // 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(sentryUnpluginOptions)], + }, + (err) => { + if (err) { + throw err; + } + } + ); + } + + if (plugins.length === 0 || plugins.includes("webpack5")) { + webpack5( + { + devtool: "source-map", + cache: false, + entry: entrypoints, + output: { + path: path.join(outFolder, "webpack5"), + 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", + }, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + }, + (err) => { + if (err) { + throw err; + } + } + ); + } +} diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 39b6233256df..66790c3402d1 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -39,7 +39,7 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call new BannerPlugin({ raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, banner: injectionCode, }) ); @@ -105,7 +105,7 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call new BannerPlugin({ raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, banner: (arg?: BannerPluginCallbackArg) => { const debugId = arg?.chunk?.hash ? stringToUUID(arg.chunk.hash) : uuidv4(); return getDebugIdSnippet(debugId); @@ -156,7 +156,7 @@ function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call new BannerPlugin({ raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)$/, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, banner: injectionCode, }) ); From 61a6fb44fce23695393cd602b9488b80d7d2a313 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 4 Sep 2024 13:59:47 +0200 Subject: [PATCH 407/640] meta: Update changelog for 2.22.4 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1096c561f799..b417ab456409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.4 + +- feat(react-component-annotate): Handle function body returning a ternary (#598) +- fix: Allow injection plugins to apply to files with query parameters and fragments in their name (#597) + +Work in this release contributed by @Thristhart. Thank you for your contribution! + ## 2.22.3 - fix(core): Always instantiate global `Error` class in injected code snippets (#594) From dab9336898fcea2b8fb335714a9ba201dc369110 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 4 Sep 2024 12:01:13 +0000 Subject: [PATCH 408/640] release: 2.22.4 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index f4084ba94a8d..899e8c8108fb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.3", + "version": "2.22.4", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e2712ea1c88f..c9f2779b74fd 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.3", + "version": "2.22.4", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ef6265b795df..6ce97d6cb5ff 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.3", + "version": "2.22.4", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.3", + "@sentry/babel-plugin-component-annotate": "2.22.4", "@sentry/cli": "^2.33.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@sentry/node": "7.102.0", "@sentry/utils": "7.102.0", "@swc/core": "^1.2.205", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6ce624ecc0b1..6e33ab2e6aed 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index b2b7373d2c31..16fb0a2c10dd 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.3", - "@sentry/rollup-plugin": "2.22.3", - "@sentry/vite-plugin": "2.22.3", - "@sentry/webpack-plugin": "2.22.3", + "@sentry/esbuild-plugin": "2.22.4", + "@sentry/rollup-plugin": "2.22.4", + "@sentry/vite-plugin": "2.22.4", + "@sentry/webpack-plugin": "2.22.4", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 07eeae128105..ddca56a5be21 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.3", + "version": "2.22.4", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.4", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 7fa231e43d70..39047cfc20f3 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b9157b1a8941..1e7260001b70 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", - "@sentry/bundler-plugin-core": "2.22.3", - "@sentry/esbuild-plugin": "2.22.3", - "@sentry/rollup-plugin": "2.22.3", - "@sentry/vite-plugin": "2.22.3", - "@sentry/webpack-plugin": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/esbuild-plugin": "2.22.4", + "@sentry/rollup-plugin": "2.22.4", + "@sentry/vite-plugin": "2.22.4", + "@sentry/webpack-plugin": "2.22.4", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 957c022659f4..d73595645161 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.4", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 8131ac335804..bff6004d1252 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.3", + "version": "2.22.4", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.4", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 4881cc6e3bab..faeda22ed6af 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.3", + "version": "2.22.4", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 8d588986a19e..6ef2a3555dbc 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.3", + "version": "2.22.4", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.4", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index ef023f512a05..f6d4340eea05 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.3", + "version": "2.22.4", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.3", + "@sentry/bundler-plugin-core": "2.22.4", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.3", + "@sentry-internal/eslint-config": "2.22.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 7959c7b5cb661c4cf45cd17859b72f3b49ef0011 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 23 Sep 2024 10:28:52 +0200 Subject: [PATCH 409/640] deps: Update `@sentry/cli` to `2.36.1` (#609) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 92 +++++++++++------------ 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 6ce97d6cb5ff..087753bd5a80 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "2.22.4", - "@sentry/cli": "^2.33.1", + "@sentry/cli": "^2.36.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index d8755c9225b6..271ca604b57d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2735,45 +2735,45 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.33.1.tgz#e4eb1dd01ee3ce2788025426b860ccc63759589c" - integrity sha512-+4/VIx/E1L2hChj5nGf5MHyEPHUNHJ/HoG5RY+B+vyEutGily1c1+DM2bum7RbD0xs6wKLIyup5F02guzSzG8A== - -"@sentry/cli-linux-arm64@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.33.1.tgz#9ea1718c21ef32ca83b0852ca29fb461fd26d25a" - integrity sha512-DbGV56PRKOLsAZJX27Jt2uZ11QfQEMmWB4cIvxkKcFVE+LJP4MVA+MGGRUL6p+Bs1R9ZUuGbpKGtj0JiG6CoXw== - -"@sentry/cli-linux-arm@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.33.1.tgz#e8a1dca4d008dd6a72ab5935304c104e98e2901c" - integrity sha512-zbxEvQju+tgNvzTOt635le4kS/Fbm2XC2RtYbCTs034Vb8xjrAxLnK0z1bQnStUV8BkeBHtsNVrG+NSQDym2wg== - -"@sentry/cli-linux-i686@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.33.1.tgz#f1fe8dd4d6dde0812a94fba31de8054ddfb7284a" - integrity sha512-g2LS4oPXkPWOfKWukKzYp4FnXVRRSwBxhuQ9eSw2peeb58ZIObr4YKGOA/8HJRGkooBJIKGaAR2mH2Pk1TKaiA== - -"@sentry/cli-linux-x64@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.33.1.tgz#6e086675356a9eb79731bf9e447d078bae1b5adf" - integrity sha512-IV3dcYV/ZcvO+VGu9U6kuxSdbsV2kzxaBwWUQxtzxJ+cOa7J8Hn1t0koKGtU53JVZNBa06qJWIcqgl4/pCuKIg== - -"@sentry/cli-win32-i686@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.33.1.tgz#0e6b36c4a2f5f6e85a59247a123d276b3ef10f1a" - integrity sha512-F7cJySvkpzIu7fnLKNHYwBzZYYwlhoDbAUnaFX0UZCN+5DNp/5LwTp37a5TWOsmCaHMZT4i9IO4SIsnNw16/zQ== - -"@sentry/cli-win32-x64@2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.33.1.tgz#2d00b38a2dd9f3355df91825582ada3ea0034e86" - integrity sha512-8VyRoJqtb2uQ8/bFRKNuACYZt7r+Xx0k2wXRGTyH05lCjAiVIXn7DiS2BxHFty7M1QEWUCMNsb/UC/x/Cu2wuA== - -"@sentry/cli@^2.33.1": - version "2.33.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.33.1.tgz#cfbdffdd896b05b92a659baf435b5607037af928" - integrity sha512-dUlZ4EFh98VFRPJ+f6OW3JEYQ7VvqGNMa0AMcmvk07ePNeK/GicAWmSQE4ZfJTTl80ul6HZw1kY01fGQOQlVRA== +"@sentry/cli-darwin@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz#786adf6984dbe3c6fb7dac51b625c314117b807d" + integrity sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww== + +"@sentry/cli-linux-arm64@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz#ff449d7e7e715166257998c02cf635ca02acbadd" + integrity sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw== + +"@sentry/cli-linux-arm@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz#1ae5d335a1b4cd217a34c2bd6c6f5e0670136eb3" + integrity sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A== + +"@sentry/cli-linux-i686@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz#112b9e26357e918cbbba918114ec8cdab07cdf60" + integrity sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA== + +"@sentry/cli-linux-x64@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz#c3e5bdb0c9a4bb44c83927c62a3cd7e006709bf7" + integrity sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw== + +"@sentry/cli-win32-i686@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz#819573320e885e1dbf59b0a01d3bd370c84c1708" + integrity sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA== + +"@sentry/cli-win32-x64@2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz#80779b4bffb4e2e32944eae72c60e6f40151b4dc" + integrity sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g== + +"@sentry/cli@^2.36.1": + version "2.36.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.36.1.tgz#a9146b798cb6d2f782a7a48d74633ddcd88dc8d3" + integrity sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2781,13 +2781,13 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.33.1" - "@sentry/cli-linux-arm" "2.33.1" - "@sentry/cli-linux-arm64" "2.33.1" - "@sentry/cli-linux-i686" "2.33.1" - "@sentry/cli-linux-x64" "2.33.1" - "@sentry/cli-win32-i686" "2.33.1" - "@sentry/cli-win32-x64" "2.33.1" + "@sentry/cli-darwin" "2.36.1" + "@sentry/cli-linux-arm" "2.36.1" + "@sentry/cli-linux-arm64" "2.36.1" + "@sentry/cli-linux-i686" "2.36.1" + "@sentry/cli-linux-x64" "2.36.1" + "@sentry/cli-win32-i686" "2.36.1" + "@sentry/cli-win32-x64" "2.36.1" "@sentry/core@7.102.0": version "7.102.0" From be799ee15e3e88a90d0c7b6e4ff664475dda719f Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 23 Sep 2024 11:34:23 +0200 Subject: [PATCH 410/640] feat: Update Sentry telemetry to v8 (#604) --- packages/bundler-plugin-core/package.json | 5 +- .../src/debug-id-upload.ts | 288 +++++++++--------- packages/bundler-plugin-core/src/index.ts | 42 ++- .../src/plugins/release-management.ts | 11 +- .../src/plugins/sourcemap-deletion.ts | 11 +- .../src/plugins/telemetry.ts | 13 +- .../src/sentry/telemetry.ts | 87 +++--- .../src/sentry/transports.ts | 129 ++++++++ packages/bundler-plugin-core/src/types.ts | 1 + .../test/sentry/telemetry.test.ts | 56 ++-- .../fixtures/telemetry/input/bundle1.js | 2 + .../fixtures/telemetry/telemetry.test.ts | 148 +++++++++ yarn.lock | 57 ++-- 13 files changed, 566 insertions(+), 284 deletions(-) create mode 100644 packages/bundler-plugin-core/src/sentry/transports.ts create mode 100644 packages/integration-tests/fixtures/telemetry/input/bundle1.js create mode 100644 packages/integration-tests/fixtures/telemetry/telemetry.test.ts diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 087753bd5a80..b5ba8025ee78 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -70,8 +70,9 @@ "@rollup/plugin-replace": "^4.0.0", "@sentry-internal/eslint-config": "2.22.4", "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", - "@sentry/node": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/core": "8.30.0", + "@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", diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 3dd846e5430e..d5c7358de238 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -5,13 +5,16 @@ import path from "path"; import * as util from "util"; import { Logger } from "./sentry/logger"; import { promisify } from "util"; -import { Hub, NodeClient } from "@sentry/node"; import SentryCli from "@sentry/cli"; import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; import { safeFlushTelemetry } from "./sentry/telemetry"; import { stripQueryAndHashFromPath } from "./utils"; +import { setMeasurement, spanToTraceHeader, startSpan } from "@sentry/core"; +import { getDynamicSamplingContextFromSpan, Scope } from "@sentry/core"; +import { Client } from "@sentry/types"; interface RewriteSourcesHook { + // eslint-disable-next-line @typescript-eslint/no-explicit-any (source: string, map: any): string; } @@ -23,8 +26,8 @@ interface DebugIdUploadPluginOptions { dist?: string; rewriteSourcesHook?: RewriteSourcesHook; handleRecoverableError: (error: unknown) => void; - sentryHub: Hub; - sentryClient: NodeClient; + sentryScope: Scope; + sentryClient: Client; sentryCliOptions: { url: string; authToken: string; @@ -44,7 +47,7 @@ export function createDebugIdUploadFunction({ releaseName, dist, handleRecoverableError, - sentryHub, + sentryScope, sentryClient, sentryCliOptions, rewriteSourcesHook, @@ -53,155 +56,152 @@ export function createDebugIdUploadFunction({ const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); return async (buildArtifactPaths: string[]) => { - const artifactBundleUploadTransaction = sentryHub.startTransaction({ - name: "debug-id-sourcemap-upload", - }); + await startSpan( + // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. + { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, + async () => { + let folderToCleanUp: string | undefined; + + // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) + // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. + const freeUploadDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); + + try { + const tmpUploadFolder = await startSpan( + { name: "mkdtemp", scope: sentryScope }, + async () => { + return await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + } + ); - let folderToCleanUp: string | undefined; + folderToCleanUp = tmpUploadFolder; - // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) - // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. - const freeUploadDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); + let globAssets: string | string[]; + if (assets) { + globAssets = assets; + } else { + logger.debug( + "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." + ); + globAssets = buildArtifactPaths; + } - try { - const mkdtempSpan = artifactBundleUploadTransaction.startChild({ description: "mkdtemp" }); - const tmpUploadFolder = await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - mkdtempSpan.finish(); - - folderToCleanUp = tmpUploadFolder; - - let globAssets; - if (assets) { - globAssets = assets; - } else { - logger.debug( - "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." - ); - globAssets = buildArtifactPaths; - } + const globResult = await startSpan( + { name: "glob", scope: sentryScope }, + async () => await glob(globAssets, { absolute: true, nodir: true, ignore: ignore }) + ); + + const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { + return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); + }); + + // The order of the files output by glob() is not deterministic + // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent + debugIdChunkFilePaths.sort(); - const globSpan = artifactBundleUploadTransaction.startChild({ description: "glob" }); - const globResult = await glob(globAssets, { - absolute: true, - nodir: true, - ignore: ignore, - }); - globSpan.finish(); - - const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { - return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); - }); - - // The order of the files output by glob() is not deterministic - // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent - debugIdChunkFilePaths.sort(); - - if (Array.isArray(assets) && assets.length === 0) { - logger.debug( - "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." - ); - } else if (debugIdChunkFilePaths.length === 0) { - logger.warn( - "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." - ); - } else { - const prepareSpan = artifactBundleUploadTransaction.startChild({ - description: "prepare-bundles", - }); - - // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so - // instead we do it with a maximum of 16 concurrent workers - const preparationTasks = debugIdChunkFilePaths.map( - (chunkFilePath, chunkIndex) => async () => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - tmpUploadFolder, - chunkIndex, - logger, - rewriteSourcesHook ?? defaultRewriteSourcesHook + if (Array.isArray(assets) && assets.length === 0) { + logger.debug( + "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." ); + } else if (debugIdChunkFilePaths.length === 0) { + logger.warn( + "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + ); + } else { + await startSpan( + { name: "prepare-bundles", scope: sentryScope }, + async (prepBundlesSpan) => { + // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so + // instead we do it with a maximum of 16 concurrent workers + const preparationTasks = debugIdChunkFilePaths.map( + (chunkFilePath, chunkIndex) => async () => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + tmpUploadFolder, + chunkIndex, + logger, + rewriteSourcesHook ?? defaultRewriteSourcesHook + ); + } + ); + const workers: Promise[] = []; + const worker = async () => { + while (preparationTasks.length > 0) { + const task = preparationTasks.shift(); + if (task) { + await task(); + } + } + }; + for (let workerIndex = 0; workerIndex < 16; workerIndex++) { + workers.push(worker()); + } + + await Promise.all(workers); + + const files = await fs.promises.readdir(tmpUploadFolder); + const stats = files.map((file) => + fs.promises.stat(path.join(tmpUploadFolder, file)) + ); + const uploadSize = (await Promise.all(stats)).reduce( + (accumulator, { size }) => accumulator + size, + 0 + ); + + setMeasurement("files", files.length, "none", prepBundlesSpan); + setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); + + await startSpan({ name: "upload", scope: sentryScope }, async (uploadSpan) => { + const cliInstance = new SentryCli(null, { + ...sentryCliOptions, + headers: { + "sentry-trace": spanToTraceHeader(uploadSpan), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + baggage: dynamicSamplingContextToSentryBaggageHeader( + getDynamicSamplingContextFromSpan(uploadSpan) + )!, + ...sentryCliOptions.headers, + }, + }); + + await cliInstance.releases.uploadSourceMaps( + releaseName ?? "undefined", // unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow + { + include: [ + { + paths: [tmpUploadFolder], + rewrite: false, + dist: dist, + }, + ], + useArtifactBundle: true, + } + ); + }); + } + ); + + logger.info("Successfully uploaded source maps to Sentry"); } - ); - const workers: Promise[] = []; - const worker = async () => { - while (preparationTasks.length > 0) { - const task = preparationTasks.shift(); - if (task) { - await task(); - } + } catch (e) { + sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); + handleRecoverableError(e); + } finally { + if (folderToCleanUp) { + void startSpan({ name: "cleanup", scope: sentryScope }, async () => { + if (folderToCleanUp) { + await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); + } + }); } - }; - for (let workerIndex = 0; workerIndex < 16; workerIndex++) { - workers.push(worker()); + freeGlobalDependencyOnSourcemapFiles(); + freeUploadDependencyOnSourcemapFiles(); + await safeFlushTelemetry(sentryClient); } - await Promise.all(workers); - - prepareSpan.finish(); - - const files = await fs.promises.readdir(tmpUploadFolder); - const stats = files.map((file) => fs.promises.stat(path.join(tmpUploadFolder, file))); - const uploadSize = (await Promise.all(stats)).reduce( - (accumulator, { size }) => accumulator + size, - 0 - ); - - artifactBundleUploadTransaction.setMeasurement("files", files.length, "none"); - artifactBundleUploadTransaction.setMeasurement("upload_size", uploadSize, "byte"); - - const uploadSpan = artifactBundleUploadTransaction.startChild({ - description: "upload", - }); - - const cliInstance = new SentryCli(null, { - ...sentryCliOptions, - headers: { - "sentry-trace": uploadSpan.toTraceparent(), - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - baggage: dynamicSamplingContextToSentryBaggageHeader( - artifactBundleUploadTransaction.getDynamicSamplingContext() - )!, - ...sentryCliOptions.headers, - }, - }); - - await cliInstance.releases.uploadSourceMaps( - releaseName ?? "undefined", // unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow - { - include: [ - { - paths: [tmpUploadFolder], - rewrite: false, - dist: dist, - }, - ], - useArtifactBundle: true, - } - ); - - uploadSpan.finish(); - logger.info("Successfully uploaded source maps to Sentry"); - } - } catch (e) { - sentryHub.withScope((scope) => { - scope.setSpan(artifactBundleUploadTransaction); - sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); - }); - handleRecoverableError(e); - } finally { - if (folderToCleanUp) { - const cleanupSpan = artifactBundleUploadTransaction.startChild({ - description: "cleanup", - }); - void fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); - cleanupSpan.finish(); } - artifactBundleUploadTransaction.finish(); - freeGlobalDependencyOnSourcemapFiles(); - freeUploadDependencyOnSourcemapFiles(); - await safeFlushTelemetry(sentryClient); - } + ); }; } diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0171637631e2..e03e7beea741 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -26,6 +26,7 @@ import * as dotenv from "dotenv"; import { glob } from "glob"; import { logger } from "@sentry/utils"; import { fileDeletionPlugin } from "./plugins/sourcemap-deletion"; +import { closeSession, DEFAULT_ENVIRONMENT, makeSession } from "@sentry/core"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; @@ -117,21 +118,34 @@ export function sentryUnpluginFactory({ } const shouldSendTelemetry = allowedToSendTelemetry(options); - const { sentryHub, sentryClient } = createSentryInstance( + const { sentryScope, sentryClient } = createSentryInstance( options, shouldSendTelemetry, unpluginMetaContext.framework ); - const sentrySession = sentryHub.startSession(); - sentryHub.captureSession(); - let sentEndSession = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out - // We also need to manually end sesisons on errors because beforeExit is not called on crashes - process.on("beforeExit", () => { - if (!sentEndSession) { - sentryHub.endSession(); - sentEndSession = true; + const { release, environment = DEFAULT_ENVIRONMENT } = sentryClient.getOptions(); + + const sentrySession = makeSession({ release, environment }); + sentryScope.setSession(sentrySession); + // Send the start of the session + sentryClient.captureSession(sentrySession); + + let sessionHasEnded = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out + + function endSession() { + if (sessionHasEnded) { + return; } + + closeSession(sentrySession); + sentryClient.captureSession(sentrySession); + sessionHasEnded = true; + } + + // We also need to manually end sessions on errors because beforeExit is not called on crashes + process.on("beforeExit", () => { + endSession(); }); // Set the User-Agent that Sentry CLI will use when interacting with Sentry @@ -158,7 +172,7 @@ export function sentryUnpluginFactory({ throw unknownError; } } finally { - sentryHub.endSession(); + endSession(); } } @@ -179,7 +193,7 @@ export function sentryUnpluginFactory({ plugins.push( telemetryPlugin({ sentryClient, - sentryHub, + sentryScope, logger, shouldSendTelemetry, }) @@ -335,7 +349,7 @@ export function sentryUnpluginFactory({ deployOptions: options.release.deploy, dist: options.release.dist, handleRecoverableError: handleRecoverableError, - sentryHub, + sentryScope, sentryClient, sentryCliOptions: { authToken: options.authToken, @@ -383,7 +397,7 @@ export function sentryUnpluginFactory({ logger: logger, handleRecoverableError: handleRecoverableError, rewriteSourcesHook: options.sourcemaps?.rewriteSources, - sentryHub, + sentryScope, sentryClient, sentryCliOptions: { authToken: options.authToken, @@ -421,7 +435,7 @@ export function sentryUnpluginFactory({ options.sourcemaps?.deleteFilesAfterUpload, logger, handleRecoverableError, - sentryHub, + sentryScope, sentryClient, }) ); diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index f088ea044156..b84999a720b1 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -1,10 +1,11 @@ import SentryCli, { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; -import { Hub, NodeClient } from "@sentry/node"; +import { Scope } from "@sentry/core"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { safeFlushTelemetry } from "../sentry/telemetry"; import { IncludeEntry } from "../types"; import { arrayify } from "../utils"; +import { Client } from "@sentry/types"; interface ReleaseManagementPluginOptions { logger: Logger; @@ -16,8 +17,8 @@ interface ReleaseManagementPluginOptions { deployOptions?: SentryCliNewDeployOptions; dist?: string; handleRecoverableError: (error: unknown) => void; - sentryHub: Hub; - sentryClient: NodeClient; + sentryScope: Scope; + sentryClient: Client; sentryCliOptions: { url: string; authToken: string; @@ -39,7 +40,7 @@ export function releaseManagementPlugin({ shouldFinalizeRelease, deployOptions, handleRecoverableError, - sentryHub, + sentryScope, sentryClient, sentryCliOptions, createDependencyOnSourcemapFiles, @@ -92,7 +93,7 @@ export function releaseManagementPlugin({ await cliInstance.releases.newDeploy(releaseName, deployOptions); } } catch (e) { - sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook'); + sentryScope.captureException('Error in "releaseManagementPlugin" writeBundle hook'); await safeFlushTelemetry(sentryClient); handleRecoverableError(e); } finally { diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 97d743f24ebb..f141889605e4 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -1,22 +1,23 @@ -import { Hub, NodeClient } from "@sentry/node"; import { glob } from "glob"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { safeFlushTelemetry } from "../sentry/telemetry"; import fs from "fs"; +import { Scope } from "@sentry/core"; +import { Client } from "@sentry/types"; interface FileDeletionPlugin { handleRecoverableError: (error: unknown) => void; waitUntilSourcemapFileDependenciesAreFreed: () => Promise; - sentryHub: Hub; - sentryClient: NodeClient; + sentryScope: Scope; + sentryClient: Client; filesToDeleteAfterUpload: string | string[] | undefined; logger: Logger; } export function fileDeletionPlugin({ handleRecoverableError, - sentryHub, + sentryScope, sentryClient, filesToDeleteAfterUpload, waitUntilSourcemapFileDependenciesAreFreed, @@ -55,7 +56,7 @@ export function fileDeletionPlugin({ ); } } catch (e) { - sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + sentryScope.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); await safeFlushTelemetry(sentryClient); handleRecoverableError(e); } diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts index 7f2a7ebf10f8..cbff196b0419 100644 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ b/packages/bundler-plugin-core/src/plugins/telemetry.ts @@ -1,18 +1,19 @@ -import { Hub, NodeClient } from "@sentry/node"; +import { Scope, startSpan } from "@sentry/core"; +import { Client } from "@sentry/types"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { safeFlushTelemetry } from "../sentry/telemetry"; interface TelemetryPluginOptions { - sentryHub: Hub; - sentryClient: NodeClient; + sentryClient: Client; + sentryScope: Scope; shouldSendTelemetry: Promise; logger: Logger; } export function telemetryPlugin({ - sentryHub, sentryClient, + sentryScope, shouldSendTelemetry, logger, }: TelemetryPluginOptions): UnpluginOptions { @@ -23,7 +24,9 @@ export function telemetryPlugin({ logger.info( "Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`." ); - sentryHub.startTransaction({ name: "Sentry Bundler Plugin execution" }).finish(); + startSpan({ name: "Sentry Bundler Plugin execution", scope: sentryScope }, () => { + // + }); await safeFlushTelemetry(sentryClient); } }, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 452f605cadf9..e702c45359ea 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -1,15 +1,24 @@ import SentryCli from "@sentry/cli"; -import { defaultStackParser, Hub, makeNodeTransport, NodeClient } from "@sentry/node"; +import { Client } from "@sentry/types"; +import { applySdkMetadata, ServerRuntimeClient, ServerRuntimeClientOptions } from "@sentry/core"; import { NormalizedOptions, SENTRY_SAAS_URL } from "../options-mapping"; +import { Scope } from "@sentry/core"; +import { createStackParser, nodeStackLineParser } from "@sentry/utils"; +import { makeOptionallyEnabledNodeTransport } from "./transports"; const SENTRY_SAAS_HOSTNAME = "sentry.io"; +const stackParser = createStackParser(nodeStackLineParser()); + export function createSentryInstance( options: NormalizedOptions, shouldSendTelemetry: Promise, bundler: string -) { - const client = new NodeClient({ +): { sentryScope: Scope; sentryClient: Client } { + const clientOptions: ServerRuntimeClientOptions = { + platform: "node", + runtime: { name: "node", version: global.process.version }, + dsn: "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", tracesSampleRate: 1, @@ -19,7 +28,7 @@ export function createSentryInstance( integrations: [], tracePropagationTargets: ["sentry.io/api"], - stackParser: defaultStackParser, + stackParser, beforeSend: (event) => { event.exception?.values?.forEach((exception) => { @@ -37,76 +46,68 @@ export function createSentryInstance( // We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told // us that the upload URL is the Sentry SaaS URL) - transport: (nodeTransportOptions) => { - const nodeTransport = makeNodeTransport(nodeTransportOptions); - return { - flush: (timeout) => nodeTransport.flush(timeout), - send: async (request) => { - if (await shouldSendTelemetry) { - return nodeTransport.send(request); - } else { - return undefined; - } - }, - }; - }, - }); + transport: makeOptionallyEnabledNodeTransport(shouldSendTelemetry), + }; + + applySdkMetadata(clientOptions, "node"); - const hub = new Hub(client); + const client = new ServerRuntimeClient(clientOptions); + const scope = new Scope(); + scope.setClient(client); - setTelemetryDataOnHub(options, hub, bundler); + setTelemetryDataOnScope(options, scope, bundler); - return { sentryHub: hub, sentryClient: client }; + return { sentryScope: scope, sentryClient: client }; } -export function setTelemetryDataOnHub(options: NormalizedOptions, hub: Hub, bundler: string) { +export function setTelemetryDataOnScope(options: NormalizedOptions, scope: Scope, bundler: string) { const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; - hub.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); + scope.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); if (release.uploadLegacySourcemaps) { - hub.setTag( + scope.setTag( "uploadLegacySourcemapsEntries", Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1 ); } - hub.setTag("module-metadata", !!options.moduleMetadata); - hub.setTag("inject-build-information", !!options._experiments.injectBuildInformation); + scope.setTag("module-metadata", !!options.moduleMetadata); + scope.setTag("inject-build-information", !!options._experiments.injectBuildInformation); // Optional release pipeline steps if (release.setCommits) { - hub.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); + scope.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); } else { - hub.setTag("set-commits", "undefined"); + scope.setTag("set-commits", "undefined"); } - hub.setTag("finalize-release", release.finalize); - hub.setTag("deploy-options", !!release.deploy); + scope.setTag("finalize-release", release.finalize); + scope.setTag("deploy-options", !!release.deploy); - // Miscelaneous options - hub.setTag("custom-error-handler", !!errorHandler); - hub.setTag("sourcemaps-assets", !!sourcemaps?.assets); - hub.setTag( + // Miscellaneous options + scope.setTag("custom-error-handler", !!errorHandler); + scope.setTag("sourcemaps-assets", !!sourcemaps?.assets); + scope.setTag( "delete-after-upload", !!sourcemaps?.deleteFilesAfterUpload || !!sourcemaps?.filesToDeleteAfterUpload ); - hub.setTag("sourcemaps-disabled", !!sourcemaps?.disable); + scope.setTag("sourcemaps-disabled", !!sourcemaps?.disable); - hub.setTag("react-annotate", !!reactComponentAnnotation?.enabled); + scope.setTag("react-annotate", !!reactComponentAnnotation?.enabled); - hub.setTag("node", process.version); - hub.setTag("platform", process.platform); + scope.setTag("node", process.version); + scope.setTag("platform", process.platform); - hub.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none"); + scope.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none"); - hub.setTag("application-key-set", options.applicationKey !== undefined); + scope.setTag("application-key-set", options.applicationKey !== undefined); - hub.setTags({ + scope.setTags({ organization: org, project, bundler, }); - hub.setUser({ id: org }); + scope.setUser({ id: org }); } export async function allowedToSendTelemetry(options: NormalizedOptions): Promise { @@ -157,7 +158,7 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis /** * Flushing the SDK client can fail. We never want to crash the plugin because of telemetry. */ -export async function safeFlushTelemetry(sentryClient: NodeClient) { +export async function safeFlushTelemetry(sentryClient: Client) { try { await sentryClient.flush(2000); } catch { diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugin-core/src/sentry/transports.ts new file mode 100644 index 000000000000..d85923bc1d7f --- /dev/null +++ b/packages/bundler-plugin-core/src/sentry/transports.ts @@ -0,0 +1,129 @@ +/** + * This is a simplified version of the Sentry Node SDK's HTTP transport. + */ +import * as https from "node:https"; +import { Readable } from "node:stream"; +import { createGzip } from "node:zlib"; +import { createTransport, suppressTracing } from "@sentry/core"; +import type { + BaseTransportOptions, + Transport, + TransportMakeRequestResponse, + TransportRequest, + TransportRequestExecutor, +} from "@sentry/types"; + +// Estimated maximum size for reasonable standalone event +const GZIP_THRESHOLD = 1024 * 32; + +/** + * Gets a stream from a Uint8Array or string + * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0 + */ +function streamFromBody(body: Uint8Array | string): Readable { + return new Readable({ + read() { + this.push(body); + this.push(null); + }, + }); +} + +/** + * Creates a RequestExecutor to be used with `createTransport`. + */ +function createRequestExecutor(options: BaseTransportOptions): TransportRequestExecutor { + const { hostname, pathname, port, protocol, search } = new URL(options.url); + return function makeRequest(request: TransportRequest): Promise { + return new Promise((resolve, reject) => { + suppressTracing(() => { + let body = streamFromBody(request.body); + + const headers: Record = {}; + + if (request.body.length > GZIP_THRESHOLD) { + headers["content-encoding"] = "gzip"; + body = body.pipe(createGzip()); + } + + const req = https.request( + { + method: "POST", + headers, + hostname, + path: `${pathname}${search}`, + port, + protocol, + }, + (res) => { + res.on("data", () => { + // Drain socket + }); + + res.on("end", () => { + // Drain socket + }); + + res.setEncoding("utf8"); + + // "Key-value pairs of header names and values. Header names are lower-cased." + // https://nodejs.org/api/http.html#http_message_headers + const retryAfterHeader = res.headers["retry-after"] ?? null; + const rateLimitsHeader = res.headers["x-sentry-rate-limits"] ?? null; + + resolve({ + statusCode: res.statusCode, + headers: { + "retry-after": retryAfterHeader, + "x-sentry-rate-limits": Array.isArray(rateLimitsHeader) + ? rateLimitsHeader[0] || null + : rateLimitsHeader, + }, + }); + } + ); + + req.on("error", reject); + body.pipe(req); + }); + }); + }; +} + +/** + * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry. + */ +function makeNodeTransport(options: BaseTransportOptions) { + const requestExecutor = createRequestExecutor(options); + return createTransport(options, requestExecutor); +} + +/** A transport that can be optionally enabled as a later time than it's + * creation */ +export function makeOptionallyEnabledNodeTransport( + shouldSendTelemetry: Promise +): (options: BaseTransportOptions) => Transport { + return (nodeTransportOptions) => { + const nodeTransport = makeNodeTransport(nodeTransportOptions); + return { + flush: (timeout) => nodeTransport.flush(timeout), + send: async (request) => { + // If global.__SENTRY_INTERCEPT_TRANSPORT__ is an array, we push the + // envelope into it for testing purposes. + if ( + "__SENTRY_INTERCEPT_TRANSPORT__" in global && + Array.isArray(global.__SENTRY_INTERCEPT_TRANSPORT__) + ) { + global.__SENTRY_INTERCEPT_TRANSPORT__.push(request); + return { statusCode: 200 }; + } + + if (await shouldSendTelemetry) { + return nodeTransport.send(request); + } + + return { statusCode: 200 }; + }, + }; + }; +} diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index aa521145c781..c42e5b1009f4 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -124,6 +124,7 @@ export interface Options { * * Defaults to making all sources relative to `process.cwd()` while building. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any rewriteSources?: (source: string, map: any) => string; /** diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 213775a847a6..77b977a127c9 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,6 +1,6 @@ -import { Hub } from "@sentry/node"; +import { Scope } from "@sentry/core"; import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; -import { allowedToSendTelemetry, setTelemetryDataOnHub } from "../../src/sentry/telemetry"; +import { allowedToSendTelemetry, setTelemetryDataOnScope } from "../../src/sentry/telemetry"; const mockCliExecute = jest.fn(); jest.mock( @@ -31,8 +31,8 @@ describe("shouldSendTelemetry", () => { }); }); -describe("addPluginOptionTagsToHub", () => { - const mockedHub = { +describe("addPluginOptionTagsToScope", () => { + const mockedScope = { setTag: jest.fn(), setTags: jest.fn(), setUser: jest.fn(), @@ -47,40 +47,40 @@ describe("addPluginOptionTagsToHub", () => { }); it("should set include tag according to number of entries (single entry)", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( normalizeUserOptions(defaultOptions), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); + expect(mockedScope.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); }); it("should set include tag according to number of entries (multiple entries)", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( normalizeUserOptions({ release: { uploadLegacySourcemaps: ["", "", ""] } }), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 3); + expect(mockedScope.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 3); }); it("should set deploy tag to true if the deploy option is specified", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( normalizeUserOptions({ ...defaultOptions, release: { deploy: { env: "production" } } }), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("deploy-options", true); + expect(mockedScope.setTag).toHaveBeenCalledWith("deploy-options", true); }); it("should set errorHandler tag to `custom` if the errorHandler option is specified", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( // eslint-disable-next-line @typescript-eslint/no-empty-function normalizeUserOptions({ ...defaultOptions, errorHandler: () => {} }), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("custom-error-handler", true); + expect(mockedScope.setTag).toHaveBeenCalledWith("custom-error-handler", true); }); it.each([ @@ -89,40 +89,40 @@ describe("addPluginOptionTagsToHub", () => { ])( `should set setCommits tag to %s if the setCommits option is %s`, (expectedValue, commitOptions) => { - setTelemetryDataOnHub( - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + setTelemetryDataOnScope( + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any normalizeUserOptions({ ...defaultOptions, release: { setCommits: commitOptions as any } }), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("set-commits", expectedValue); + expect(mockedScope.setTag).toHaveBeenCalledWith("set-commits", expectedValue); } ); it("sets all simple tags correctly", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( normalizeUserOptions({ ...defaultOptions, release: { finalize: true, }, }), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); + expect(mockedScope.setTag).toHaveBeenCalledWith("finalize-release", true); }); it("shouldn't set any tags other than include if no opional options are specified", () => { - setTelemetryDataOnHub( + setTelemetryDataOnScope( normalizeUserOptions(defaultOptions), - mockedHub as unknown as Hub, + mockedScope as unknown as Scope, "rollup" ); - expect(mockedHub.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); - expect(mockedHub.setTag).toHaveBeenCalledWith("finalize-release", true); - expect(mockedHub.setTag).toHaveBeenCalledWith("node", expect.any(String)); + expect(mockedScope.setTag).toHaveBeenCalledWith("uploadLegacySourcemapsEntries", 0); + expect(mockedScope.setTag).toHaveBeenCalledWith("finalize-release", true); + expect(mockedScope.setTag).toHaveBeenCalledWith("node", expect.any(String)); }); }); diff --git a/packages/integration-tests/fixtures/telemetry/input/bundle1.js b/packages/integration-tests/fixtures/telemetry/input/bundle1.js new file mode 100644 index 000000000000..fbf083a4d001 --- /dev/null +++ b/packages/integration-tests/fixtures/telemetry/input/bundle1.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("bundle1"); diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts new file mode 100644 index 000000000000..5015cfdf4df0 --- /dev/null +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -0,0 +1,148 @@ +/* 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"; + +function getGlobalWithInterceptor(): typeof global & { + __SENTRY_INTERCEPT_TRANSPORT__?: unknown[]; +} { + return global; +} + +test("rollup bundle telemetry", async () => { + const gbl = getGlobalWithInterceptor(); + gbl.__SENTRY_INTERCEPT_TRANSPORT__ = []; + + await rollup + .rollup({ + input: { bundle1: path.resolve(__dirname, "input", "bundle1.js") }, + plugins: [ + sentryRollupPlugin({ + release: { + inject: false, + }, + telemetry: true, + }), + ], + }) + .then((bundle) => + bundle.write({ + sourcemap: true, + dir: path.join(path.resolve(__dirname, "out"), "rollup"), + format: "cjs", + exports: "named", + }) + ); + + // Ensure the session gets closed + process.emit("beforeExit", 0); + + expect(gbl.__SENTRY_INTERCEPT_TRANSPORT__).toEqual([ + // Fist we should have a session start + expect.arrayContaining([ + [ + [ + { type: "session" }, + expect.objectContaining({ + sid: expect.any(String), + init: true, + started: expect.any(String), + timestamp: expect.any(String), + status: "ok", + errors: 0, + }), + ], + ], + ]), + // Then we should get a transaction for execution + [ + { + event_id: expect.any(String), + sent_at: expect.any(String), + sdk: { name: "sentry.javascript.node", version: expect.any(String) }, + trace: expect.objectContaining({ + environment: "production", + release: expect.any(String), + sample_rate: "1", + transaction: "Sentry Bundler Plugin execution", + sampled: "true", + }), + }, + [ + [ + { type: "transaction" }, + expect.objectContaining({ + contexts: { + trace: { + span_id: expect.any(String), + trace_id: expect.any(String), + data: { + "sentry.origin": "manual", + "sentry.source": "custom", + "sentry.sample_rate": 1, + }, + origin: "manual", + }, + runtime: { name: "node", version: expect.any(String) }, + }, + spans: [], + start_timestamp: expect.any(Number), + timestamp: expect.any(Number), + transaction: "Sentry Bundler Plugin execution", + type: "transaction", + transaction_info: { source: "custom" }, + platform: "node", + event_id: expect.any(String), + environment: "production", + release: expect.any(String), + tags: expect.objectContaining({ + "upload-legacy-sourcemaps": false, + "module-metadata": false, + "inject-build-information": false, + "set-commits": "undefined", + "finalize-release": true, + "deploy-options": false, + "custom-error-handler": false, + "sourcemaps-assets": false, + "delete-after-upload": false, + "sourcemaps-disabled": false, + "react-annotate": false, + "meta-framework": "none", + "application-key-set": false, + bundler: "rollup", + }), + sdk: expect.objectContaining({ + name: "sentry.javascript.node", + version: expect.any(String), + packages: [{ name: "npm:@sentry/node", version: expect.any(String) }], + }), + }), + ], + ], + ], + // Then we should get a session exit + [ + { + sent_at: expect.any(String), + sdk: { name: "sentry.javascript.node", version: expect.any(String) }, + }, + [ + [ + { type: "session" }, + { + sid: expect.any(String), + init: false, + started: expect.any(String), + timestamp: expect.any(String), + status: "exited", + errors: 0, + duration: expect.any(Number), + attrs: { release: expect.any(String), environment: "production" }, + }, + ], + ], + ], + ]); +}); diff --git a/yarn.lock b/yarn.lock index 271ca604b57d..5b0a8755fce4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2716,15 +2716,6 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@sentry-internal/tracing@7.102.0": - version "7.102.0" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.102.0.tgz#24cf662e1eb5623f6d5197e78c66d7b257560eb8" - integrity sha512-BlE33HWL1IzkGa0W+pwTiyu01MUIfYf+WnO9UC8qkDW3jxVvg2zhoSjXSxikT+KPCOgoZpQHspaTzwjnI1LCvw== - dependencies: - "@sentry/core" "7.102.0" - "@sentry/types" "7.102.0" - "@sentry/utils" "7.102.0" - "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -2789,14 +2780,6 @@ "@sentry/cli-win32-i686" "2.36.1" "@sentry/cli-win32-x64" "2.36.1" -"@sentry/core@7.102.0": - version "7.102.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.102.0.tgz#da5e04a5fe97ed91464944dac40b813e6f8aa453" - integrity sha512-GO9eLOSBK1waW4AD0wDXAreaNqXFQ1MPQZrkKcN+GJYEFhJK1+u+MSV7vO5Fs/rIfaTZIZ2jtEkxSSAOucE8EQ== - dependencies: - "@sentry/types" "7.102.0" - "@sentry/utils" "7.102.0" - "@sentry/core@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" @@ -2806,6 +2789,14 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" +"@sentry/core@8.30.0": + version "8.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-8.30.0.tgz#f929e42e9a537bfa3eb6024082714e9ab98d822b" + integrity sha512-CJ/FuWLw0QEKGKXGL/nm9eaOdajEcmPekLuHAuOCxID7N07R9l9laz3vFbAkUZ97GGDv3sYrJZgywfY3Moropg== + dependencies: + "@sentry/types" "8.30.0" + "@sentry/utils" "8.30.0" + "@sentry/integrations@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" @@ -2816,16 +2807,6 @@ localforage "^1.8.1" tslib "^1.9.3" -"@sentry/node@7.102.0": - version "7.102.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.102.0.tgz#f2853bad8650b1f94a57ae3bafad3440740f98ab" - integrity sha512-ZS1s2uO/+K4rHkmWjyqm5Jtl6dT7klbZSMvn4tfIpkfWuqrs7pP0jaATyvmF+96z3lpq6fRAJliV5tRqPy7w5Q== - dependencies: - "@sentry-internal/tracing" "7.102.0" - "@sentry/core" "7.102.0" - "@sentry/types" "7.102.0" - "@sentry/utils" "7.102.0" - "@sentry/node@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" @@ -2840,22 +2821,15 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/types@7.102.0": - version "7.102.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.102.0.tgz#b31e9faa54036053ab82c09c3c855035a4889c59" - integrity sha512-FPfFBP0x3LkPARw1/6cWySLq1djIo8ao3Qo2KNBeE9CHdq8bsS1a8zzjJLuWG4Ww+wieLP8/lY3WTgrCz4jowg== - "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/utils@7.102.0": - version "7.102.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.102.0.tgz#66325f2567986cc3fd12fbdb980fb8ada170342b" - integrity sha512-cp5KCRe0slOVMwG4iP2Z4UajQkjryRTiFskZ5H7Q3X9R5voM8+DAhiDcIW88GL9NxqyUrAJOjmKdeLK2vM+bdA== - dependencies: - "@sentry/types" "7.102.0" +"@sentry/types@8.30.0": + version "8.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-8.30.0.tgz#5f5011f5b16bafd30a039ca5e8c337e948c703fb" + integrity sha512-kgWW2BCjBmVlSQRG32GonHEVyeDbys74xf9mLPvynwHTgw3+NUlNAlEdu05xnb2ow4bCTHfbkS5G1zRgyv5k4Q== "@sentry/utils@7.50.0": version "7.50.0" @@ -2865,6 +2839,13 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" +"@sentry/utils@8.30.0": + version "8.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-8.30.0.tgz#2343dd8593ea83890b3e0d792ed3fa257955a26b" + integrity sha512-wZxU2HWlzsnu8214Xy7S7cRIuD6h8Z5DnnkojJfX0i0NLooepZQk2824el1Q13AakLb7/S8CHSHXOMnCtoSduw== + dependencies: + "@sentry/types" "8.30.0" + "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" From b8b5b55115193288c351ac17856d1d105d5d6af2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 23 Sep 2024 11:35:39 +0200 Subject: [PATCH 411/640] meta: Update changelog for 2.22.5 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b417ab456409..377626703264 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.5 + +- feat: Update Sentry telemetry to v8 (#604) +- deps: Update `@sentry/cli` to `2.36.1` (#609) + ## 2.22.4 - feat(react-component-annotate): Handle function body returning a ternary (#598) From 75a5d1debb8793a572ab495361b613138b452bb2 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 24 Sep 2024 10:13:50 +0200 Subject: [PATCH 412/640] fix: Ignore stderr output from git command (#613) --- packages/bundler-plugin-core/src/utils.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 67bef5532932..948d51c80cd5 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -198,7 +198,10 @@ export function stringToUUID(str: string): string { function gitRevision(): string | undefined { let gitRevision: string | undefined; try { - gitRevision = childProcess.execSync("git rev-parse HEAD").toString().trim(); + gitRevision = childProcess + .execSync("git rev-parse HEAD", { stdio: ["ignore", "pipe", "ignore"] }) + .toString() + .trim(); } catch (e) { // noop } From 42c241174e148e62eae089396893ebedd3787099 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 2 Oct 2024 12:14:24 +0200 Subject: [PATCH 413/640] meta: Update changelog for 2.22.5 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 377626703264..e37a6856fc44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ## 2.22.5 +- fix: Ignore stderr output from git command (#613) - feat: Update Sentry telemetry to v8 (#604) - deps: Update `@sentry/cli` to `2.36.1` (#609) From a3c6cc982ad112752c24ab84e089b12bb0151d04 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 2 Oct 2024 10:18:48 +0000 Subject: [PATCH 414/640] release: 2.22.5 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 899e8c8108fb..0b60f39338d1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.4", + "version": "2.22.5", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index c9f2779b74fd..6026a71037fe 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.4", + "version": "2.22.5", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b5ba8025ee78..c80417c5ebbe 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.4", + "version": "2.22.5", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.4", + "@sentry/babel-plugin-component-annotate": "2.22.5", "@sentry/cli": "^2.36.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6e33ab2e6aed..50159b21d1f8 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 16fb0a2c10dd..d99b1071fbca 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.4", - "@sentry/rollup-plugin": "2.22.4", - "@sentry/vite-plugin": "2.22.4", - "@sentry/webpack-plugin": "2.22.4", + "@sentry/esbuild-plugin": "2.22.5", + "@sentry/rollup-plugin": "2.22.5", + "@sentry/vite-plugin": "2.22.5", + "@sentry/webpack-plugin": "2.22.5", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index ddca56a5be21..1bf5d81ad5b3 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.4", + "version": "2.22.5", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.5", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 39047cfc20f3..df22ee85df88 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1e7260001b70..dcfcab515401 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", - "@sentry/bundler-plugin-core": "2.22.4", - "@sentry/esbuild-plugin": "2.22.4", - "@sentry/rollup-plugin": "2.22.4", - "@sentry/vite-plugin": "2.22.4", - "@sentry/webpack-plugin": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/esbuild-plugin": "2.22.5", + "@sentry/rollup-plugin": "2.22.5", + "@sentry/vite-plugin": "2.22.5", + "@sentry/webpack-plugin": "2.22.5", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index d73595645161..b0c3322789d2 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.5", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index bff6004d1252..7f6c4947949e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.4", + "version": "2.22.5", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.5", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index faeda22ed6af..b289e4f3a793 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.4", + "version": "2.22.5", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6ef2a3555dbc..f5ce469bdd5c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.4", + "version": "2.22.5", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.5", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f6d4340eea05..d0b6e10af4e9 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.4", + "version": "2.22.5", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.4", + "@sentry/bundler-plugin-core": "2.22.5", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.4", + "@sentry-internal/eslint-config": "2.22.5", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From de626ecff26b8e509b72c4fc98289a2ecd930b60 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 17 Oct 2024 13:15:07 +0200 Subject: [PATCH 415/640] fix(core): Use sha256 instead of md5 to generate uuids from string (#619) --- packages/bundler-plugin-core/src/utils.ts | 16 +++++++--------- packages/bundler-plugin-core/test/utils.test.ts | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 948d51c80cd5..3c8a92fa2b13 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -173,25 +173,23 @@ function lookupPackageJson(cwd: string, stopAt: string): PackageJson | undefined * Deterministically hashes a string and turns the hash into a uuid. */ export function stringToUUID(str: string): string { - const md5sum = crypto.createHash("md5"); - md5sum.update(str); - const md5Hash = md5sum.digest("hex"); + const sha256Hash = crypto.createHash("sha256").update(str).digest("hex"); // Position 16 is fixed to either 8, 9, a, or b in the uuid v4 spec (10xx in binary) // RFC 4122 section 4.4 - const v4variant = ["8", "9", "a", "b"][md5Hash.substring(16, 17).charCodeAt(0) % 4] as string; + const v4variant = ["8", "9", "a", "b"][sha256Hash.substring(16, 17).charCodeAt(0) % 4] as string; return ( - md5Hash.substring(0, 8) + + sha256Hash.substring(0, 8) + "-" + - md5Hash.substring(8, 12) + + sha256Hash.substring(8, 12) + "-4" + - md5Hash.substring(13, 16) + + sha256Hash.substring(13, 16) + "-" + v4variant + - md5Hash.substring(17, 20) + + sha256Hash.substring(17, 20) + "-" + - md5Hash.substring(20) + sha256Hash.substring(20, 32) ).toLowerCase(); } diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index aaa9875c7513..3819e39c95b7 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -179,7 +179,7 @@ describe("getDependencies", () => { describe("stringToUUID", () => { test("should return a deterministic UUID", () => { - expect(stringToUUID("Nothing personnel kid")).toBe("52c7a762-5ddf-49a7-af16-6874a8cb2512"); + expect(stringToUUID("Nothing personnel kid")).toBe("95543648-7392-49e4-b46a-67dfd0235986"); }); }); From e387b5b21ee2f88f6ec6185a1f9be1d0814a1ac5 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 18 Oct 2024 10:12:18 +0200 Subject: [PATCH 416/640] meta: Update changelog for 2.22.6 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e37a6856fc44..3b7686e1cc4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.6 + +- fix(core): Use sha256 instead of md5 to generate uuids from string (#619) + ## 2.22.5 - fix: Ignore stderr output from git command (#613) From 3a8298640c95af52b9c4a3230b5c7dc7330efc9d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 18 Oct 2024 08:13:30 +0000 Subject: [PATCH 417/640] release: 2.22.6 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 0b60f39338d1..78c77822692d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.5", + "version": "2.22.6", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 6026a71037fe..1f1b22841612 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.5", + "version": "2.22.6", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index c80417c5ebbe..ab290b118f3a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.5", + "version": "2.22.6", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.5", + "@sentry/babel-plugin-component-annotate": "2.22.6", "@sentry/cli": "^2.36.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 50159b21d1f8..cdd24b428e3a 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index d99b1071fbca..7150dafe249d 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.5", - "@sentry/rollup-plugin": "2.22.5", - "@sentry/vite-plugin": "2.22.5", - "@sentry/webpack-plugin": "2.22.5", + "@sentry/esbuild-plugin": "2.22.6", + "@sentry/rollup-plugin": "2.22.6", + "@sentry/vite-plugin": "2.22.6", + "@sentry/webpack-plugin": "2.22.6", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1bf5d81ad5b3..391dec3af97b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.5", + "version": "2.22.6", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index df22ee85df88..5105ca4b93e8 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index dcfcab515401..be5bec627f0f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", - "@sentry/bundler-plugin-core": "2.22.5", - "@sentry/esbuild-plugin": "2.22.5", - "@sentry/rollup-plugin": "2.22.5", - "@sentry/vite-plugin": "2.22.5", - "@sentry/webpack-plugin": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/esbuild-plugin": "2.22.6", + "@sentry/rollup-plugin": "2.22.6", + "@sentry/vite-plugin": "2.22.6", + "@sentry/webpack-plugin": "2.22.6", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index b0c3322789d2..38a2edfe5e1d 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.6", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 7f6c4947949e..0b40d7ebc3ba 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.5", + "version": "2.22.6", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b289e4f3a793..22e298715b89 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.5", + "version": "2.22.6", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index f5ce469bdd5c..45d80530bcb7 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.5", + "version": "2.22.6", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d0b6e10af4e9..5dee0b4209b9 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.5", + "version": "2.22.6", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.5", + "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.5", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.5", + "@sentry-internal/eslint-config": "2.22.6", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From f7c468d9b85c95fe15ce66a124bbf83a6b4d3c15 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Mon, 28 Oct 2024 09:30:45 +0000 Subject: [PATCH 418/640] chore: Log only to stderr (#624) --- .../bundler-plugin-core/src/sentry/logger.ts | 9 +++++---- .../test/sentry/logger.test.ts | 16 ++++++++-------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index 3e5fecad2463..b4bb45e2b861 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -11,30 +11,31 @@ export type Logger = { debug(message: string, ...params: unknown[]): void; }; +// Logging everything to stderr not to interfere with stdout export function createLogger(options: LoggerOptions): Logger { return { info(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Info: ${message}`, ...params); + console.error(`${options.prefix} Info: ${message}`, ...params); } }, warn(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Warning: ${message}`, ...params); + console.error(`${options.prefix} Warning: ${message}`, ...params); } }, error(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Error: ${message}`, ...params); + console.error(`${options.prefix} Error: ${message}`, ...params); } }, debug(message: string, ...params: unknown[]) { if (!options.silent && options.debug) { // eslint-disable-next-line no-console - console.log(`${options.prefix} Debug: ${message}`, ...params); + console.error(`${options.prefix} Debug: ${message}`, ...params); } }, }; diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index a51aab456bc5..efb99df29c69 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -1,10 +1,10 @@ import { createLogger } from "../../src/sentry/logger"; describe("Logger", () => { - const consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => undefined); + const consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => undefined); afterEach(() => { - consoleLogSpy.mockReset(); + consoleErrorSpy.mockReset(); }); it.each([ @@ -17,7 +17,7 @@ describe("Logger", () => { logger[loggerMethod]("Hey!"); - expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); + expect(consoleErrorSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); }); it.each([ @@ -30,7 +30,7 @@ describe("Logger", () => { logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); - expect(consoleLogSpy).toHaveBeenCalledWith( + expect(consoleErrorSpy).toHaveBeenCalledWith( `[some-prefix] ${logLevel}: Hey!`, "this", "is", @@ -46,7 +46,7 @@ describe("Logger", () => { logger.debug("Hey!"); - expect(consoleLogSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); + expect(consoleErrorSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); }); it(".debug() should log multiple params correctly", () => { @@ -55,7 +55,7 @@ describe("Logger", () => { logger.debug("Hey!", "this", "is", "a test with", 5, "params"); - expect(consoleLogSpy).toHaveBeenCalledWith( + expect(consoleErrorSpy).toHaveBeenCalledWith( `[some-prefix] Debug: Hey!`, "this", "is", @@ -72,7 +72,7 @@ describe("Logger", () => { logger[loggerMethod]("Hey!"); - expect(consoleLogSpy).not.toHaveBeenCalled(); + expect(consoleErrorSpy).not.toHaveBeenCalled(); }); }); @@ -82,6 +82,6 @@ describe("Logger", () => { logger.debug("Hey!"); - expect(consoleLogSpy).not.toHaveBeenCalled(); + expect(consoleErrorSpy).not.toHaveBeenCalled(); }); }); From 040814d43e62f419ce9da4a055fde13bc3216f30 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 31 Oct 2024 11:24:02 +0100 Subject: [PATCH 419/640] feat(telemetry): Record if plugin is run in CI (#627) --- packages/bundler-plugin-core/src/sentry/telemetry.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index e702c45359ea..52bea300697a 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -101,6 +101,8 @@ export function setTelemetryDataOnScope(options: NormalizedOptions, scope: Scope scope.setTag("application-key-set", options.applicationKey !== undefined); + scope.setTag("ci", !!process.env["CI"]); + scope.setTags({ organization: org, project, From 7dfea7bad45c825090819bdca09017649a4a5e38 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 29 Nov 2024 13:04:43 +0100 Subject: [PATCH 420/640] deps: Bump `@sentry/cli` to `2.39.1` and require specific version (#632) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 92 +++++++++++------------ 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ab290b118f3a..7d6ad4a9a3ce 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "2.22.6", - "@sentry/cli": "^2.36.1", + "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index 5b0a8755fce4..474cfb66d2b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,45 +2726,45 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz#786adf6984dbe3c6fb7dac51b625c314117b807d" - integrity sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww== - -"@sentry/cli-linux-arm64@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz#ff449d7e7e715166257998c02cf635ca02acbadd" - integrity sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw== - -"@sentry/cli-linux-arm@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz#1ae5d335a1b4cd217a34c2bd6c6f5e0670136eb3" - integrity sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A== - -"@sentry/cli-linux-i686@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz#112b9e26357e918cbbba918114ec8cdab07cdf60" - integrity sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA== - -"@sentry/cli-linux-x64@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz#c3e5bdb0c9a4bb44c83927c62a3cd7e006709bf7" - integrity sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw== - -"@sentry/cli-win32-i686@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz#819573320e885e1dbf59b0a01d3bd370c84c1708" - integrity sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA== - -"@sentry/cli-win32-x64@2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz#80779b4bffb4e2e32944eae72c60e6f40151b4dc" - integrity sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g== - -"@sentry/cli@^2.36.1": - version "2.36.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.36.1.tgz#a9146b798cb6d2f782a7a48d74633ddcd88dc8d3" - integrity sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw== +"@sentry/cli-darwin@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz#75c338a53834b4cf72f57599f4c72ffb36cf0781" + integrity sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ== + +"@sentry/cli-linux-arm64@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz#27db44700c33fcb1e8966257020b43f8494373e6" + integrity sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw== + +"@sentry/cli-linux-arm@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz#451683fa9a5a60b1359d104ec71334ed16f4b63c" + integrity sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ== + +"@sentry/cli-linux-i686@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz#9965a81f97a94e8b6d1d15589e43fee158e35201" + integrity sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg== + +"@sentry/cli-linux-x64@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz#31fe008b02f92769543dc9919e2a5cbc4cda7889" + integrity sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA== + +"@sentry/cli-win32-i686@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz#609e8790c49414011445e397130560c777850b35" + integrity sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q== + +"@sentry/cli-win32-x64@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz#1a874a5570c6d162b35d9d001c96e5389d07d2cb" + integrity sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw== + +"@sentry/cli@2.39.1": + version "2.39.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz#916bb5b7567ccf7fdf94ef6cf8a2b9ab78370d29" + integrity sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2772,13 +2772,13 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.36.1" - "@sentry/cli-linux-arm" "2.36.1" - "@sentry/cli-linux-arm64" "2.36.1" - "@sentry/cli-linux-i686" "2.36.1" - "@sentry/cli-linux-x64" "2.36.1" - "@sentry/cli-win32-i686" "2.36.1" - "@sentry/cli-win32-x64" "2.36.1" + "@sentry/cli-darwin" "2.39.1" + "@sentry/cli-linux-arm" "2.39.1" + "@sentry/cli-linux-arm64" "2.39.1" + "@sentry/cli-linux-i686" "2.39.1" + "@sentry/cli-linux-x64" "2.39.1" + "@sentry/cli-win32-i686" "2.39.1" + "@sentry/cli-win32-x64" "2.39.1" "@sentry/core@7.50.0": version "7.50.0" From 514055a1dbcf80cf4ca60967b233696e50e0b11d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 29 Nov 2024 18:16:57 +0100 Subject: [PATCH 421/640] meta: Update changelog for 2.22.7 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b7686e1cc4c..11a1c41efde9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.22.7 + +- deps: Bump `@sentry/cli` to `2.39.1` and require specific version (#632) +- feat(telemetry): Record if plugin is run in CI (#627) + ## 2.22.6 - fix(core): Use sha256 instead of md5 to generate uuids from string (#619) From 31978d7a3fc278f42b5f1fbbc72d27dd34426f98 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 29 Nov 2024 17:18:09 +0000 Subject: [PATCH 422/640] release: 2.22.7 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 78c77822692d..b6246f4ce5a0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.6", + "version": "2.22.7", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 1f1b22841612..53e32009998c 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.6", + "version": "2.22.7", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7d6ad4a9a3ce..3d47a19c4486 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.6", + "version": "2.22.7", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.6", + "@sentry/babel-plugin-component-annotate": "2.22.7", "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index cdd24b428e3a..0094f20b013d 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 7150dafe249d..5862ce5d7e96 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.6", - "@sentry/rollup-plugin": "2.22.6", - "@sentry/vite-plugin": "2.22.6", - "@sentry/webpack-plugin": "2.22.6", + "@sentry/esbuild-plugin": "2.22.7", + "@sentry/rollup-plugin": "2.22.7", + "@sentry/vite-plugin": "2.22.7", + "@sentry/webpack-plugin": "2.22.7", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 391dec3af97b..bc8a0badac06 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.6", + "version": "2.22.7", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 5105ca4b93e8..bbd7d625f769 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index be5bec627f0f..9c98fad1ad04 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", - "@sentry/bundler-plugin-core": "2.22.6", - "@sentry/esbuild-plugin": "2.22.6", - "@sentry/rollup-plugin": "2.22.6", - "@sentry/vite-plugin": "2.22.6", - "@sentry/webpack-plugin": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/esbuild-plugin": "2.22.7", + "@sentry/rollup-plugin": "2.22.7", + "@sentry/vite-plugin": "2.22.7", + "@sentry/webpack-plugin": "2.22.7", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 38a2edfe5e1d..1c4968d671c3 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 0b40d7ebc3ba..1de5a5a99f60 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.6", + "version": "2.22.7", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 22e298715b89..b102bd6f27fe 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.6", + "version": "2.22.7", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 45d80530bcb7..6bfe405f9961 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.6", + "version": "2.22.7", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 5dee0b4209b9..2b32d0b412ea 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.6", + "version": "2.22.7", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.6", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.6", + "@sentry-internal/eslint-config": "2.22.7", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 10e46898786ad9d558429cc2a357306a33a1c501 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 5 Dec 2024 12:55:21 +0100 Subject: [PATCH 423/640] feat(core): Write module injections to `globalThis` (#636) --- .../sentry-esbuild-debugid-injection-file.js | 2 ++ packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 10 +++++++--- packages/bundler-plugin-core/test/index.test.ts | 2 +- packages/bundler-plugin-core/test/utils.test.ts | 4 ++++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index 6135fac33d40..ac913e2e6ac2 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -4,6 +4,8 @@ try { ? window : "undefined" != typeof global ? global + : "undefined" != typeof globalThis + ? global : "undefined" != typeof self ? self : {}; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e03e7beea741..1a0dd7c15e32 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -700,7 +700,7 @@ export function createComponentNameAnnotateHooks() { } export function getDebugIdSnippet(debugId: string): string { - return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; + return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; } export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 3c8a92fa2b13..55a747fe4947 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -318,9 +318,11 @@ export function generateGlobalInjectorCode({ window : typeof global !== 'undefined' ? global : - typeof self !== 'undefined' ? - self : - {}; + typeof globalThis !== 'undefined' ? + globalThis : + typeof self !== 'undefined' ? + self : + {}; _global.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; @@ -345,6 +347,8 @@ export function generateModuleMetadataInjectorCode(metadata: any) { ? window : typeof global !== "undefined" ? global + : typeof globalThis !== "undefined" + ? globalThis : typeof self !== "undefined" ? self : {}; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 51d0fd57dc76..71ad97bb3887 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -4,7 +4,7 @@ describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); expect(snippet).toMatchInlineSnapshot( - `";!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof self?self:{},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:{},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/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 3819e39c95b7..b996a47c2373 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -226,6 +226,8 @@ describe("generateModuleMetadataInjectorCode", () => { ? window : typeof global !== \\"undefined\\" ? global + : typeof globalThis !== \\"undefined\\" + ? globalThis : typeof self !== \\"undefined\\" ? self : {}; @@ -259,6 +261,8 @@ describe("generateModuleMetadataInjectorCode", () => { ? window : typeof global !== \\"undefined\\" ? global + : typeof globalThis !== \\"undefined\\" + ? globalThis : typeof self !== \\"undefined\\" ? self : {}; From 456ff2ebf34fadb075ab9d21ecb1847ada03289d Mon Sep 17 00:00:00 2001 From: Jeffrey Hung <17494876+Jeffreyhung@users.noreply.github.com> Date: Tue, 10 Dec 2024 01:44:17 -0800 Subject: [PATCH 424/640] feat(release): Replace release bot with GH app (#637) Replace release bot with GH app --- .github/workflows/release.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 55317e45f884..c331bbc26a0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,14 +16,20 @@ jobs: runs-on: ubuntu-latest name: "Release a new version" steps: + - name: Get auth token + id: token + uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 + with: + app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }} + private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }} - uses: actions/checkout@v4 with: - token: ${{ secrets.GH_RELEASE_PAT }} + token: ${{ steps.token.outputs.token }} fetch-depth: 0 - name: Prepare release uses: getsentry/action-prepare-release@v1 env: - GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }} + GITHUB_TOKEN: ${{ steps.token.outputs.token }} with: version: ${{ github.event.inputs.version }} force: ${{ github.event.inputs.force }} From bd3e31f598f5badaccf011f701d94bbb9e6b6b31 Mon Sep 17 00:00:00 2001 From: Conor O'Brien Date: Fri, 13 Dec 2024 08:42:44 +0000 Subject: [PATCH 425/640] feat(core): Detect Railway release name (#639) --- packages/bundler-plugin-core/src/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 55a747fe4947..6e7a09b46558 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -259,6 +259,8 @@ export function determineReleaseName(): string | undefined { process.env["HEROKU_TEST_RUN_COMMIT_VERSION"] || // Heroku #2 https://docs.sentry.io/product/integrations/deployment/heroku/#configure-releases process.env["HEROKU_SLUG_COMMIT"] || + // Railway - https://docs.railway.app/reference/variables#git-variables + process.env["RAILWAY_GIT_COMMIT_SHA"] || // Render - https://render.com/docs/environment-variables process.env["RENDER_GIT_COMMIT"] || // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables From b2a0529ce11511ac4e54563af343d3e7c519f24b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 15:28:50 +0000 Subject: [PATCH 426/640] chore(deps): bump nanoid from 3.3.6 to 3.3.8 (#641) --- yarn.lock | 82 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 474cfb66d2b9..90844ff87300 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3328,7 +3328,19 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@npm:@types/webpack@^4": +"@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" integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== @@ -9811,9 +9823,9 @@ nan@^2.12.1: integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + version "3.3.8" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== nanomatch@^1.2.9: version "1.2.13" @@ -12059,7 +12071,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12141,7 +12162,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13054,7 +13082,7 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@npm:webpack@^4": +"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== @@ -13143,6 +13171,35 @@ webpack-virtual-modules@^0.5.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +"webpack@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== + dependencies: + "@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" + 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" + whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13240,7 +13297,16 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From d051b07e7236e7041c0e4249c753e66bde9dbc27 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 8 Jan 2025 12:04:15 +0100 Subject: [PATCH 427/640] ref(core): Rename release management plugin name (#647) --- .../src/plugins/release-management.ts | 7 +++++- .../esbuild-plugin/test/public-api.test.ts | 14 +++++++++++ .../rollup-plugin/test/public-api.test.ts | 24 +++++++++++++++++++ packages/vite-plugin/test/public-api.test.ts | 24 +++++++++++++++++++ .../webpack-plugin/test/public-api.test.ts | 14 +++++++++++ 5 files changed, 82 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index b84999a720b1..e3f2cabfb77d 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -31,6 +31,11 @@ interface ReleaseManagementPluginOptions { createDependencyOnSourcemapFiles: () => () => void; } +/** + * Creates a plugin that creates releases, sets commits, deploys and finalizes releases. + * + * Additionally, if legacy upload options are set, it uploads source maps in the legacy (non-debugId) way. + */ export function releaseManagementPlugin({ releaseName, include, @@ -47,7 +52,7 @@ export function releaseManagementPlugin({ }: ReleaseManagementPluginOptions): UnpluginOptions { const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); return { - name: "sentry-debug-id-upload-plugin", + name: "sentry-release-management-plugin", async writeBundle() { // It is possible that this writeBundle hook is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index 0721ef7c52d9..7cad2e0a5670 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -1,6 +1,20 @@ +import { EsbuildPlugin } from "unplugin"; import { sentryEsbuildPlugin } from "../src"; test("Esbuild plugin should exist", () => { expect(sentryEsbuildPlugin).toBeDefined(); expect(typeof sentryEsbuildPlugin).toBe("function"); }); + +describe("sentryEsbuildPlugin", () => { + it("returns an esbuild plugin", () => { + const plugins = sentryEsbuildPlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + }) as EsbuildPlugin; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect(plugins).toEqual({ name: "unplugin-host-0", setup: expect.any(Function) }); + }); +}); diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index 900e101e5852..c143ef91c07f 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -1,6 +1,30 @@ +import { Plugin } from "rollup"; import { sentryRollupPlugin } from "../src"; test("Rollup plugin should exist", () => { expect(sentryRollupPlugin).toBeDefined(); expect(typeof sentryRollupPlugin).toBe("function"); }); + +describe("sentryRollupPlugin", () => { + it("returns an array of rollup plugins", () => { + const plugins = sentryRollupPlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + }) as Plugin[]; + + expect(Array.isArray(plugins)).toBe(true); + + const pluginNames = plugins.map((plugin) => plugin.name); + + expect(pluginNames).toEqual([ + "sentry-telemetry-plugin", + "sentry-rollup-release-injection-plugin", + "sentry-release-management-plugin", + "sentry-rollup-debug-id-injection-plugin", + "sentry-rollup-debug-id-upload-plugin", + "sentry-file-deletion-plugin", + ]); + }); +}); diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index cfa848acec02..a15fc3367b31 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -1,6 +1,30 @@ +import { VitePlugin } from "unplugin"; import { sentryVitePlugin } from "../src"; test("Vite plugin should exist", () => { expect(sentryVitePlugin).toBeDefined(); expect(typeof sentryVitePlugin).toBe("function"); }); + +describe("sentryVitePlugin", () => { + it("returns an array of Vite plugins", () => { + const plugins = sentryVitePlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + }) as VitePlugin[]; + + expect(Array.isArray(plugins)).toBe(true); + + const pluginNames = plugins.map((plugin) => plugin.name); + + expect(pluginNames).toEqual([ + "sentry-telemetry-plugin", + "sentry-vite-release-injection-plugin", + "sentry-release-management-plugin", + "sentry-vite-debug-id-injection-plugin", + "sentry-vite-debug-id-upload-plugin", + "sentry-file-deletion-plugin", + ]); + }); +}); diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index a27f454d2f78..3340b2f15e7a 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,6 +1,20 @@ +import { Plugin } from "webpack"; import { sentryWebpackPlugin } from "../src"; test("Webpack plugin should exist", () => { expect(sentryWebpackPlugin).toBeDefined(); expect(typeof sentryWebpackPlugin).toBe("function"); }); + +describe("sentryWebpackPlugin", () => { + it("returns a webpack plugin", () => { + const plugin = sentryWebpackPlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + }) as Plugin; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect(plugin).toEqual({ apply: expect.any(Function) }); + }); +}); From e1975d48a4b9d8f97949643ea08d8013f2a7aa77 Mon Sep 17 00:00:00 2001 From: Ash <0Calories@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:22:14 -0500 Subject: [PATCH 428/640] feat(react-component-annotate): Allow skipping annotations on specified components (#617) --- .../babel-plugin-component-annotate/README.md | 11 +- .../src/index.ts | 25 +- .../test/test-plugin.test.ts | 1083 +---------------- packages/bundler-plugin-core/src/index.ts | 11 +- packages/bundler-plugin-core/src/types.ts | 4 + .../src/generate-documentation-table.ts | 7 + packages/rollup-plugin/src/index.ts | 4 +- packages/vite-plugin/src/index.ts | 4 +- packages/webpack-plugin/src/index.ts | 4 +- 9 files changed, 52 insertions(+), 1101 deletions(-) diff --git a/packages/babel-plugin-component-annotate/README.md b/packages/babel-plugin-component-annotate/README.md index 7d0799341014..7783c75859d0 100644 --- a/packages/babel-plugin-component-annotate/README.md +++ b/packages/babel-plugin-component-annotate/README.md @@ -47,6 +47,14 @@ Using pnpm: pnpm add @sentry/babel-plugin-component-annotate --save-dev ``` +## Options + +### `ignoredComponents` + +Type: `string[]` + +A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components. + ## Example ```js @@ -57,7 +65,8 @@ pnpm add @sentry/babel-plugin-component-annotate --save-dev plugins: [ // Put this plugin before any other plugins you have that transform JSX code - ['@sentry/babel-plugin-component-annotate'] + // The options are set by providing an object as the second element in the array, but not required + ['@sentry/babel-plugin-component-annotate', {ignoredComponents: ['Foo', 'Bar']}] ], } ``` diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 5a3e4e5e43f7..0cd087d9956b 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -48,15 +48,13 @@ const nativeSourceFileName = "dataSentrySourceFile"; interface AnnotationOpts { native?: boolean; "annotate-fragments"?: boolean; - ignoreComponents?: IgnoredComponent[]; + ignoredComponents?: string[]; } interface AnnotationPluginPass extends PluginPass { opts: AnnotationOpts; } -type IgnoredComponent = [file: string, component: string, element: string]; - type AnnotationPlugin = PluginObj; // We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier @@ -78,7 +76,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): path.node.id.name, sourceFileNameFromState(state), attributeNamesFromState(state), - state.opts.ignoreComponents ?? [] + state.opts.ignoredComponents ?? [] ); }, ArrowFunctionExpression(path, state) { @@ -106,7 +104,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): parent.id.name, sourceFileNameFromState(state), attributeNamesFromState(state), - state.opts.ignoreComponents ?? [] + state.opts.ignoredComponents ?? [] ); }, ClassDeclaration(path, state) { @@ -120,7 +118,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return; } - const ignoredComponents = state.opts.ignoreComponents ?? []; + const ignoredComponents = state.opts.ignoredComponents ?? []; render.traverse({ ReturnStatement(returnStatement) { @@ -153,7 +151,7 @@ function functionBodyPushAttributes( componentName: string, sourceFileName: string | undefined, attributeNames: string[], - ignoredComponents: IgnoredComponent[] + ignoredComponents: string[] ) { let jsxNode: Babel.NodePath; @@ -249,7 +247,7 @@ function processJSX( componentName: string | null, sourceFileName: string | undefined, attributeNames: string[], - ignoredComponents: IgnoredComponent[] + ignoredComponents: string[] ) { if (!jsxNode) { return; @@ -324,7 +322,7 @@ function applyAttributes( componentName: string | null, sourceFileName: string | undefined, attributeNames: string[], - ignoredComponents: IgnoredComponent[] + ignoredComponents: string[] ) { const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; @@ -340,10 +338,7 @@ function applyAttributes( const elementName = getPathName(t, openingElement); const isAnIgnoredComponent = ignoredComponents.some( - (ignoredComponent) => - matchesIgnoreRule(ignoredComponent[0], sourceFileName) && - matchesIgnoreRule(ignoredComponent[1], componentName) && - matchesIgnoreRule(ignoredComponent[2], elementName) + (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName ); // Add a stable attribute for the element name but only for non-DOM names @@ -501,10 +496,6 @@ function isReactFragment(t: typeof Babel.types, openingElement: Babel.NodePath): return false; } -function matchesIgnoreRule(rule: string, name: string | undefined | null) { - return rule === "*" || rule === name; -} - function hasAttributeWithName( openingElement: Babel.NodePath, name: string | undefined | null 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 edb581e0104e..7dce87adef3a 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -1051,856 +1051,15 @@ export default PureComponentName; expect(result?.code).toMatchSnapshot(); }); -it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=nomatch dataSentryElement=nomatch snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("ignore components dataSentrySourceFile=* dataSentryComponent=nomatch dataSentryElement=nomatch snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["*", "nomatch", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=nomatch snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "*", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=nomatch dataSentryElement=* snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "*"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=nomatch snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=nomatch dataSentryElement=* snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -it("Bananas ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=* snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "nomatch", "nomatch"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - }" - `); -}); - -// This tests out matching only `dataSentryElement`, with * for the others -it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=match snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["*", "*", "Image"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - }" - `); -}); - -// This tests out matching only `dataSentryElement` and `dataSentryComponent`, with * for `dataSentrySourceFile` -it("Bananas ignore components dataSentrySourceFile=* dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["*", "Bananas", "Image"]] }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - }" - `); -}); - -// This tests out matching on all 3 of our ignore list values -it("Bananas ignore components dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [ - [plugin, { native: true, ignoreComponents: [["filename-test.js", "Bananas", "Image"]] }], - ], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - }" - `); -}); - -// This tests out matching on all 3 of our ignore list values via * -it("Bananas/Pizza/App ignore components dataSentrySourceFile=* dataSentryComponent=* dataSentryElement=* snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["*", "*", "*"]] }]], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - } - }, /*#__PURE__*/React.createElement(TextInput, { - style: { - backgroundColor: '#000', - color: '#eee', - padding: 8 - }, - placeholder: \\"Type here to translate!\\" // not supported on iOS - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - } - }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); - } - } - export default function App() { - return /*#__PURE__*/React.createElement(View, { - style: styles.container - }, /*#__PURE__*/React.createElement(Text, { - style: { - color: '#eee' - } - }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -// This tests out matching on all 3 of our ignore list values -it("Bananas/Pizza/App ignore components dataSentrySourceFile=nomatch dataSentryComponent=* dataSentryElement=* snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true, ignoreComponents: [["nomatch.js", "*", "*"]] }]], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - }, - 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 - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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\\" - }, /*#__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\\" - }), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" - })); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -it("Bananas/Pizza/App only Bananas dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Pizza - ["filename-test.js", "PizzaTranslator", "View"], - // App - ["filename-test.js", "App", "View"], - ], - }, - ], - ], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - } - }, /*#__PURE__*/React.createElement(TextInput, { - style: { - backgroundColor: '#000', - color: '#eee', - padding: 8 - }, - placeholder: \\"Type here to translate!\\" // not supported on iOS - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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 - }, /*#__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\\" - }), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" - })); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -it("Bananas/Pizza/App only Pizza dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Bananas - ["filename-test.js", "Bananas", "Image"], - // App - ["filename-test.js", "App", "View"], - ], - }, - ], - ], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - }, - 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 - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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 - }, /*#__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\\" - }), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" - })); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -it("Bananas/Pizza/App only App dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Bananas - ["filename-test.js", "Bananas", "Image"], - // Pizza - ["filename-test.js", "PizzaTranslator", "View"], - ], - }, - ], - ], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - } - }, /*#__PURE__*/React.createElement(TextInput, { - style: { - backgroundColor: '#000', - color: '#eee', - padding: 8 - }, - placeholder: \\"Type here to translate!\\" // not supported on iOS - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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\\" - }, /*#__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\\" - }), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" - })); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -it("Bananas/Pizza/App No Pizza Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, +it("Bananas incompatible plugin @react-navigation source snapshot matches", () => { + const result = transform(BananasStandardInput, { + filename: "test/node_modules/@react-navigation/core/filename-test.js", presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Pizza Element - ["filename-test.js", null, "PizzaTranslator"], - ], - }, - ], - ], + plugins: [[plugin, { native: true }]], }); 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\\"; + import { Image } from 'react-native'; class Bananas extends Component { render() { let pic = { @@ -1913,101 +1072,19 @@ it("Bananas/Pizza/App No Pizza Elements dataSentrySourceFile=match dataSentryCom height: 110, marginTop: 10 }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" + fsClass: \\"test-class\\" }); } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - }, - 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 - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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\\" - }, /*#__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\\" - }), /*#__PURE__*/React.createElement(PizzaTranslator, null)); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" + }" `); }); -it("Bananas/Pizza/App No Bananas Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { +it("skips components marked in ignoredComponents", () => { const result = transform(BananasPizzaAppStandardInput, { filename: "/filename-test.js", - configFile: false, presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Bananas Element - ["filename-test.js", null, "Bananas"], - ], - }, - ], - ], + plugins: [[plugin, { native: true, ignoredComponents: ["Bananas"] }]], }); - expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; @@ -2024,10 +1101,7 @@ it("Bananas/Pizza/App No Bananas Elements dataSentrySourceFile=match dataSentryC height: 110, marginTop: 10 }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" + fsClass: \\"test-class\\" }); } } @@ -2100,143 +1174,6 @@ it("Bananas/Pizza/App No Bananas Elements dataSentrySourceFile=match dataSentryC `); }); -it("Bananas/Pizza/App No Bananas/Pizza Elements dataSentrySourceFile=match dataSentryComponent=match dataSentryElement=match snapshot matches", () => { - const result = transform(BananasPizzaAppStandardInput, { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [ - [ - plugin, - { - native: true, - ignoreComponents: [ - // Bananas Element - ["filename-test.js", null, "Bananas"], - // Pizza Element - ["filename-test.js", null, "PizzaTranslator"], - ], - }, - ], - ], - }); - 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\\"; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" - }); - } - } - class PizzaTranslator extends Component { - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - render() { - return /*#__PURE__*/React.createElement(View, { - style: { - padding: 10 - }, - 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 - , - onChangeText: text => this.setState({ - text - }), - value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" - }), /*#__PURE__*/React.createElement(Text, { - style: { - padding: 10, - fontSize: 42 - }, - 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\\" - }, /*#__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, null)); - } - const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'stretch', - backgroundColor: '#222', - alignItems: 'center', - justifyContent: 'center' - } - });" - `); -}); - -it("Bananas incompatible plugin @react-navigation source snapshot matches", () => { - const result = transform(BananasStandardInput, { - filename: "test/node_modules/@react-navigation/core/filename-test.js", - presets: ["@babel/preset-react"], - plugins: [[plugin, { native: true }]], - }); - expect(result?.code).toMatchInlineSnapshot(` - "import React, { Component } from 'react'; - import { Image } from 'react-native'; - class Bananas extends Component { - render() { - let pic = { - uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' - }; - return /*#__PURE__*/React.createElement(Image, { - source: pic, - style: { - width: 193, - height: 110, - marginTop: 10 - }, - fsClass: \\"test-class\\" - }); - } - }" - `); -}); - it("handles ternary operation returned by function body", () => { const result = transform( `const maybeTrue = Math.random() > 0.5; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 1a0dd7c15e32..dc7006dc19ef 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -30,7 +30,7 @@ import { closeSession, DEFAULT_ENVIRONMENT, makeSession } from "@sentry/core"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; - componentNameAnnotatePlugin?: () => UnpluginOptions; + componentNameAnnotatePlugin?: (ignoredComponents?: string[]) => UnpluginOptions; moduleMetadataInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; @@ -423,7 +423,10 @@ export function sentryUnpluginFactory({ "The component name annotate plugin is currently not supported by '@sentry/esbuild-plugin'" ); } else { - componentNameAnnotatePlugin && plugins.push(componentNameAnnotatePlugin()); + componentNameAnnotatePlugin && + plugins.push( + componentNameAnnotatePlugin(options.reactComponentAnnotation.ignoredComponents) + ); } } @@ -645,7 +648,7 @@ export function createRollupDebugIdUploadHooks( }; } -export function createComponentNameAnnotateHooks() { +export function createComponentNameAnnotateHooks(ignoredComponents?: string[]) { type ParserPlugins = NonNullable< NonNullable[1]>["parserOpts"] >["plugins"]; @@ -673,7 +676,7 @@ export function createComponentNameAnnotateHooks() { try { const result = await transformAsync(code, { - plugins: [[componentNameAnnotatePlugin]], + plugins: [[componentNameAnnotatePlugin, { ignoredComponents }]], filename: id, parserOpts: { sourceType: "module", diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index c42e5b1009f4..b6b5052e5f0c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -319,6 +319,10 @@ export interface Options { * Whether the component name annotate plugin should be enabled or not. */ enabled?: boolean; + /** + * A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components. + */ + ignoredComponents?: string[]; }; /** diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index d13c8ac33aa1..bd56e487bbfe 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -390,6 +390,13 @@ type IncludeEntry = { fullDescription: "Whether the component name annotate plugin should be enabled or not.", supportedBundlers: ["webpack", "vite", "rollup"], }, + { + name: "ignoredComponents", + type: "string[]", + fullDescription: + "A list of strings representing the names of components to ignore. The plugin will not perform apply `data-sentry` annotations on the DOM element for these components.", + supportedBundlers: ["webpack", "vite", "rollup"], + }, ], }, { diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index dbdd63b8f793..de29484fd555 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -18,10 +18,10 @@ function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } -function rollupComponentNameAnnotatePlugin(): UnpluginOptions { +function rollupComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { return { name: "sentry-rollup-component-name-annotate-plugin", - rollup: createComponentNameAnnotateHooks(), + rollup: createComponentNameAnnotateHooks(ignoredComponents), }; } diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 9aa1ee3441f9..11c77f00c4c9 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -21,11 +21,11 @@ function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } -function viteComponentNameAnnotatePlugin(): UnpluginOptions { +function viteComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { return { name: "sentry-vite-component-name-annotate-plugin", enforce: "pre" as const, - vite: createComponentNameAnnotateHooks(), + vite: createComponentNameAnnotateHooks(ignoredComponents), }; } diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 66790c3402d1..f215630c337d 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -47,7 +47,7 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } -function webpackComponentNameAnnotatePlugin(): UnpluginOptions { +function webpackComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { return { name: "sentry-webpack-component-name-annotate-plugin", enforce: "pre", @@ -55,7 +55,7 @@ function webpackComponentNameAnnotatePlugin(): UnpluginOptions { transformInclude(id) { return id.endsWith(".tsx") || id.endsWith(".jsx"); }, - transform: createComponentNameAnnotateHooks().transform, + transform: createComponentNameAnnotateHooks(ignoredComponents).transform, }; } From 77bba3778a1e0414ac024a8b4f581f52c252791b Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 9 Jan 2025 13:24:50 +0100 Subject: [PATCH 429/640] meta: Update changelog for 2.23.0 (#649) --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11a1c41efde9..7b8c4cddc06e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 2.23.0 + +- chore(deps): bump nanoid from 3.3.6 to 3.3.8 (#641) +- feat(core): Detect Railway release name (#639) +- feat(core): Write module injections to `globalThis` (#636) +- feat(react-component-annotate): Allow skipping annotations on specified components (#617) +- ref(core): Rename release management plugin name (#647) + +Work in this release contributed by @conor-ob. Thank you for your contribution! + ## 2.22.7 - deps: Bump `@sentry/cli` to `2.39.1` and require specific version (#632) From aff2c51c86a299cfb88c70acc389aed0486c1d43 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 9 Jan 2025 12:25:55 +0000 Subject: [PATCH 430/640] release: 2.23.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index b6246f4ce5a0..d9394f950722 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.22.7", + "version": "2.23.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 53e32009998c..d0aa944c7d96 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.22.7", + "version": "2.23.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3d47a19c4486..5befe9e58469 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.22.7", + "version": "2.23.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.7", + "@sentry/babel-plugin-component-annotate": "2.23.0", "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 0094f20b013d..698a38d55d74 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5862ce5d7e96..c884a868c320 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.22.7", - "@sentry/rollup-plugin": "2.22.7", - "@sentry/vite-plugin": "2.22.7", - "@sentry/webpack-plugin": "2.22.7", + "@sentry/esbuild-plugin": "2.23.0", + "@sentry/rollup-plugin": "2.23.0", + "@sentry/vite-plugin": "2.23.0", + "@sentry/webpack-plugin": "2.23.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index bc8a0badac06..7b2b1a8a24ba 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.22.7", + "version": "2.23.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/bundler-plugin-core": "2.23.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index bbd7d625f769..27afaf0d13fa 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 9c98fad1ad04..09f01b2157ce 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", - "@sentry/bundler-plugin-core": "2.22.7", - "@sentry/esbuild-plugin": "2.22.7", - "@sentry/rollup-plugin": "2.22.7", - "@sentry/vite-plugin": "2.22.7", - "@sentry/webpack-plugin": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/esbuild-plugin": "2.23.0", + "@sentry/rollup-plugin": "2.23.0", + "@sentry/vite-plugin": "2.23.0", + "@sentry/webpack-plugin": "2.23.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 1c4968d671c3..c2c414fff31b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/bundler-plugin-core": "2.23.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 1de5a5a99f60..285fab695966 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.22.7", + "version": "2.23.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/bundler-plugin-core": "2.23.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index b102bd6f27fe..58a992fc0a66 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.22.7", + "version": "2.23.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6bfe405f9961..7a04e23d6441 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.22.7", + "version": "2.23.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/bundler-plugin-core": "2.23.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2b32d0b412ea..d28a31b530c7 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.22.7", + "version": "2.23.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.22.7", + "@sentry/bundler-plugin-core": "2.23.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.22.7", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.22.7", + "@sentry-internal/eslint-config": "2.23.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1547fea8d6e3419df379ad6307123eaf933d8775 Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:10:05 +0100 Subject: [PATCH 431/640] feat(logger): Use console methods respective to log level (#652) --- .../bundler-plugin-core/src/sentry/logger.ts | 6 +- .../test/sentry/logger.test.ts | 65 +++++++++++-------- 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/sentry/logger.ts index b4bb45e2b861..70528517808f 100644 --- a/packages/bundler-plugin-core/src/sentry/logger.ts +++ b/packages/bundler-plugin-core/src/sentry/logger.ts @@ -17,13 +17,13 @@ export function createLogger(options: LoggerOptions): Logger { info(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console - console.error(`${options.prefix} Info: ${message}`, ...params); + console.info(`${options.prefix} Info: ${message}`, ...params); } }, warn(message: string, ...params: unknown[]) { if (!options.silent) { // eslint-disable-next-line no-console - console.error(`${options.prefix} Warning: ${message}`, ...params); + console.warn(`${options.prefix} Warning: ${message}`, ...params); } }, error(message: string, ...params: unknown[]) { @@ -35,7 +35,7 @@ export function createLogger(options: LoggerOptions): Logger { debug(message: string, ...params: unknown[]) { if (!options.silent && options.debug) { // eslint-disable-next-line no-console - console.error(`${options.prefix} Debug: ${message}`, ...params); + console.debug(`${options.prefix} Debug: ${message}`, ...params); } }, }; diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index efb99df29c69..f16d5c89c383 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -2,43 +2,52 @@ import { createLogger } from "../../src/sentry/logger"; 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); afterEach(() => { consoleErrorSpy.mockReset(); + consoleInfoSpy.mockReset(); + consoleWarnSpy.mockReset(); + consoleDebugSpy.mockReset(); }); it.each([ - ["info", "Info"], - ["warn", "Warning"], - ["error", "Error"], - ] as const)(".%s() should log correctly", (loggerMethod, logLevel) => { + ["info", "Info", consoleInfoSpy], + ["warn", "Warning", consoleWarnSpy], + ["error", "Error", consoleErrorSpy], + ] as const)(".%s() should log correctly", (loggerMethod, logLevel, consoleSpy) => { const prefix = "[some-prefix]"; const logger = createLogger({ prefix, silent: false, debug: true }); logger[loggerMethod]("Hey!"); - expect(consoleErrorSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); + expect(consoleSpy).toHaveBeenCalledWith(`[some-prefix] ${logLevel}: Hey!`); }); it.each([ - ["info", "Info"], - ["warn", "Warning"], - ["error", "Error"], - ] as const)(".%s() should log multiple params correctly", (loggerMethod, logLevel) => { - const prefix = "[some-prefix]"; - const logger = createLogger({ prefix, silent: false, debug: true }); + ["info", "Info", consoleInfoSpy], + ["warn", "Warning", consoleWarnSpy], + ["error", "Error", consoleErrorSpy], + ] as const)( + ".%s() should log multiple params correctly", + (loggerMethod, logLevel, consoleSpy) => { + const prefix = "[some-prefix]"; + const logger = createLogger({ prefix, silent: false, debug: true }); - logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); + logger[loggerMethod]("Hey!", "this", "is", "a test with", 5, "params"); - expect(consoleErrorSpy).toHaveBeenCalledWith( - `[some-prefix] ${logLevel}: Hey!`, - "this", - "is", - "a test with", - 5, - "params" - ); - }); + expect(consoleSpy).toHaveBeenCalledWith( + `[some-prefix] ${logLevel}: Hey!`, + "this", + "is", + "a test with", + 5, + "params" + ); + } + ); it(".debug() should log correctly", () => { const prefix = "[some-prefix]"; @@ -46,7 +55,7 @@ describe("Logger", () => { logger.debug("Hey!"); - expect(consoleErrorSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); + expect(consoleDebugSpy).toHaveBeenCalledWith(`[some-prefix] Debug: Hey!`); }); it(".debug() should log multiple params correctly", () => { @@ -55,7 +64,7 @@ describe("Logger", () => { logger.debug("Hey!", "this", "is", "a test with", 5, "params"); - expect(consoleErrorSpy).toHaveBeenCalledWith( + expect(consoleDebugSpy).toHaveBeenCalledWith( `[some-prefix] Debug: Hey!`, "this", "is", @@ -66,13 +75,17 @@ describe("Logger", () => { }); describe("doesn't log when `silent` option is `true`", () => { - it.each(["info", "warn", "error"] as const)(".%s()", (loggerMethod) => { + it.each([ + ["info", consoleInfoSpy], + ["warn", consoleWarnSpy], + ["error", consoleErrorSpy], + ] as const)(".%s()", (loggerMethod, consoleSpy) => { const prefix = "[some-prefix]"; const logger = createLogger({ prefix, silent: true, debug: true }); logger[loggerMethod]("Hey!"); - expect(consoleErrorSpy).not.toHaveBeenCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); }); @@ -82,6 +95,6 @@ describe("Logger", () => { logger.debug("Hey!"); - expect(consoleErrorSpy).not.toHaveBeenCalled(); + expect(consoleDebugSpy).not.toHaveBeenCalled(); }); }); From e729f025609aacee2084164e54c75f303c3fba25 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 14 Jan 2025 18:43:27 +0100 Subject: [PATCH 432/640] fix(webpack): Ensure process exits when done (#653) --- packages/bundler-plugin-core/src/index.ts | 8 ++++++-- packages/webpack-plugin/src/index.ts | 13 ++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index dc7006dc19ef..e8eb3897cbee 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -33,7 +33,10 @@ interface SentryUnpluginFactoryOptions { componentNameAnnotatePlugin?: (ignoredComponents?: string[]) => UnpluginOptions; moduleMetadataInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; - debugIdUploadPlugin: (upload: (buildArtifacts: string[]) => Promise) => UnpluginOptions; + debugIdUploadPlugin: ( + upload: (buildArtifacts: string[]) => Promise, + logger: Logger + ) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; } @@ -408,7 +411,8 @@ export function sentryUnpluginFactory({ vcsRemote: options.release.vcsRemote, headers: options.headers, }, - }) + }), + logger ) ); } diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index f215630c337d..0389cc1ce286 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -5,6 +5,7 @@ import { stringToUUID, SentrySDKBuildFlags, createComponentNameAnnotateHooks, + Logger, } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; @@ -117,7 +118,8 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { } function webpackDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise + upload: (buildArtifacts: string[]) => Promise, + logger: Logger ): UnpluginOptions { const pluginName = "sentry-webpack-debug-id-upload-plugin"; return { @@ -133,6 +135,15 @@ function webpackDebugIdUploadPlugin( callback(); }); }); + + if (compiler.options.mode === "production") { + compiler.hooks.done.tap(pluginName, () => { + setTimeout(() => { + logger.debug("Exiting process after debug file upload"); + process.exit(0); + }); + }); + } }, }; } From 0074fb887b64bca673ae332fb325100ac1eb4b4e Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Jan 2025 08:34:07 +0100 Subject: [PATCH 433/640] chore: Remove deprecated options and update changelog for v3 major (#654) --- CHANGELOG.md | 20 +++++++ packages/bundler-plugin-core/src/index.ts | 16 +----- .../src/options-mapping.ts | 2 +- .../src/sentry/telemetry.ts | 5 +- packages/bundler-plugin-core/src/types.ts | 55 ------------------- .../bundle-size-optimizations/setup.ts | 2 +- 6 files changed, 25 insertions(+), 75 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b8c4cddc06e..0927cf9bd6d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,26 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.0.0 + +### Breaking Changes + +- Code injected into bundles now uses: + + - `const` which was added in ES6 (ES2015) (#646) + - `globalThis` which was added ES2020 but can be polyfilled (#610) + +- Deprecated configuration options have been removed: + - `deleteFilesAfterUpload` - Use `filesToDeleteAfterUpload` instead + - `bundleSizeOptimizations.excludePerformanceMonitoring` - Use `bundleSizeOptimizations.excludeTracing` instead + - `_experiments.moduleMetadata` - Use `moduleMetadata` instead + - `cleanArtifacts` - Did not do anything + +### Other Changes + +- fix(webpack): Ensure process exits when done (#653) +- feat(logger): Use console methods respective to log level (#652) + ## 2.23.0 - chore(deps): bump nanoid from 3.3.6 to 3.3.8 (#641) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e8eb3897cbee..0ad780193cce 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -105,13 +105,6 @@ export function sentryUnpluginFactory({ const options = normalizeUserOptions(userOptions); - // TODO(v3): Remove this warning - if (userOptions._experiments?.moduleMetadata) { - logger.warn( - "The `_experiments.moduleMetadata` option has been promoted to being stable. You can safely move the option out of the `_experiments` object scope." - ); - } - if (unpluginMetaContext.watchMode || options.disable) { return [ { @@ -254,10 +247,7 @@ export function sentryUnpluginFactory({ if (bundleSizeOptimizations.excludeDebugStatements) { replacementValues["__SENTRY_DEBUG__"] = false; } - if ( - bundleSizeOptimizations.excludePerformanceMonitoring || - bundleSizeOptimizations.excludeTracing - ) { + if (bundleSizeOptimizations.excludeTracing) { replacementValues["__SENTRY_TRACE__"] = false; } if (bundleSizeOptimizations.excludeReplayCanvas) { @@ -437,9 +427,7 @@ export function sentryUnpluginFactory({ plugins.push( fileDeletionPlugin({ waitUntilSourcemapFileDependenciesAreFreed, - filesToDeleteAfterUpload: - options.sourcemaps?.filesToDeleteAfterUpload ?? - options.sourcemaps?.deleteFilesAfterUpload, + filesToDeleteAfterUpload: options.sourcemaps?.filesToDeleteAfterUpload, logger, handleRecoverableError, sentryScope, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 3a141378526d..ba12d3e59487 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -35,7 +35,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { }, }, applicationKey: userOptions.applicationKey, - moduleMetadata: userOptions.moduleMetadata || userOptions._experiments?.moduleMetadata, + moduleMetadata: userOptions.moduleMetadata, _experiments: userOptions._experiments ?? {}, }; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 52bea300697a..81b10c36e5c6 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -86,10 +86,7 @@ export function setTelemetryDataOnScope(options: NormalizedOptions, scope: Scope // Miscellaneous options scope.setTag("custom-error-handler", !!errorHandler); scope.setTag("sourcemaps-assets", !!sourcemaps?.assets); - scope.setTag( - "delete-after-upload", - !!sourcemaps?.deleteFilesAfterUpload || !!sourcemaps?.filesToDeleteAfterUpload - ); + scope.setTag("delete-after-upload", !!sourcemaps?.filesToDeleteAfterUpload); scope.setTag("sourcemaps-disabled", !!sourcemaps?.disable); scope.setTag("react-annotate", !!reactComponentAnnotation?.enabled); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index b6b5052e5f0c..b8ae99cfc6bf 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -127,18 +127,6 @@ export interface Options { // eslint-disable-next-line @typescript-eslint/no-explicit-any rewriteSources?: (source: string, map: any) => string; - /** - * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. - * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) - * - * Use the `debug` option to print information about which files end up being deleted. - * - * @deprecated Use `filesToDeleteAfterUpload` instead. - */ - // TODO(v3): Remove this option. - deleteFilesAfterUpload?: string | string[]; - /** * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. * @@ -216,18 +204,6 @@ export interface Options { */ deploy?: DeployOptions; - /** - * Remove all previously uploaded artifacts for this release on Sentry before the upload. - * - * Defaults to `false`. - * - * @deprecated `cleanArtifacts` is deprecated and currently doesn't do anything. Historically it was needed - * since uploading the same artifacts twice was not allowed. Nowadays, when uploading artifacts with the same name - * more than once to the same release on Sentry, Sentry will prefer the most recent artifact for source mapping. - */ - // TODO(v3): Remove this option - cleanArtifacts?: boolean; - /** * Legacy method of uploading source maps. (not recommended unless necessary) * @@ -253,17 +229,6 @@ export interface Options { */ excludeDebugStatements?: boolean; - /** - * If set to `true`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring. - * Note that the success of this depends on tree shaking being enabled in your build tooling. - * - * **Notice**: Do not enable this when you're using any performance monitoring-related SDK features (e.g. `Sentry.startTransaction()`). - * - * @deprecated This option has been replaced with the `excludeTracing`. Currently, this option is an alias for `excludeTracing` but `excludePerformanceMonitoring` will be removed in the next major version. - */ - // TODO(v3): Remove this option - excludePerformanceMonitoring?: boolean; - /** * If set to `true`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring. * Note that the success of this depends on tree shaking being enabled in your build tooling. @@ -351,7 +316,6 @@ export interface Options { * * @experimental API that does not follow semantic versioning and may change in any release */ - // TODO(v3): Remove these _experiments?: { /** * If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. @@ -360,25 +324,6 @@ export interface Options { * Defaults to `false`. */ injectBuildInformation?: boolean; - - /** - * NOTE: This option has been promoted to stable. - * - * Metadata that should be associated with the built application. - * - * The metadata is serialized and can be looked up at runtime from within the SDK (for example in the `beforeSend`, - * event processors, or the transport), allowing for custom event filtering logic or routing of events. - * - * Metadata can either be passed directly or alternatively a callback can be provided that will be - * called with the following parameters: - * - `org`: The organization slug. - * - `project`: The project slug. - * - `release`: The release name. - * - * @deprecated Use the non-experimental `moduleMetadata` option instead. (Basically just move this option out of `_experiments`) - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - moduleMetadata?: ModuleMetadata | ModuleMetadataCallback; }; /** diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts index 8e1fb1dcc558..dfacd3c35a02 100644 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts @@ -16,7 +16,7 @@ createCjsBundles( telemetry: false, bundleSizeOptimizations: { excludeDebugStatements: true, - excludePerformanceMonitoring: true, + excludeTracing: true, excludeReplayCanvas: true, excludeReplayIframe: true, excludeReplayShadowDom: true, From b734d451c1517c958271013bcf6f0a08565e672b Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Jan 2025 08:38:28 +0100 Subject: [PATCH 434/640] fix!: Wrap injected code in block-statement to contain scope (#646) --- packages/bundler-plugin-core/src/utils.ts | 8 +++++--- packages/bundler-plugin-core/test/utils.test.ts | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 6e7a09b46558..4ad7e01efc16 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -314,8 +314,8 @@ export function generateGlobalInjectorCode({ }) { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = ` - var _global = + let code = `{ + const _global = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? @@ -335,6 +335,8 @@ export function generateGlobalInjectorCode({ _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; } + code += "}"; + return code; } @@ -344,7 +346,7 @@ export function generateModuleMetadataInjectorCode(metadata: any) { // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin return `{ - var _sentryModuleMetadataGlobal = + const _sentryModuleMetadataGlobal = typeof window !== "undefined" ? window : typeof global !== "undefined" diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index b996a47c2373..2098ef46d581 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -221,7 +221,7 @@ describe("generateModuleMetadataInjectorCode", () => { const generatedCode = generateModuleMetadataInjectorCode({}); expect(generatedCode).toMatchInlineSnapshot(` "{ - var _sentryModuleMetadataGlobal = + const _sentryModuleMetadataGlobal = typeof window !== \\"undefined\\" ? window : typeof global !== \\"undefined\\" @@ -256,7 +256,7 @@ describe("generateModuleMetadataInjectorCode", () => { }); expect(generatedCode).toMatchInlineSnapshot(` "{ - var _sentryModuleMetadataGlobal = + const _sentryModuleMetadataGlobal = typeof window !== \\"undefined\\" ? window : typeof global !== \\"undefined\\" From 8eb6c5fb5d943865e2b0bda857913f1476547750 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Jan 2025 09:16:38 +0100 Subject: [PATCH 435/640] feat(core)!: Use `globalThis` for code injection (#610) Co-authored-by: Luca Forstner --- .../sentry-esbuild-debugid-injection-file.js | 13 ++------- packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 27 ++----------------- .../bundler-plugin-core/test/index.test.ts | 2 +- .../bundler-plugin-core/test/utils.test.ts | 22 ++------------- 5 files changed, 8 insertions(+), 58 deletions(-) diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index ac913e2e6ac2..34e03b965aff 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -1,16 +1,7 @@ try { - var globalObject = - "undefined" != typeof window - ? window - : "undefined" != typeof global - ? global - : "undefined" != typeof globalThis - ? global - : "undefined" != typeof self - ? self - : {}; + let globalObject = globalThis; - var stack = new globalObject.Error().stack; + let stack = new globalObject.Error().stack; if (stack) { globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0ad780193cce..7be558b48ace 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -695,7 +695,7 @@ export function createComponentNameAnnotateHooks(ignoredComponents?: string[]) { } export function getDebugIdSnippet(debugId: string): string { - return `;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();`; + return `;{try{let e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}};`; } export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 4ad7e01efc16..0c3ecd7de4f9 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -312,20 +312,8 @@ export function generateGlobalInjectorCode({ release: string; injectBuildInformation: boolean; }) { - // The code below is mostly ternary operators because it saves bundle size. - // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) let code = `{ - const _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof globalThis !== 'undefined' ? - globalThis : - typeof self !== 'undefined' ? - self : - {}; - + let _global = globalThis; _global.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; if (injectBuildInformation) { @@ -342,20 +330,9 @@ export function generateGlobalInjectorCode({ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function generateModuleMetadataInjectorCode(metadata: any) { - // The code below is mostly ternary operators because it saves bundle size. - // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin return `{ - const _sentryModuleMetadataGlobal = - typeof window !== "undefined" - ? window - : typeof global !== "undefined" - ? global - : typeof globalThis !== "undefined" - ? globalThis - : typeof self !== "undefined" - ? self - : {}; + let _sentryModuleMetadataGlobal = globalThis; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 71ad97bb3887..f5dcb7513819 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -4,7 +4,7 @@ describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); expect(snippet).toMatchInlineSnapshot( - `";!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"1234\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-1234\\")}catch(e){}}();"` + `";{try{let e=globalThis,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/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 2098ef46d581..ca70d0c7b83d 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -221,16 +221,7 @@ describe("generateModuleMetadataInjectorCode", () => { const generatedCode = generateModuleMetadataInjectorCode({}); expect(generatedCode).toMatchInlineSnapshot(` "{ - const _sentryModuleMetadataGlobal = - typeof window !== \\"undefined\\" - ? window - : typeof global !== \\"undefined\\" - ? global - : typeof globalThis !== \\"undefined\\" - ? globalThis - : typeof self !== \\"undefined\\" - ? self - : {}; + let _sentryModuleMetadataGlobal = globalThis; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; @@ -256,16 +247,7 @@ describe("generateModuleMetadataInjectorCode", () => { }); expect(generatedCode).toMatchInlineSnapshot(` "{ - const _sentryModuleMetadataGlobal = - typeof window !== \\"undefined\\" - ? window - : typeof global !== \\"undefined\\" - ? global - : typeof globalThis !== \\"undefined\\" - ? globalThis - : typeof self !== \\"undefined\\" - ? self - : {}; + let _sentryModuleMetadataGlobal = globalThis; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; From 57ad14f3dd4675df7efe9dfbb94f0f3632fc9ad5 Mon Sep 17 00:00:00 2001 From: Jonathan del Strother Date: Wed, 15 Jan 2025 08:18:04 +0000 Subject: [PATCH 436/640] fix: Use correct replacement matcher for `bundleSizeOptimizations.excludeTracing` (#644) Co-authored-by: Luca Forstner --- packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/types.ts | 2 +- .../fixtures/bundle-size-optimizations/input/bundle2.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 7be558b48ace..c82985c1d2c5 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -248,7 +248,7 @@ export function sentryUnpluginFactory({ replacementValues["__SENTRY_DEBUG__"] = false; } if (bundleSizeOptimizations.excludeTracing) { - replacementValues["__SENTRY_TRACE__"] = false; + replacementValues["__SENTRY_TRACING__"] = false; } if (bundleSizeOptimizations.excludeReplayCanvas) { replacementValues["__RRWEB_EXCLUDE_CANVAS__"] = true; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index b8ae99cfc6bf..33a03e58f78c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -447,7 +447,7 @@ export type IncludeEntry = { export interface SentrySDKBuildFlags extends Record { __SENTRY_DEBUG__?: boolean; - __SENTRY_TRACE__?: boolean; + __SENTRY_TRACING__?: boolean; __RRWEB_EXCLUDE_CANVAS__?: boolean; __RRWEB_EXCLUDE_IFRAME__?: boolean; __RRWEB_EXCLUDE_SHADOW_DOM__?: boolean; diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js index e6c49f948a3b..ac85947cbdfb 100644 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js @@ -1,6 +1,6 @@ console.log({ debug: __SENTRY_DEBUG__ ? "a" : "b", - trace: __SENTRY_TRACE__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", From 07a98c82142e15858b9329c18c28e7a1bab5a22e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 15 Jan 2025 09:36:42 +0100 Subject: [PATCH 437/640] Revert "feat(core)!: Use `globalThis` for code injection" (#656) This reverts commit 8eb6c5fb5d943865e2b0bda857913f1476547750. --- .../sentry-esbuild-debugid-injection-file.js | 11 +++++++- packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 27 +++++++++++++++++-- .../bundler-plugin-core/test/index.test.ts | 2 +- .../bundler-plugin-core/test/utils.test.ts | 22 +++++++++++++-- 5 files changed, 57 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index 34e03b965aff..61196856f94d 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -1,5 +1,14 @@ try { - let globalObject = globalThis; + let globalObject = + "undefined" != typeof window + ? window + : "undefined" != typeof global + ? global + : "undefined" != typeof globalThis + ? global + : "undefined" != typeof self + ? self + : {}; let stack = new globalObject.Error().stack; diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index c82985c1d2c5..b623f53a6990 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -695,7 +695,7 @@ export function createComponentNameAnnotateHooks(ignoredComponents?: string[]) { } export function getDebugIdSnippet(debugId: string): string { - return `;{try{let e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}};`; + return `;{try{let e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}};`; } export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 0c3ecd7de4f9..24e2049eae84 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -312,8 +312,20 @@ export function generateGlobalInjectorCode({ release: string; injectBuildInformation: boolean; }) { + // The code below is mostly ternary operators because it saves bundle size. + // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) let code = `{ - let _global = globalThis; + let _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof globalThis !== 'undefined' ? + globalThis : + typeof self !== 'undefined' ? + self : + {}; + _global.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; if (injectBuildInformation) { @@ -330,9 +342,20 @@ export function generateGlobalInjectorCode({ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function generateModuleMetadataInjectorCode(metadata: any) { + // The code below is mostly ternary operators because it saves bundle size. + // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin return `{ - let _sentryModuleMetadataGlobal = globalThis; + let _sentryModuleMetadataGlobal = + typeof window !== "undefined" + ? window + : typeof global !== "undefined" + ? global + : typeof globalThis !== "undefined" + ? globalThis + : typeof self !== "undefined" + ? self + : {}; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index f5dcb7513819..6e981ced100d 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -4,7 +4,7 @@ describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); expect(snippet).toMatchInlineSnapshot( - `";{try{let e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"1234\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-1234\\")}catch(e){}};"` + `";{try{let e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index ca70d0c7b83d..1ace6e6829dc 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -221,7 +221,16 @@ describe("generateModuleMetadataInjectorCode", () => { const generatedCode = generateModuleMetadataInjectorCode({}); expect(generatedCode).toMatchInlineSnapshot(` "{ - let _sentryModuleMetadataGlobal = globalThis; + let _sentryModuleMetadataGlobal = + typeof window !== \\"undefined\\" + ? window + : typeof global !== \\"undefined\\" + ? global + : typeof globalThis !== \\"undefined\\" + ? globalThis + : typeof self !== \\"undefined\\" + ? self + : {}; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; @@ -247,7 +256,16 @@ describe("generateModuleMetadataInjectorCode", () => { }); expect(generatedCode).toMatchInlineSnapshot(` "{ - let _sentryModuleMetadataGlobal = globalThis; + let _sentryModuleMetadataGlobal = + typeof window !== \\"undefined\\" + ? window + : typeof global !== \\"undefined\\" + ? global + : typeof globalThis !== \\"undefined\\" + ? globalThis + : typeof self !== \\"undefined\\" + ? self + : {}; _sentryModuleMetadataGlobal._sentryModuleMetadata = _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; From 03166414e7317f174b11f8eb3bbffe779ed23913 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 15 Jan 2025 09:47:10 +0100 Subject: [PATCH 438/640] meta: Update changelog for 3.0.0 (#657) --- CHANGELOG.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0927cf9bd6d2..2a8a604c5f37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,21 +8,24 @@ ### Breaking Changes -- Code injected into bundles now uses: +- Injected code will now use `let`, which was added in ES6 (ES2015). + This means that ES6 is the minimum JavaScript version that the Sentry bundler plugins support. - - `const` which was added in ES6 (ES2015) (#646) - - `globalThis` which was added ES2020 but can be polyfilled (#610) - -- Deprecated configuration options have been removed: +- Deprecated options have been removed: - `deleteFilesAfterUpload` - Use `filesToDeleteAfterUpload` instead - `bundleSizeOptimizations.excludePerformanceMonitoring` - Use `bundleSizeOptimizations.excludeTracing` instead - `_experiments.moduleMetadata` - Use `moduleMetadata` instead - `cleanArtifacts` - Did not do anything -### Other Changes +### List of Changes -- fix(webpack): Ensure process exits when done (#653) +- fix!: Wrap injected code in block-statement to contain scope (#646) +- chore!: Remove deprecated options (#654) - feat(logger): Use console methods respective to log level (#652) +- fix(webpack): Ensure process exits when done (#653) +- fix: Use correct replacement matcher for `bundleSizeOptimizations.excludeTracing` (#644) + +Work in this release contributed by @jdelStrother. Thank you for your contribution! ## 2.23.0 From 3daff7b5a8350d868c1ef14fcd63bdb3b9e8510c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 15 Jan 2025 08:49:08 +0000 Subject: [PATCH 439/640] release: 3.0.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index d9394f950722..efe89446ee7c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.23.0", + "version": "3.0.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index d0aa944c7d96..baa3a16702cd 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "2.23.0", + "version": "3.0.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5befe9e58469..d608c59586b4 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "2.23.0", + "version": "3.0.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.23.0", + "@sentry/babel-plugin-component-annotate": "3.0.0", "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 698a38d55d74..ee490ec05896 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c884a868c320..a546297566c9 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "2.23.0", - "@sentry/rollup-plugin": "2.23.0", - "@sentry/vite-plugin": "2.23.0", - "@sentry/webpack-plugin": "2.23.0", + "@sentry/esbuild-plugin": "3.0.0", + "@sentry/rollup-plugin": "3.0.0", + "@sentry/vite-plugin": "3.0.0", + "@sentry/webpack-plugin": "3.0.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 7b2b1a8a24ba..0a00098bde44 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "2.23.0", + "version": "3.0.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/bundler-plugin-core": "3.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 27afaf0d13fa..8a76897ce08b 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 09f01b2157ce..d6aeb60bdb8e 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", - "@sentry/bundler-plugin-core": "2.23.0", - "@sentry/esbuild-plugin": "2.23.0", - "@sentry/rollup-plugin": "2.23.0", - "@sentry/vite-plugin": "2.23.0", - "@sentry/webpack-plugin": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/esbuild-plugin": "3.0.0", + "@sentry/rollup-plugin": "3.0.0", + "@sentry/vite-plugin": "3.0.0", + "@sentry/webpack-plugin": "3.0.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index c2c414fff31b..ec4f4d9f9ea0 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/bundler-plugin-core": "3.0.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 285fab695966..b6e9f912bac8 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "2.23.0", + "version": "3.0.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/bundler-plugin-core": "3.0.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 58a992fc0a66..be52a1074401 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "2.23.0", + "version": "3.0.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7a04e23d6441..44909a17141d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "2.23.0", + "version": "3.0.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/bundler-plugin-core": "3.0.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d28a31b530c7..6f0e23d6d138 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "2.23.0", + "version": "3.0.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "2.23.0", + "@sentry/bundler-plugin-core": "3.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "2.23.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "2.23.0", + "@sentry-internal/eslint-config": "3.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6880fffa7846a8a0cc1a4ac441045b2785050f5e Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 22 Jan 2025 11:25:24 -0500 Subject: [PATCH 440/640] chore: Update MIT LICENSE for 2025 (#659) --- LICENSE | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/LICENSE b/LICENSE index 4acee9a39ecb..a69d859b8939 100644 --- a/LICENSE +++ b/LICENSE @@ -1,29 +1,21 @@ -# MIT License +MIT License -Copyright (c) 2022, Sentry -All rights reserved. +Copyright (c) 2022-2025 Functional Software, Inc. dba Sentry -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 1bf2163bfaa2d16e8f70d5b326dacf646390671c Mon Sep 17 00:00:00 2001 From: Philipp Hofmann Date: Thu, 23 Jan 2025 11:39:24 +0100 Subject: [PATCH 441/640] meta: Remove date range for LICENSE (#661) --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index a69d859b8939..293314012679 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022-2025 Functional Software, Inc. dba Sentry +Copyright (c) 2022 Functional Software, Inc. dba Sentry Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From 587ef7824509b3243d8bec7c209e27f005bd74fb Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 24 Jan 2025 11:03:56 +0100 Subject: [PATCH 442/640] feat(webpack): Gate forced process exit behind experimental flag (#663) Revert the default behaviour of the webpack plugin to no longer exit the process. Instead, users can set an experimental flag to force exiting the process. --- packages/bundler-plugin-core/src/index.ts | 12 +++++++++-- packages/bundler-plugin-core/src/types.ts | 2 +- packages/webpack-plugin/src/index.ts | 25 +++++++++++++++++++---- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b623f53a6990..06ffb373664b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -35,7 +35,8 @@ interface SentryUnpluginFactoryOptions { debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; debugIdUploadPlugin: ( upload: (buildArtifacts: string[]) => Promise, - logger: Logger + logger: Logger, + webpack_forceExitOnBuildComplete?: boolean ) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; } @@ -379,6 +380,12 @@ export function sentryUnpluginFactory({ "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." ); } else { + // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins + const webpack_forceExitOnBuildComplete = + typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" + ? options._experiments["forceExitOnBuildCompletion"] + : undefined; + plugins.push( debugIdUploadPlugin( createDebugIdUploadFunction({ @@ -402,7 +409,8 @@ export function sentryUnpluginFactory({ headers: options.headers, }, }), - logger + logger, + webpack_forceExitOnBuildComplete ) ); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 33a03e58f78c..d23cb480b1c5 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -324,7 +324,7 @@ export interface Options { * Defaults to `false`. */ injectBuildInformation?: boolean; - }; + } & Record; /** * Options that are useful for building wrappers around the plugin. You likely don't need these options unless you diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 0389cc1ce286..c69a2b3e9148 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -119,7 +119,8 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { function webpackDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise, - logger: Logger + logger: Logger, + forceExitOnBuildCompletion?: boolean ): UnpluginOptions { const pluginName = "sentry-webpack-debug-id-upload-plugin"; return { @@ -136,7 +137,7 @@ function webpackDebugIdUploadPlugin( }); }); - if (compiler.options.mode === "production") { + if (forceExitOnBuildCompletion && compiler.options.mode === "production") { compiler.hooks.done.tap(pluginName, () => { setTimeout(() => { logger.debug("Exiting process after debug file upload"); @@ -184,8 +185,24 @@ const sentryUnplugin = sentryUnpluginFactory({ bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin, }); +type SentryWebpackPluginOptions = Options & { + _experiments?: Options["_experiments"] & { + /** + * If enabled, the webpack plugin will exit the build process after the build completes. + * Use this with caution, as it will terminate the process. + * + * More information: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/345 + * + * @default false + */ + forceExitOnBuildCompletion?: boolean; + }; +}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: Options) => any = sentryUnplugin.webpack; +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = + sentryUnplugin.webpack; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; -export type { Options as SentryWebpackPluginOptions } from "@sentry/bundler-plugin-core"; + +export type { SentryWebpackPluginOptions }; From d57886dc724863669cb5c951cd055495b4cc5cb5 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 24 Jan 2025 11:10:49 +0100 Subject: [PATCH 443/640] meta: Update changelog for 3.1.0 (#664) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a8a604c5f37..c3a36030673e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.1.0 + +- feat(webpack): Gate forced process exit behind experimental flag (#663) + ## 3.0.0 ### Breaking Changes From b2f807b2192ab965747301a06b5ecf6948ee72ef Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 24 Jan 2025 10:12:10 +0000 Subject: [PATCH 444/640] release: 3.1.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index efe89446ee7c..b0090e74af08 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.0.0", + "version": "3.1.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index baa3a16702cd..1b684dd25918 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.0.0", + "version": "3.1.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d608c59586b4..3f098a4ecad2 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.0.0", + "version": "3.1.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.0.0", + "@sentry/babel-plugin-component-annotate": "3.1.0", "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index ee490ec05896..b745d2c897c2 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index a546297566c9..d7e7c61e22a8 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.0.0", - "@sentry/rollup-plugin": "3.0.0", - "@sentry/vite-plugin": "3.0.0", - "@sentry/webpack-plugin": "3.0.0", + "@sentry/esbuild-plugin": "3.1.0", + "@sentry/rollup-plugin": "3.1.0", + "@sentry/vite-plugin": "3.1.0", + "@sentry/webpack-plugin": "3.1.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 0a00098bde44..ee17ff0112c9 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.0.0", + "version": "3.1.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/bundler-plugin-core": "3.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 8a76897ce08b..f258ce2d4d7f 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index d6aeb60bdb8e..53447d120af0 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", - "@sentry/bundler-plugin-core": "3.0.0", - "@sentry/esbuild-plugin": "3.0.0", - "@sentry/rollup-plugin": "3.0.0", - "@sentry/vite-plugin": "3.0.0", - "@sentry/webpack-plugin": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/esbuild-plugin": "3.1.0", + "@sentry/rollup-plugin": "3.1.0", + "@sentry/vite-plugin": "3.1.0", + "@sentry/webpack-plugin": "3.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index ec4f4d9f9ea0..003b6b389360 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/bundler-plugin-core": "3.1.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index b6e9f912bac8..e43c187d4ce5 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.0.0", + "version": "3.1.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/bundler-plugin-core": "3.1.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index be52a1074401..1ba09ff97afb 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 44909a17141d..36cb4389a6f4 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.0.0", + "version": "3.1.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/bundler-plugin-core": "3.1.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6f0e23d6d138..8e5d6fd393d4 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.0.0", + "version": "3.1.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.0.0", + "@sentry/bundler-plugin-core": "3.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.0.0", + "@sentry-internal/eslint-config": "3.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From d39f50ebbcb9f2ea8743ce5aa13acf9c4a2dbbc6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 29 Jan 2025 15:22:17 +0100 Subject: [PATCH 445/640] fix(core): Check for dev mode via `process.env.NODE_ENV` (#666) --- packages/bundler-plugin-core/src/index.ts | 15 +++++-- .../rollup-plugin/test/public-api.test.ts | 41 +++++++++++++++++++ packages/vite-plugin/test/public-api.test.ts | 41 +++++++++++++++++++ 3 files changed, 94 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 06ffb373664b..159444bcb0d1 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -84,6 +84,11 @@ export function sentryUnpluginFactory({ debug: userOptions.debug ?? false, }); + // Not a bulletproof check but should be good enough to at least sometimes determine + // if the plugin is called in dev/watch mode or for a prod build. The important part + // here is to avoid a false positive. False negatives are okay. + const isDevMode = process.env["NODE_ENV"] === "development"; + try { const dotenvFile = fs.readFileSync( path.join(process.cwd(), ".env.sentry-build-plugin"), @@ -106,7 +111,7 @@ export function sentryUnpluginFactory({ const options = normalizeUserOptions(userOptions); - if (unpluginMetaContext.watchMode || options.disable) { + if (options.disable) { return [ { name: "sentry-noop-plugin", @@ -274,7 +279,7 @@ export function sentryUnpluginFactory({ "Release injection disabled via `release.inject` option. Will not inject release." ); } else if (!options.release.name) { - logger.warn( + logger.debug( "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." ); } else { @@ -316,9 +321,11 @@ export function sentryUnpluginFactory({ } if (!options.release.name) { - logger.warn( + logger.debug( "No release name provided. Will not create release. Please set the `release.name` option to identify your release." ); + } else if (isDevMode) { + logger.debug("Running in development mode. Will not create release."); } else if (!options.authToken) { logger.warn( "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" @@ -367,6 +374,8 @@ export function sentryUnpluginFactory({ logger.debug( "Source map upload was disabled. Will not upload sourcemaps using debug ID process." ); + } else if (isDevMode) { + logger.debug("Running in development mode. Will not upload sourcemaps."); } else if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index c143ef91c07f..ba69f60e18cc 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -7,6 +7,10 @@ test("Rollup plugin should exist", () => { }); describe("sentryRollupPlugin", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it("returns an array of rollup plugins", () => { const plugins = sentryRollupPlugin({ authToken: "test-token", @@ -27,4 +31,41 @@ describe("sentryRollupPlugin", () => { "sentry-file-deletion-plugin", ]); }); + + it("doesn't include release management and debug id upload plugins if NODE_ENV is 'development'", () => { + const originalNodeEnv = process.env["NODE_ENV"]; + process.env["NODE_ENV"] = "development"; + + const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { + /* avoid test output pollution */ + }); + + const plugins = sentryRollupPlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }) as Plugin[]; + + expect(Array.isArray(plugins)).toBe(true); + + const pluginNames = plugins.map((plugin) => plugin.name); + + expect(pluginNames).toEqual([ + "sentry-telemetry-plugin", + "sentry-rollup-release-injection-plugin", + "sentry-rollup-debug-id-injection-plugin", + "sentry-file-deletion-plugin", + ]); + + expect(consoleSpy).toHaveBeenCalledWith( + expect.stringContaining("Running in development mode. Will not create release.") + ); + + expect(consoleSpy).toHaveBeenCalledWith( + expect.stringContaining("Running in development mode. Will not upload sourcemaps.") + ); + + process.env["NODE_ENV"] = originalNodeEnv; + }); }); diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index a15fc3367b31..ccf11af2286c 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -7,6 +7,10 @@ test("Vite plugin should exist", () => { }); describe("sentryVitePlugin", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it("returns an array of Vite plugins", () => { const plugins = sentryVitePlugin({ authToken: "test-token", @@ -27,4 +31,41 @@ describe("sentryVitePlugin", () => { "sentry-file-deletion-plugin", ]); }); + + it("doesn't include release management and debug id upload plugins if NODE_ENV is 'development'", () => { + const originalNodeEnv = process.env["NODE_ENV"]; + process.env["NODE_ENV"] = "development"; + + const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { + /* avoid test output pollution */ + }); + + const plugins = sentryVitePlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }) as VitePlugin[]; + + expect(Array.isArray(plugins)).toBe(true); + + const pluginNames = plugins.map((plugin) => plugin.name); + + expect(pluginNames).toEqual([ + "sentry-telemetry-plugin", + "sentry-vite-release-injection-plugin", + "sentry-vite-debug-id-injection-plugin", + "sentry-file-deletion-plugin", + ]); + + expect(consoleSpy).toHaveBeenCalledWith( + expect.stringContaining("Running in development mode. Will not create release.") + ); + + expect(consoleSpy).toHaveBeenCalledWith( + expect.stringContaining("Running in development mode. Will not upload sourcemaps.") + ); + + process.env["NODE_ENV"] = originalNodeEnv; + }); }); From 8cdc739c168e66c1e85d6155ad15eb8516a44c0a Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 29 Jan 2025 17:48:33 +0100 Subject: [PATCH 446/640] meta: Add Changelog for 3.1.1 (#668) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3a36030673e..c05ee0631bdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.1.1 + +- fix(core): Disable release creation and source maps upload in dev mode (#666) + + This fix disables any external calls to the Sentry API for managing releases or uploading source maps, when detecting that the plugin is running in dev-mode. While this rarely actually happened, + it also polluted the dev server output with unnecessary logs about missing auth tokens, which shouldn't + be required in dev mode. + ## 3.1.0 - feat(webpack): Gate forced process exit behind experimental flag (#663) From 0db92f683ab0a4952e6d1b32e75a43d938c2d52b Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 29 Jan 2025 16:49:42 +0000 Subject: [PATCH 447/640] release: 3.1.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index b0090e74af08..87deadb3945e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.1.0", + "version": "3.1.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 1b684dd25918..46697cde874d 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.1.0", + "version": "3.1.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3f098a4ecad2..02c6700d753f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.1.0", + "version": "3.1.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.1.0", + "@sentry/babel-plugin-component-annotate": "3.1.1", "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b745d2c897c2..710bd965a7f1 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index d7e7c61e22a8..5f7a0300b2c7 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.1.0", - "@sentry/rollup-plugin": "3.1.0", - "@sentry/vite-plugin": "3.1.0", - "@sentry/webpack-plugin": "3.1.0", + "@sentry/esbuild-plugin": "3.1.1", + "@sentry/rollup-plugin": "3.1.1", + "@sentry/vite-plugin": "3.1.1", + "@sentry/webpack-plugin": "3.1.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index ee17ff0112c9..4b508f8aa7e4 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.1.0", + "version": "3.1.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index f258ce2d4d7f..70cbcec8f146 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 53447d120af0..b61f9a6d852e 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", - "@sentry/bundler-plugin-core": "3.1.0", - "@sentry/esbuild-plugin": "3.1.0", - "@sentry/rollup-plugin": "3.1.0", - "@sentry/vite-plugin": "3.1.0", - "@sentry/webpack-plugin": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/esbuild-plugin": "3.1.1", + "@sentry/rollup-plugin": "3.1.1", + "@sentry/vite-plugin": "3.1.1", + "@sentry/webpack-plugin": "3.1.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 003b6b389360..d7e900ebf70e 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e43c187d4ce5..43c6f90d8db9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.1.0", + "version": "3.1.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 1ba09ff97afb..570b992f88e0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 36cb4389a6f4..eabdd477e9e8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.1.0", + "version": "3.1.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8e5d6fd393d4..8eea016822ca 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.1.0", + "version": "3.1.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.0", + "@sentry/bundler-plugin-core": "3.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.0", + "@sentry-internal/eslint-config": "3.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From cfb6fcc12b9900398c9f2c2643bf3ea6969fdcc9 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 3 Feb 2025 18:23:44 +0100 Subject: [PATCH 448/640] deps: Bump `@sentry/cli` to `2.41.1` (#671) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 168 +++++++--------------- 2 files changed, 52 insertions(+), 118 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 02c6700d753f..e053d16bb9f1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "3.1.1", - "@sentry/cli": "2.39.1", + "@sentry/cli": "2.41.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index 90844ff87300..c4b528ada843 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,45 +2726,45 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz#75c338a53834b4cf72f57599f4c72ffb36cf0781" - integrity sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ== - -"@sentry/cli-linux-arm64@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz#27db44700c33fcb1e8966257020b43f8494373e6" - integrity sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw== - -"@sentry/cli-linux-arm@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz#451683fa9a5a60b1359d104ec71334ed16f4b63c" - integrity sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ== - -"@sentry/cli-linux-i686@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz#9965a81f97a94e8b6d1d15589e43fee158e35201" - integrity sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg== - -"@sentry/cli-linux-x64@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz#31fe008b02f92769543dc9919e2a5cbc4cda7889" - integrity sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA== - -"@sentry/cli-win32-i686@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz#609e8790c49414011445e397130560c777850b35" - integrity sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q== - -"@sentry/cli-win32-x64@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz#1a874a5570c6d162b35d9d001c96e5389d07d2cb" - integrity sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw== - -"@sentry/cli@2.39.1": - version "2.39.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz#916bb5b7567ccf7fdf94ef6cf8a2b9ab78370d29" - integrity sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ== +"@sentry/cli-darwin@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.41.1.tgz#ca7e12bf1ad59bc2df35868ae98abc8869108efa" + integrity sha512-7pS3pu/SuhE6jOn3wptstAg6B5nUP878O6s+2svT7b5fKNfYUi/6NPK6dAveh2Ca0rwVq40TO4YFJabWMgTpdQ== + +"@sentry/cli-linux-arm64@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.41.1.tgz#948e8af8290418b1562db3531db08e69e39d74bb" + integrity sha512-EzYCEnnENBnS5kpNW+2dBcrPZn1MVfywh2joGVQZTpmgDL5YFJ59VOd+K0XuEwqgFI8BSNI14KXZ75s4DD1/Vw== + +"@sentry/cli-linux-arm@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.41.1.tgz#1e5fa971ae8dfb3ea5564c8503b4e635ae6aed8a" + integrity sha512-wNUvquD6qjOCczvuBGf9OiD29nuQ6yf8zzfyPJa5Bdx1QXuteKsKb6HBrMwuIR3liyuu0duzHd+H/+p1n541Hg== + +"@sentry/cli-linux-i686@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.41.1.tgz#3f01aff314f2ad8fd761f3e6e807a5ec09ae4eb4" + integrity sha512-urpQCWrdYnSAsZY3udttuMV88wTJzKZL10xsrp7sjD/Hd+O6qSLVLkxebIlxts70jMLLFHYrQ2bkRg5kKuX6Fg== + +"@sentry/cli-linux-x64@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.41.1.tgz#30dbf966a4b4c1721ffccd901dfcb6f967db073d" + integrity sha512-ZqpYwHXAaK4MMEFlyaLYr6mJTmpy9qP6n30jGhLTW7kHKS3s6GPLCSlNmIfeClrInEt0963fM633ZRnXa04VPw== + +"@sentry/cli-win32-i686@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.41.1.tgz#f88eeb5d2d4ee46c38d8616ae1eb484108ea71c2" + integrity sha512-AuRimCeVsx99DIOr9cwdYBHk39tlmAuPDdy2r16iNzY0InXs4xOys4gGzM7N4vlFQvFkzuc778Su0HkfasgprA== + +"@sentry/cli-win32-x64@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.41.1.tgz#eefd95a2aa184adb464334e265b55a9142070f6f" + integrity sha512-6JcPvXGye61+wPp0xdzfc2YLE/Dcud8JdaK8VxLM3b/8+Em7E+UyliDu3uF8+YGUqizY5JYTd3fs17DC8DZhLw== + +"@sentry/cli@2.41.1": + version "2.41.1" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.41.1.tgz#a9467ca3ff4acfcdedec1565c9ff726b93758d29" + integrity sha512-0GVmDiTV7R1492wkVY4bGcfC0fSmRmQjuxaaPI8CIV9B2VP9pBVCUizi1mevXaaE4I3fM60LI+XYrKFEneuVog== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2772,13 +2772,13 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.39.1" - "@sentry/cli-linux-arm" "2.39.1" - "@sentry/cli-linux-arm64" "2.39.1" - "@sentry/cli-linux-i686" "2.39.1" - "@sentry/cli-linux-x64" "2.39.1" - "@sentry/cli-win32-i686" "2.39.1" - "@sentry/cli-win32-x64" "2.39.1" + "@sentry/cli-darwin" "2.41.1" + "@sentry/cli-linux-arm" "2.41.1" + "@sentry/cli-linux-arm64" "2.41.1" + "@sentry/cli-linux-i686" "2.41.1" + "@sentry/cli-linux-x64" "2.41.1" + "@sentry/cli-win32-i686" "2.41.1" + "@sentry/cli-win32-x64" "2.41.1" "@sentry/core@7.50.0": version "7.50.0" @@ -3328,19 +3328,7 @@ "@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": +"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@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== @@ -12071,16 +12059,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12162,14 +12141,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13082,7 +13054,7 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4": +"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@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== @@ -13171,35 +13143,6 @@ webpack-virtual-modules@^0.5.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -"webpack@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== - dependencies: - "@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" - 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" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13297,16 +13240,7 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 1063e0a2cd1093a7a33446b3930e6e77a43d2c0c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 3 Feb 2025 18:30:23 +0100 Subject: [PATCH 449/640] meta: Update changelog for `3.1.2` (#672) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c05ee0631bdc..96b4be0ad10a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.1.2 + +- deps: Bump `@sentry/cli` to `2.41.1` (#671) + ## 3.1.1 - fix(core): Disable release creation and source maps upload in dev mode (#666) From 900341064e20483c1dd4fd58a194544f2d2da14a Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 4 Feb 2025 10:07:13 +0000 Subject: [PATCH 450/640] release: 3.1.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 87deadb3945e..c28e3914339c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.1.1", + "version": "3.1.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 46697cde874d..a8c569487ca7 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.1.1", + "version": "3.1.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index e053d16bb9f1..5aca0b0685d6 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.1.1", + "version": "3.1.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.1.1", + "@sentry/babel-plugin-component-annotate": "3.1.2", "@sentry/cli": "2.41.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 710bd965a7f1..04f07a2d30b6 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5f7a0300b2c7..919ec3fa906a 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.1.1", - "@sentry/rollup-plugin": "3.1.1", - "@sentry/vite-plugin": "3.1.1", - "@sentry/webpack-plugin": "3.1.1", + "@sentry/esbuild-plugin": "3.1.2", + "@sentry/rollup-plugin": "3.1.2", + "@sentry/vite-plugin": "3.1.2", + "@sentry/webpack-plugin": "3.1.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 4b508f8aa7e4..8e444fb5180c 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.1.1", + "version": "3.1.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 70cbcec8f146..b76777964fe6 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b61f9a6d852e..acd87696b0cc 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", - "@sentry/bundler-plugin-core": "3.1.1", - "@sentry/esbuild-plugin": "3.1.1", - "@sentry/rollup-plugin": "3.1.1", - "@sentry/vite-plugin": "3.1.1", - "@sentry/webpack-plugin": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/esbuild-plugin": "3.1.2", + "@sentry/rollup-plugin": "3.1.2", + "@sentry/vite-plugin": "3.1.2", + "@sentry/webpack-plugin": "3.1.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index d7e900ebf70e..052e53ab6307 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 43c6f90d8db9..45ce12586b57 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.1.1", + "version": "3.1.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 570b992f88e0..7e65ee51d0b4 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index eabdd477e9e8..b648bc2eafba 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.1.1", + "version": "3.1.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8eea016822ca..45dbfa842108 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.1.1", + "version": "3.1.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.1", + "@sentry/bundler-plugin-core": "3.1.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.1", + "@sentry-internal/eslint-config": "3.1.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 425501238b0d08f5404d2c5b71e711a78a16cdc5 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 18 Feb 2025 17:39:37 +0100 Subject: [PATCH 451/640] feat(core): Accept and await a promise in `sourcemaps.filesToDeleteAfterUpload` (#677) Widen the accepted type for `filesToDeleteAfterSourcemaps` to allow us (as well as users) to pass in a `Promise` to do so. This promise can resolve whenever we know what to set and we await the promise before calling `glob` to get all file paths to delete. --- .../src/plugins/sourcemap-deletion.ts | 7 ++--- packages/bundler-plugin-core/src/types.ts | 6 ++++- .../src/generate-documentation-table.ts | 4 +-- .../after-upload-deletion.test.ts | 27 +++++++++++++++++++ .../input/bundle.js | 2 ++ .../after-upload-deletion-promise/setup.ts | 25 +++++++++++++++++ 6 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts create mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js create mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index f141889605e4..334282eaa5e0 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -11,7 +11,7 @@ interface FileDeletionPlugin { waitUntilSourcemapFileDependenciesAreFreed: () => Promise; sentryScope: Scope; sentryClient: Client; - filesToDeleteAfterUpload: string | string[] | undefined; + filesToDeleteAfterUpload: string | string[] | Promise | undefined; logger: Logger; } @@ -27,8 +27,9 @@ export function fileDeletionPlugin({ name: "sentry-file-deletion-plugin", async writeBundle() { try { - if (filesToDeleteAfterUpload !== undefined) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + const filesToDelete = await filesToDeleteAfterUpload; + if (filesToDelete !== undefined) { + const filePathsToDelete = await glob(filesToDelete, { absolute: true, nodir: true, }); diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index d23cb480b1c5..e6153fffed2c 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -132,9 +132,13 @@ export interface Options { * * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) * + * Note: If you pass in a promise that resolves to a string or array, the plugin will await the promise and use + * the resolved value globs. This is useful if you need to dynamically determine the files to delete. Some + * higher-level Sentry SDKs or options use this feature (e.g. SvelteKit). + * * Use the `debug` option to print information about which files end up being deleted. */ - filesToDeleteAfterUpload?: string | string[]; + filesToDeleteAfterUpload?: string | string[] | Promise; }; /** diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index bd56e487bbfe..1d2f32441ba1 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -98,9 +98,9 @@ errorHandler: (err) => { }, { name: "filesToDeleteAfterUpload", - type: "string | string[]", + type: "string | string[] | Promise", fullDescription: - "A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", + "A glob, an array of globs or a promise resolving a glob or array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", }, { name: "disable", 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 new file mode 100644 index 000000000000..0930d47479b0 --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts @@ -0,0 +1,27 @@ +/* eslint-disable jest/no-standalone-expect */ +/* eslint-disable jest/expect-expect */ +import path from "path"; +import fs from "fs"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +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("esbuild bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "esbuild", "bundle.js.map"))).toBe(false); + }); + + test("rollup bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "rollup", "bundle.js.map"))).toBe(false); + }); + + test("vite bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "vite", "bundle.js.map"))).toBe(false); + }); +}); diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js b/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js new file mode 100644 index 000000000000..aa70f660a1fc --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("whatever"); diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts new file mode 100644 index 000000000000..140a11cbf72c --- /dev/null +++ b/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts @@ -0,0 +1,25 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +["webpack4", "webpack5", "esbuild", "rollup", "vite"].forEach((bundler) => { + const fileDeletionGlobPromise = new Promise((resolve) => { + setTimeout(() => { + resolve([path.join(__dirname, "out", bundler, "bundle.js.map")]); + }, 1000); + }); + + createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + sourcemaps: { + filesToDeleteAfterUpload: fileDeletionGlobPromise, + }, + }, + [bundler] + ); +}); From a65087806e84ea683408a87f2c67a263b24ebb63 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 19 Feb 2025 09:25:25 +0100 Subject: [PATCH 452/640] meta: Update changelog for 3.2.0 (#678) Update changelog for 3.2.0 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96b4be0ad10a..454bade91ffa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.2.0 + +- feat(core): Accept and await a promise in `sourcemaps.filesToDeleteAfterUpload` (#677) + ## 3.1.2 - deps: Bump `@sentry/cli` to `2.41.1` (#671) From 9ce301a018a577093c9758dca409f7204938c278 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 19 Feb 2025 08:27:46 +0000 Subject: [PATCH 453/640] release: 3.2.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index c28e3914339c..690caeec74cc 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.1.2", + "version": "3.2.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a8c569487ca7..08fe9681e0de 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.1.2", + "version": "3.2.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5aca0b0685d6..1fda069a399c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.1.2", + "version": "3.2.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.1.2", + "@sentry/babel-plugin-component-annotate": "3.2.0", "@sentry/cli": "2.41.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 04f07a2d30b6..b2e6a5806ba4 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 919ec3fa906a..c09b93f467ce 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.1.2", - "@sentry/rollup-plugin": "3.1.2", - "@sentry/vite-plugin": "3.1.2", - "@sentry/webpack-plugin": "3.1.2", + "@sentry/esbuild-plugin": "3.2.0", + "@sentry/rollup-plugin": "3.2.0", + "@sentry/vite-plugin": "3.2.0", + "@sentry/webpack-plugin": "3.2.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 8e444fb5180c..665c1cabd0cc 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.1.2", + "version": "3.2.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/bundler-plugin-core": "3.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index b76777964fe6..97cfcc732e26 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index acd87696b0cc..33c2b0bd5682 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", - "@sentry/bundler-plugin-core": "3.1.2", - "@sentry/esbuild-plugin": "3.1.2", - "@sentry/rollup-plugin": "3.1.2", - "@sentry/vite-plugin": "3.1.2", - "@sentry/webpack-plugin": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/esbuild-plugin": "3.2.0", + "@sentry/rollup-plugin": "3.2.0", + "@sentry/vite-plugin": "3.2.0", + "@sentry/webpack-plugin": "3.2.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 052e53ab6307..abef0e5bc5ee 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/bundler-plugin-core": "3.2.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 45ce12586b57..40ec880cc5ee 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.1.2", + "version": "3.2.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/bundler-plugin-core": "3.2.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 7e65ee51d0b4..6267ca3d34e0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.1.2", + "version": "3.2.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b648bc2eafba..eeae4130fa19 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.1.2", + "version": "3.2.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/bundler-plugin-core": "3.2.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 45dbfa842108..d3545ac7047b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.1.2", + "version": "3.2.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.1.2", + "@sentry/bundler-plugin-core": "3.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.1.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.1.2", + "@sentry-internal/eslint-config": "3.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From c72d4dfbbdd907c74aa85b0fc8838a90cf828447 Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Mon, 24 Feb 2025 04:44:29 -0500 Subject: [PATCH 454/640] docs: Add react component name to readme feature list (#684) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 584cb7298712..df0e6b8ed7fc 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ The Sentry Bundler Plugins take care of Sentry-related tasks at build time of yo - Release creation in Sentry - Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) - Automatically associate errors with releases (Release injection) +- [Show React component display names for breadcrumbs and Session Replays](https://docs.sentry.io/platforms/javascript/guides/react/features/component-names/) ### More information From 0968db9da0eab9408dfc4eaea129a81ee14a16b7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Feb 2025 14:57:41 +0100 Subject: [PATCH 455/640] deps: Bump `@sentry/cli` to `2.42.2` (#685) --- CHANGELOG.md | 4 + packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 92 +++++++++++------------ 3 files changed, 51 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 454bade91ffa..5d6a89ec830f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.2.1 + +- deps: Bump @sentry/cli to 2.42.2 (#685) + ## 3.2.0 - feat(core): Accept and await a promise in `sourcemaps.filesToDeleteAfterUpload` (#677) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1fda069a399c..7edcc644bc39 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "3.2.0", - "@sentry/cli": "2.41.1", + "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index c4b528ada843..7ad0c552fee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,45 +2726,45 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.41.1.tgz#ca7e12bf1ad59bc2df35868ae98abc8869108efa" - integrity sha512-7pS3pu/SuhE6jOn3wptstAg6B5nUP878O6s+2svT7b5fKNfYUi/6NPK6dAveh2Ca0rwVq40TO4YFJabWMgTpdQ== - -"@sentry/cli-linux-arm64@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.41.1.tgz#948e8af8290418b1562db3531db08e69e39d74bb" - integrity sha512-EzYCEnnENBnS5kpNW+2dBcrPZn1MVfywh2joGVQZTpmgDL5YFJ59VOd+K0XuEwqgFI8BSNI14KXZ75s4DD1/Vw== - -"@sentry/cli-linux-arm@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.41.1.tgz#1e5fa971ae8dfb3ea5564c8503b4e635ae6aed8a" - integrity sha512-wNUvquD6qjOCczvuBGf9OiD29nuQ6yf8zzfyPJa5Bdx1QXuteKsKb6HBrMwuIR3liyuu0duzHd+H/+p1n541Hg== - -"@sentry/cli-linux-i686@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.41.1.tgz#3f01aff314f2ad8fd761f3e6e807a5ec09ae4eb4" - integrity sha512-urpQCWrdYnSAsZY3udttuMV88wTJzKZL10xsrp7sjD/Hd+O6qSLVLkxebIlxts70jMLLFHYrQ2bkRg5kKuX6Fg== - -"@sentry/cli-linux-x64@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.41.1.tgz#30dbf966a4b4c1721ffccd901dfcb6f967db073d" - integrity sha512-ZqpYwHXAaK4MMEFlyaLYr6mJTmpy9qP6n30jGhLTW7kHKS3s6GPLCSlNmIfeClrInEt0963fM633ZRnXa04VPw== - -"@sentry/cli-win32-i686@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.41.1.tgz#f88eeb5d2d4ee46c38d8616ae1eb484108ea71c2" - integrity sha512-AuRimCeVsx99DIOr9cwdYBHk39tlmAuPDdy2r16iNzY0InXs4xOys4gGzM7N4vlFQvFkzuc778Su0HkfasgprA== - -"@sentry/cli-win32-x64@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.41.1.tgz#eefd95a2aa184adb464334e265b55a9142070f6f" - integrity sha512-6JcPvXGye61+wPp0xdzfc2YLE/Dcud8JdaK8VxLM3b/8+Em7E+UyliDu3uF8+YGUqizY5JYTd3fs17DC8DZhLw== - -"@sentry/cli@2.41.1": - version "2.41.1" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.41.1.tgz#a9467ca3ff4acfcdedec1565c9ff726b93758d29" - integrity sha512-0GVmDiTV7R1492wkVY4bGcfC0fSmRmQjuxaaPI8CIV9B2VP9pBVCUizi1mevXaaE4I3fM60LI+XYrKFEneuVog== +"@sentry/cli-darwin@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz#a32a4f226e717122b37d9969e8d4d0e14779f720" + integrity sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg== + +"@sentry/cli-linux-arm64@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz#1c06c83ff21f51ec23acf5be3b1f8c7553bf86b1" + integrity sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw== + +"@sentry/cli-linux-arm@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz#00cadc359ae3c051efb3e63873c033c61dbd1ca1" + integrity sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg== + +"@sentry/cli-linux-i686@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz#3b817b715dd806c20dfbffd539725ad8089c310a" + integrity sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ== + +"@sentry/cli-linux-x64@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz#ddf906bc3071cc79ce6e633eddcb76bb9068e688" + integrity sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw== + +"@sentry/cli-win32-i686@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz#9036085c7c6ce455ad45fda411c55ff39c06eb95" + integrity sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw== + +"@sentry/cli-win32-x64@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz#7d6464b63f32c9f97fff428f246b1f039b402233" + integrity sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw== + +"@sentry/cli@2.42.2": + version "2.42.2" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.42.2.tgz#8173df4d057d600a9ef0cf1e9b42b0c6607b46e4" + integrity sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2772,13 +2772,13 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.41.1" - "@sentry/cli-linux-arm" "2.41.1" - "@sentry/cli-linux-arm64" "2.41.1" - "@sentry/cli-linux-i686" "2.41.1" - "@sentry/cli-linux-x64" "2.41.1" - "@sentry/cli-win32-i686" "2.41.1" - "@sentry/cli-win32-x64" "2.41.1" + "@sentry/cli-darwin" "2.42.2" + "@sentry/cli-linux-arm" "2.42.2" + "@sentry/cli-linux-arm64" "2.42.2" + "@sentry/cli-linux-i686" "2.42.2" + "@sentry/cli-linux-x64" "2.42.2" + "@sentry/cli-win32-i686" "2.42.2" + "@sentry/cli-win32-x64" "2.42.2" "@sentry/core@7.50.0": version "7.50.0" From 4c79586f5a6092a9f36041e4b5ea5438a3886759 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 24 Feb 2025 14:00:35 +0000 Subject: [PATCH 456/640] release: 3.2.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 690caeec74cc..63e2055a08f1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.0", + "version": "3.2.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 08fe9681e0de..c82d8632277e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.2.0", + "version": "3.2.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7edcc644bc39..0c96360561c3 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.2.0", + "version": "3.2.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.2.0", + "@sentry/babel-plugin-component-annotate": "3.2.1", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b2e6a5806ba4..088416cc8d3b 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c09b93f467ce..024eb4db633e 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.2.0", - "@sentry/rollup-plugin": "3.2.0", - "@sentry/vite-plugin": "3.2.0", - "@sentry/webpack-plugin": "3.2.0", + "@sentry/esbuild-plugin": "3.2.1", + "@sentry/rollup-plugin": "3.2.1", + "@sentry/vite-plugin": "3.2.1", + "@sentry/webpack-plugin": "3.2.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 665c1cabd0cc..af1ba72306cb 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.2.0", + "version": "3.2.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 97cfcc732e26..c6399a7a79b2 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 33c2b0bd5682..f2af519d6302 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", - "@sentry/bundler-plugin-core": "3.2.0", - "@sentry/esbuild-plugin": "3.2.0", - "@sentry/rollup-plugin": "3.2.0", - "@sentry/vite-plugin": "3.2.0", - "@sentry/webpack-plugin": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/esbuild-plugin": "3.2.1", + "@sentry/rollup-plugin": "3.2.1", + "@sentry/vite-plugin": "3.2.1", + "@sentry/webpack-plugin": "3.2.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index abef0e5bc5ee..7ed6447a8b29 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 40ec880cc5ee..34cc688ce405 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.2.0", + "version": "3.2.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6267ca3d34e0..9968a821f8b8 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index eeae4130fa19..7b9e5a8693f3 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.2.0", + "version": "3.2.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d3545ac7047b..e0938dc928e0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.2.0", + "version": "3.2.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.0", + "@sentry/bundler-plugin-core": "3.2.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.0", + "@sentry-internal/eslint-config": "3.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From ee73414589a3341c4a4a8ec8efa3116d838e33f8 Mon Sep 17 00:00:00 2001 From: abdellah hariti Date: Tue, 25 Feb 2025 12:45:34 +0000 Subject: [PATCH 457/640] chore: Suggest putting `SENTRY_AUTH_TOKEN`, `SENTRY_ORG` and `SENTRY_PROJECT` in `passThroughEnv` when using Turborepo (#675) --- packages/bundler-plugin-core/src/index.ts | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 159444bcb0d1..fc28d1c13b87 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -319,7 +319,12 @@ export function sentryUnpluginFactory({ const injectionCode = generateModuleMetadataInjectorCode(metadata); plugins.push(moduleMetadataInjectionPlugin(injectionCode)); } - + // https://turbo.build/repo/docs/reference/system-environment-variables#environment-variables-in-tasks + const isRunningInTurboRepo = Boolean(process.env["TURBO_HASH"]); + const getTruboRepoEnvPassthroughWarning = (envVarName: string) => + isRunningInTurboRepo + ? `\nYou seem to be using Truborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` + : ""; if (!options.release.name) { logger.debug( "No release name provided. Will not create release. Please set the `release.name` option to identify your release." @@ -328,15 +333,18 @@ export function sentryUnpluginFactory({ logger.debug("Running in development mode. Will not create release."); } else if (!options.authToken) { logger.warn( - "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + + getTruboRepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") ); } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( - "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + + getTruboRepoEnvPassthroughWarning("SENTRY_ORG") ); } else if (!options.project) { logger.warn( - "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + + getTruboRepoEnvPassthroughWarning("SENTRY_PROJECT") ); } else { plugins.push( @@ -378,15 +386,18 @@ export function sentryUnpluginFactory({ logger.debug("Running in development mode. Will not upload sourcemaps."); } else if (!options.authToken) { logger.warn( - "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + + getTruboRepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") ); } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( - "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + + getTruboRepoEnvPassthroughWarning("SENTRY_ORG") ); } else if (!options.project) { logger.warn( - "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + + getTruboRepoEnvPassthroughWarning("SENTRY_PROJECT") ); } else { // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins From 2fba173778893beca09e1625da88da1a110431a8 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 4 Mar 2025 15:53:36 +0100 Subject: [PATCH 458/640] fix(core): Don't crash on recoverable CLI command error (#682) --- .../src/debug-id-upload.ts | 7 ++- packages/bundler-plugin-core/src/index.ts | 22 ++++++- .../src/plugins/release-management.ts | 6 +- .../src/plugins/sourcemap-deletion.ts | 7 ++- packages/bundler-plugin-core/src/types.ts | 2 + .../fixtures/errorhandling/build-esbuild.ts | 18 ++++++ .../fixtures/errorhandling/build-rollup.ts | 24 ++++++++ .../fixtures/errorhandling/build-vite.ts | 27 +++++++++ .../fixtures/errorhandling/build-webpack4.ts | 26 ++++++++ .../fixtures/errorhandling/build-webpack5.ts | 27 +++++++++ .../errorhandling/error-no-handler.test.ts | 60 +++++++++++++++++++ .../fixtures/errorhandling/fakeSentry.js | 16 +++++ .../fixtures/errorhandling/input/bundle.js | 2 + .../fixtures/errorhandling/plugin-options.ts | 10 ++++ 14 files changed, 243 insertions(+), 11 deletions(-) create mode 100644 packages/integration-tests/fixtures/errorhandling/build-esbuild.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/build-rollup.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/build-vite.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/build-webpack4.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/build-webpack5.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts create mode 100644 packages/integration-tests/fixtures/errorhandling/fakeSentry.js create mode 100644 packages/integration-tests/fixtures/errorhandling/input/bundle.js create mode 100644 packages/integration-tests/fixtures/errorhandling/plugin-options.ts diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index d5c7358de238..d201b3a0a75e 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -12,6 +12,7 @@ import { stripQueryAndHashFromPath } from "./utils"; import { setMeasurement, spanToTraceHeader, startSpan } from "@sentry/core"; import { getDynamicSamplingContextFromSpan, Scope } from "@sentry/core"; import { Client } from "@sentry/types"; +import { HandleRecoverableErrorFn } from "./types"; interface RewriteSourcesHook { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -25,7 +26,7 @@ interface DebugIdUploadPluginOptions { releaseName?: string; dist?: string; rewriteSourcesHook?: RewriteSourcesHook; - handleRecoverableError: (error: unknown) => void; + handleRecoverableError: HandleRecoverableErrorFn; sentryScope: Scope; sentryClient: Client; sentryCliOptions: { @@ -167,7 +168,7 @@ export function createDebugIdUploadFunction({ }); await cliInstance.releases.uploadSourceMaps( - releaseName ?? "undefined", // unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow + releaseName ?? "undefined", // unfortunately this needs a value for now but it will not matter since debug IDs overpower releases anyhow { include: [ { @@ -187,7 +188,7 @@ export function createDebugIdUploadFunction({ } } catch (e) { sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); - handleRecoverableError(e); + handleRecoverableError(e, false); } finally { if (folderToCleanUp) { void startSpan({ name: "cleanup", scope: sentryScope }, async () => { diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index fc28d1c13b87..72834e926f24 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -155,7 +155,16 @@ export function sentryUnpluginFactory({ "SENTRY_PIPELINE" ] = `${unpluginMetaContext.framework}-plugin/${__PACKAGE_VERSION__}`; - function handleRecoverableError(unknownError: unknown) { + /** + * Handles errors caught and emitted in various areas of the plugin. + * + * Also sets the sentry session status according to the error handling. + * + * If users specify their custom `errorHandler` we'll leave the decision to throw + * or continue up to them. By default, @param throwByDefault controls if the plugin + * should throw an error (which causes a build fail in most bundlers) or continue. + */ + function handleRecoverableError(unknownError: unknown, throwByDefault: boolean) { sentrySession.status = "abnormal"; try { if (options.errorHandler) { @@ -170,8 +179,13 @@ export function sentryUnpluginFactory({ throw e; } } else { + // setting the session to "crashed" b/c from a plugin perspective this run failed. + // However, we're intentionally not rethrowing the error to avoid breaking the user build. sentrySession.status = "crashed"; - throw unknownError; + if (throwByDefault) { + throw unknownError; + } + logger.error("An error occurred. Couldn't finish all operations:", unknownError); } } finally { endSession(); @@ -179,8 +193,10 @@ export function sentryUnpluginFactory({ } if (!validateOptions(options, logger)) { + // Throwing by default to avoid a misconfigured plugin going unnoticed. handleRecoverableError( - new Error("Options were not set correctly. See output above for more details.") + new Error("Options were not set correctly. See output above for more details."), + true ); } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index e3f2cabfb77d..8abac956c112 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -3,7 +3,7 @@ import { Scope } from "@sentry/core"; import { UnpluginOptions } from "unplugin"; import { Logger } from "../sentry/logger"; import { safeFlushTelemetry } from "../sentry/telemetry"; -import { IncludeEntry } from "../types"; +import { HandleRecoverableErrorFn, IncludeEntry } from "../types"; import { arrayify } from "../utils"; import { Client } from "@sentry/types"; @@ -16,7 +16,7 @@ interface ReleaseManagementPluginOptions { setCommitsOption?: SentryCliCommitsOptions; deployOptions?: SentryCliNewDeployOptions; dist?: string; - handleRecoverableError: (error: unknown) => void; + handleRecoverableError: HandleRecoverableErrorFn; sentryScope: Scope; sentryClient: Client; sentryCliOptions: { @@ -100,7 +100,7 @@ export function releaseManagementPlugin({ } catch (e) { sentryScope.captureException('Error in "releaseManagementPlugin" writeBundle hook'); await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); + handleRecoverableError(e, false); } finally { freeGlobalDependencyOnSourcemapFiles(); freeWriteBundleInvocationDependencyOnSourcemapFiles(); diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 334282eaa5e0..e6efd08d5c75 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -5,9 +5,10 @@ import { safeFlushTelemetry } from "../sentry/telemetry"; import fs from "fs"; import { Scope } from "@sentry/core"; import { Client } from "@sentry/types"; +import { HandleRecoverableErrorFn } from "../types"; interface FileDeletionPlugin { - handleRecoverableError: (error: unknown) => void; + handleRecoverableError: HandleRecoverableErrorFn; waitUntilSourcemapFileDependenciesAreFreed: () => Promise; sentryScope: Scope; sentryClient: Client; @@ -59,7 +60,9 @@ export function fileDeletionPlugin({ } catch (e) { sentryScope.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); + // We throw by default if we get here b/c not being able to delete + // source maps could leak them to production + handleRecoverableError(e, true); } }, }; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index e6153fffed2c..61db9049cce8 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -552,3 +552,5 @@ type DeployOptions = { */ url?: string; }; + +export type HandleRecoverableErrorFn = (error: unknown, throwByDefault: boolean) => void; diff --git a/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts b/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts new file mode 100644 index 000000000000..080d9d124cd6 --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts @@ -0,0 +1,18 @@ +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { build } from "esbuild"; +import pluginOptions from "./plugin-options"; +import path from "path"; + +build({ + entryPoints: [path.join(__dirname, "input", "bundle.js")], + outdir: path.join(__dirname, "out", "esbuild"), + plugins: [sentryEsbuildPlugin(pluginOptions)], + minify: true, + bundle: true, + format: "cjs", + sourcemap: true, +}).catch((e) => { + // eslint-disable-next-line no-console + console.error(e); + process.exit(1); +}); diff --git a/packages/integration-tests/fixtures/errorhandling/build-rollup.ts b/packages/integration-tests/fixtures/errorhandling/build-rollup.ts new file mode 100644 index 000000000000..4fed29ea9ead --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/build-rollup.ts @@ -0,0 +1,24 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import * as path from "path"; +import * as rollup from "rollup"; +import pluginOptions from "./plugin-options"; + +rollup + .rollup({ + input: { + index: path.join(__dirname, "input", "bundle.js"), + }, + plugins: [sentryRollupPlugin(pluginOptions)], + }) + .then((bundle) => + bundle.write({ + dir: path.join(__dirname, "out", "rollup"), + format: "cjs", + exports: "named", + }) + ) + .catch((e) => { + // eslint-disable-next-line no-console + console.error(e); + process.exit(1); + }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-vite.ts b/packages/integration-tests/fixtures/errorhandling/build-vite.ts new file mode 100644 index 000000000000..a5489beb4fd2 --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/build-vite.ts @@ -0,0 +1,27 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import * as path from "path"; +import * as vite from "vite"; +import pluginOptions from "./plugin-options"; + +vite + .build({ + clearScreen: false, + build: { + outDir: path.join(__dirname, "out", "vite"), + rollupOptions: { + input: { + index: path.join(__dirname, "input", "bundle.js"), + }, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(pluginOptions)], + }) + .catch((e) => { + // eslint-disable-next-line no-console + console.error(e); + process.exit(1); + }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts b/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts new file mode 100644 index 000000000000..46db8686ecd4 --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts @@ -0,0 +1,26 @@ +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/build-webpack5.ts b/packages/integration-tests/fixtures/errorhandling/build-webpack5.ts new file mode 100644 index 000000000000..c2c31a707301 --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/build-webpack5.ts @@ -0,0 +1,27 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import * as path from "path"; +import { webpack as webpack5 } from "webpack5"; +import pluginOptions from "./plugin-options"; + +webpack5( + { + devtool: "source-map", + cache: false, + entry: { + index: path.join(__dirname, "input", "bundle.js"), + }, + output: { + path: path.join(__dirname, "out", "webpack5"), + library: { + type: "commonjs", + }, + }, + mode: "production", + 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 new file mode 100644 index 000000000000..fd93a8cb5bbc --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -0,0 +1,60 @@ +/* eslint-disable jest/no-standalone-expect */ +/* eslint-disable jest/expect-expect */ +import path from "path"; +import { spawn } from "child_process"; + +jest.setTimeout(10_000); + +describe("Error throwing by default (no errorHandler)", () => { + 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. + env: { ...process.env, FAKE_SENTRY_PORT }, + shell: true, + }); + + beforeAll(async () => { + await new Promise((resolve) => + sentryServer.on("spawn", () => { + resolve(); + }) + ); + }); + + afterAll(() => { + 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"); + } + + test.each(bundlersToTest)( + "doesn't throw when Sentry server responds with error code for %s", + async (bundler) => { + const buildProcess = spawn("yarn", ["ts-node", path.join(__dirname, `build-${bundler}.ts`)], { + env: { ...process.env, FAKE_SENTRY_PORT }, + stdio: "ignore", // <-- set to "inherit" to get build output. Deactivated to avoid spamming test logs. + shell: true, + }); + + const exitCode = await new Promise((resolve, reject) => { + buildProcess.on("exit", (code) => { + resolve(code ?? 99); + }); + + buildProcess.on("error", (err) => { + reject(err); + }); + }); + + expect(exitCode).toBe(0); + + buildProcess.kill(); + } + ); +}); diff --git a/packages/integration-tests/fixtures/errorhandling/fakeSentry.js b/packages/integration-tests/fixtures/errorhandling/fakeSentry.js new file mode 100644 index 000000000000..bacc95403e0e --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/fakeSentry.js @@ -0,0 +1,16 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { createServer } = require("http"); + +const port = process.env["FAKE_SENTRY_PORT"] || 3000; + +const server = createServer((req, res) => { + // eslint-disable-next-line no-console + console.log("[SANTRY] incoming request", req.url); + res.statusCode = 503; + res.end("Error: Santry unreachable"); +}); + +server.listen(port, () => { + // eslint-disable-next-line no-console + console.log(`[SANTRY] running on http://localhost:${port}/`); +}); diff --git a/packages/integration-tests/fixtures/errorhandling/input/bundle.js b/packages/integration-tests/fixtures/errorhandling/input/bundle.js new file mode 100644 index 000000000000..aa70f660a1fc --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/input/bundle.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("whatever"); diff --git a/packages/integration-tests/fixtures/errorhandling/plugin-options.ts b/packages/integration-tests/fixtures/errorhandling/plugin-options.ts new file mode 100644 index 000000000000..fb5960b168d1 --- /dev/null +++ b/packages/integration-tests/fixtures/errorhandling/plugin-options.ts @@ -0,0 +1,10 @@ +export default { + url: `http://localhost:${process.env["FAKE_SENTRY_PORT"] || 3000}`, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + release: { + name: "1.0.0", + }, + debug: true, +}; From 10a8b0eb5913f6131d4ed5bf040355790d067e22 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 4 Mar 2025 16:09:28 +0100 Subject: [PATCH 459/640] feat(annotation): Handle JSX member expressions (#690) --- .../src/index.ts | 23 +++++ .../__snapshots__/test-plugin.test.ts.snap | 38 ++++++++ .../test/test-plugin.test.ts | 93 +++++++++++++++++++ 3 files changed, 154 insertions(+) diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 0cd087d9956b..b1f0af1fba16 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -533,6 +533,29 @@ function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { return name.name.name; } + // Handle JSX member expressions like Tab.Group + if (t.isJSXMemberExpression(name)) { + const objectName = getJSXMemberExpressionObjectName(t, name.object); + const propertyName = name.property.name; + return `${objectName}.${propertyName}`; + } + + return UNKNOWN_ELEMENT_NAME; +} + +// Recursively handle nested member expressions (e.g. Components.UI.Header) +function getJSXMemberExpressionObjectName( + t: typeof Babel.types, + object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier +): string { + if (t.isJSXIdentifier(object)) { + return object.name; + } + if (t.isJSXMemberExpression(object)) { + const objectName = getJSXMemberExpressionObjectName(t, object.object); + return `${objectName}.${object.property.name}`; + } + return UNKNOWN_ELEMENT_NAME; } 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 adb23ee5643e..af43b6c00829 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 @@ -223,6 +223,20 @@ class componentName extends Component { export default componentName;" `; +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\\")); +}" +`; + exports[`handles ternary operation returned by function body 1`] = ` "const maybeTrue = Math.random() > 0.5; export default function componentName() { @@ -233,6 +247,30 @@ export default function componentName() { }" `; +exports[`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\\")); +}" +`; + +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\\" + }, /*#__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\\")))); +}" +`; + exports[`nonJSX snapshot matches 1`] = ` "import React, { Component } from 'react'; class TestClass extends Component { 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 7dce87adef3a..7d6a73e82edf 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -1187,3 +1187,96 @@ export default function componentName() { ); expect(result?.code).toMatchSnapshot(); }); + +it("ignores components with member expressions when in ignoredComponents", () => { + const result = transform( + `import React from 'react'; +import { Tab } from '@headlessui/react'; + +export default function TestComponent() { + return ( +
+ + + Tab 1 + Tab 2 + + + Content 1 + Content 2 + + +
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [plugin, { ignoredComponents: ["Tab.Group", "Tab.List", "Tab.Panels", "Tab.Panel"] }], + ], + } + ); + + // The component should be transformed but Tab.* components should not have annotations + expect(result?.code).toContain("React.createElement(Tab.Group"); + expect(result?.code).not.toContain('"data-sentry-element": "Tab.Group"'); + expect(result?.code).toContain("React.createElement(Tab.List"); + expect(result?.code).not.toContain('"data-sentry-element": "Tab.List"'); + expect(result?.code).toMatchSnapshot(); +}); + +it("handles nested member expressions in component names", () => { + const result = transform( + `import React from 'react'; +import { Components } from 'my-ui-library'; + +export default function TestComponent() { + return ( +
+ Click me + Title +
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { ignoredComponents: ["Components.UI.Button"] }]], + } + ); + + // Components.UI.Button should be ignored but Components.UI.Card.Header should be annotated + expect(result?.code).toContain("React.createElement(Components.UI.Button"); + expect(result?.code).not.toContain('"data-sentry-element": "Components.UI.Button"'); + expect(result?.code).toContain("React.createElement(Components.UI.Card.Header"); + expect(result?.code).toContain('"data-sentry-element": "Components.UI.Card.Header"'); + expect(result?.code).toMatchSnapshot(); +}); + +it("ignores React.Fragment with member expression handling", () => { + const result = transform( + `import React from 'react'; + +export default function TestComponent() { + return ( + +
Content
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + // React.Fragment should be ignored by default + expect(result?.code).toContain("React.createElement(React.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).toMatchSnapshot(); +}); From db87d68e18a8cfda94973121ec44cbbf658e1e4f Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 4 Mar 2025 16:23:43 +0100 Subject: [PATCH 460/640] meta: Update Changelog for 3.2.2 (#691) * meta: Update CHANGELOG for 3.2.2 * add #690 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d6a89ec830f..0caca4260883 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.2.2 + +- feat(annotation): Handle JSX member expressions (#690) +- fix(core): Don't crash on recoverable CLI command error (#682) +- chore: Suggest putting `SENTRY_AUTH_TOKEN`, `SENTRY_ORG` and `SENTRY_PROJECT` in `passThroughEnv` when using Turborepo (#675) + ## 3.2.1 - deps: Bump @sentry/cli to 2.42.2 (#685) From c5b9fdeea1f6437df84958fdf390dd38b4fca9e8 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 4 Mar 2025 15:24:59 +0000 Subject: [PATCH 461/640] release: 3.2.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 63e2055a08f1..a8033083c855 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.1", + "version": "3.2.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index c82d8632277e..59bd78bd46a8 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.2.1", + "version": "3.2.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 0c96360561c3..53c1336406d5 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.2.1", + "version": "3.2.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.2.1", + "@sentry/babel-plugin-component-annotate": "3.2.2", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 088416cc8d3b..b21707128f93 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 024eb4db633e..03f29b035517 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.2.1", - "@sentry/rollup-plugin": "3.2.1", - "@sentry/vite-plugin": "3.2.1", - "@sentry/webpack-plugin": "3.2.1", + "@sentry/esbuild-plugin": "3.2.2", + "@sentry/rollup-plugin": "3.2.2", + "@sentry/vite-plugin": "3.2.2", + "@sentry/webpack-plugin": "3.2.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index af1ba72306cb..d52b9e06f78d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.2.1", + "version": "3.2.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c6399a7a79b2..950634c6e416 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index f2af519d6302..ca00f4ff6c85 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", - "@sentry/bundler-plugin-core": "3.2.1", - "@sentry/esbuild-plugin": "3.2.1", - "@sentry/rollup-plugin": "3.2.1", - "@sentry/vite-plugin": "3.2.1", - "@sentry/webpack-plugin": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/esbuild-plugin": "3.2.2", + "@sentry/rollup-plugin": "3.2.2", + "@sentry/vite-plugin": "3.2.2", + "@sentry/webpack-plugin": "3.2.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 7ed6447a8b29..905b6fd21e6d 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 34cc688ce405..94c7e31eaf3c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.2.1", + "version": "3.2.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 9968a821f8b8..a1e153f2d7fc 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7b9e5a8693f3..6575bd31b7c5 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.2.1", + "version": "3.2.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e0938dc928e0..7af42f77c733 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.2.1", + "version": "3.2.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.1", + "@sentry/bundler-plugin-core": "3.2.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.1", + "@sentry-internal/eslint-config": "3.2.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 186a0d55bcbbab378ed08262d4038abb627674dc Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 5 Mar 2025 13:58:35 +0100 Subject: [PATCH 462/640] feat: Default to automatically setting commits on release (#692) Co-authored-by: Charly Gomez --- packages/bundler-plugin-core/src/index.ts | 4 +++- .../src/options-mapping.ts | 9 +++++++++ .../src/plugins/release-management.ts | 19 ++++++++++++++++--- packages/bundler-plugin-core/src/types.ts | 4 +++- .../test/option-mappings.test.ts | 8 ++++++++ .../src/generate-documentation-table.ts | 3 ++- .../fixtures/telemetry/telemetry.test.ts | 2 +- 7 files changed, 42 insertions(+), 7 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 72834e926f24..a5323f6ff127 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -370,7 +370,9 @@ export function sentryUnpluginFactory({ shouldCreateRelease: options.release.create, shouldFinalizeRelease: options.release.finalize, include: options.release.uploadLegacySourcemaps, - setCommitsOption: options.release.setCommits, + // setCommits has a default defined by the options mappings + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + setCommitsOption: options.release.setCommits!, deployOptions: options.release.deploy, dist: options.release.dist, handleRecoverableError: handleRecoverableError, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index ba12d3e59487..fbb656953ef6 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -26,6 +26,7 @@ export function normalizeUserOptions(userOptions: UserOptions) { create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", + setCommits: userOptions.release?.setCommits, }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, @@ -39,6 +40,14 @@ export function normalizeUserOptions(userOptions: UserOptions) { _experiments: userOptions._experiments ?? {}, }; + if (options.release.setCommits === undefined) { + options.release.setCommits = { + // @ts-expect-error This is fine + auto: true, + isDefault: true, + }; + } + return options; } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index 8abac956c112..50e0a3029258 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -13,7 +13,7 @@ interface ReleaseManagementPluginOptions { shouldCreateRelease: boolean; shouldFinalizeRelease: boolean; include?: string | IncludeEntry | Array; - setCommitsOption?: SentryCliCommitsOptions; + setCommitsOption: SentryCliCommitsOptions | false | { auto: true; isDefault: true }; deployOptions?: SentryCliNewDeployOptions; dist?: string; handleRecoverableError: HandleRecoverableErrorFn; @@ -37,6 +37,7 @@ interface ReleaseManagementPluginOptions { * Additionally, if legacy upload options are set, it uploads source maps in the legacy (non-debugId) way. */ export function releaseManagementPlugin({ + logger, releaseName, include, dist, @@ -86,8 +87,20 @@ export function releaseManagementPlugin({ }); } - if (setCommitsOption) { - await cliInstance.releases.setCommits(releaseName, setCommitsOption); + if (setCommitsOption !== false) { + try { + await cliInstance.releases.setCommits(releaseName, setCommitsOption); + } catch (e) { + // isDefault being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo + if (!("isDefault" in setCommitsOption)) { + throw e; + } else { + logger.debug( + "An error occurred setting commits on release (this message can be ignored unless your commits on release are desired):", + e + ); + } + } } if (shouldFinalizeRelease) { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 61db9049cce8..bc55427ef9ab 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -200,8 +200,10 @@ export interface Options { /** * Associates the release with its commits in Sentry. + * + * Defaults to `{ auto: true }`. Set to `false` to disable commit association. */ - setCommits?: SetCommitsOptions; + setCommits?: SetCommitsOptions | false; /** * Adds deployment information to the release in Sentry. diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 549075711086..af008ad59853 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -23,6 +23,10 @@ describe("normalizeUserOptions()", () => { create: true, vcsRemote: "origin", uploadLegacySourcemaps: "./out", + setCommits: { + auto: true, + isDefault: true, + }, }, silent: false, telemetry: true, @@ -74,6 +78,10 @@ describe("normalizeUserOptions()", () => { sourceMapReference: false, stripCommonPrefix: true, }, + setCommits: { + auto: true, + isDefault: true, + }, }, silent: false, telemetry: true, diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 1d2f32441ba1..bd522fe769af 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -154,7 +154,8 @@ errorHandler: (err) => { }, { name: "setCommits", - fullDescription: "Option to associate the created release with its commits in Sentry.", + fullDescription: + "Option to associate the created release with its commits in Sentry. Defaults to `{ auto: true }`. Set to `false` to disable.", children: [ { name: "previousCommit", diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 5015cfdf4df0..deb289e13310 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -101,7 +101,7 @@ test("rollup bundle telemetry", async () => { "upload-legacy-sourcemaps": false, "module-metadata": false, "inject-build-information": false, - "set-commits": "undefined", + "set-commits": "auto", "finalize-release": true, "deploy-options": false, "custom-error-handler": false, From d55ca963659eed0b98e7eef5d09d77179a58602e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 5 Mar 2025 14:43:54 +0100 Subject: [PATCH 463/640] feat: Detect Vercel commits and env (#694) --- .../src/options-mapping.ts | 43 ++++++++++++++++--- .../src/plugins/release-management.ts | 13 +++--- packages/bundler-plugin-core/src/types.ts | 2 +- .../test/option-mappings.test.ts | 8 +++- 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index fbb656953ef6..8b1976fe0d32 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,5 +1,5 @@ import { Logger } from "./sentry/logger"; -import { Options as UserOptions } from "./types"; +import { Options as UserOptions, SetCommitsOptions } from "./types"; import { determineReleaseName } from "./utils"; export type NormalizedOptions = ReturnType; @@ -26,7 +26,10 @@ export function normalizeUserOptions(userOptions: UserOptions) { create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", - setCommits: userOptions.release?.setCommits, + setCommits: userOptions.release?.setCommits as + | (SetCommitsOptions & { shouldNotThrowOnFailure?: boolean }) + | false + | undefined, }, bundleSizeOptimizations: userOptions.bundleSizeOptimizations, reactComponentAnnotation: userOptions.reactComponentAnnotation, @@ -41,10 +44,38 @@ export function normalizeUserOptions(userOptions: UserOptions) { }; if (options.release.setCommits === undefined) { - options.release.setCommits = { - // @ts-expect-error This is fine - auto: true, - isDefault: true, + if ( + process.env["VERCEL"] && + process.env["VERCEL_GIT_COMMIT_SHA"] && + process.env["VERCEL_GIT_REPO_SLUG"] && + process.env["VERCEL_GIT_REPO_OWNER"] + ) { + options.release.setCommits = { + shouldNotThrowOnFailure: true, + commit: process.env["VERCEL_GIT_COMMIT_SHA"], + previousCommit: process.env["VERCEL_GIT_PREVIOUS_SHA"], + repo: `${process.env["VERCEL_GIT_REPO_OWNER"]}/${process.env["VERCEL_GIT_REPO_SLUG"]}`, + ignoreEmpty: true, + ignoreMissing: true, + }; + } else { + options.release.setCommits = { + shouldNotThrowOnFailure: true, + auto: true, + ignoreEmpty: true, + ignoreMissing: true, + }; + } + } + + if ( + options.release.deploy === undefined && + process.env["VERCEL"] && + process.env["VERCEL_TARGET_ENV"] + ) { + options.release.deploy = { + env: `vercel-${process.env["VERCEL_TARGET_ENV"]}`, + url: process.env["VERCEL_URL"] ? `https://${process.env["VERCEL_URL"]}` : undefined, }; } diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts index 50e0a3029258..fd00157f5271 100644 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ b/packages/bundler-plugin-core/src/plugins/release-management.ts @@ -91,14 +91,17 @@ export function releaseManagementPlugin({ try { await cliInstance.releases.setCommits(releaseName, setCommitsOption); } catch (e) { - // isDefault being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo - if (!("isDefault" in setCommitsOption)) { - throw e; - } else { + // shouldNotThrowOnFailure being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo + if ( + "shouldNotThrowOnFailure" in setCommitsOption && + setCommitsOption.shouldNotThrowOnFailure + ) { logger.debug( - "An error occurred setting commits on release (this message can be ignored unless your commits on release are desired):", + "An error occurred setting commits on release (this message can be ignored unless you commits on release are desired):", e ); + } else { + throw e; } } } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index bc55427ef9ab..9ea123979503 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -460,7 +460,7 @@ export interface SentrySDKBuildFlags extends Record __SENTRY_EXCLUDE_REPLAY_WORKER__?: boolean; } -type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { +export type SetCommitsOptions = (AutoSetCommitsOptions | ManualSetCommitsOptions) & { /** * The commit before the beginning of this release (in other words, * the last commit of the previous release). diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index af008ad59853..f233e1e7356c 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -25,7 +25,9 @@ describe("normalizeUserOptions()", () => { uploadLegacySourcemaps: "./out", setCommits: { auto: true, - isDefault: true, + shouldNotThrowOnFailure: true, + ignoreEmpty: true, + ignoreMissing: true, }, }, silent: false, @@ -80,7 +82,9 @@ describe("normalizeUserOptions()", () => { }, setCommits: { auto: true, - isDefault: true, + shouldNotThrowOnFailure: true, + ignoreEmpty: true, + ignoreMissing: true, }, }, silent: false, From 9a7257d092a4b621205ce1bf192f71d797a58704 Mon Sep 17 00:00:00 2001 From: Caio Lins Date: Tue, 11 Mar 2025 17:32:18 +0900 Subject: [PATCH 464/640] typo: Turborepo instead of TruboRepo (#697) * typo: Turbo instead of Trubo Co-authored-by: Caio Lins * typo: Turborepo not TurboRepo Co-authored-by: Caio Lins --------- Co-authored-by: Caio Lins --- packages/bundler-plugin-core/src/index.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a5323f6ff127..0dcf278534f8 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -336,10 +336,10 @@ export function sentryUnpluginFactory({ plugins.push(moduleMetadataInjectionPlugin(injectionCode)); } // https://turbo.build/repo/docs/reference/system-environment-variables#environment-variables-in-tasks - const isRunningInTurboRepo = Boolean(process.env["TURBO_HASH"]); - const getTruboRepoEnvPassthroughWarning = (envVarName: string) => - isRunningInTurboRepo - ? `\nYou seem to be using Truborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` + const isRunningInTurborepo = Boolean(process.env["TURBO_HASH"]); + const getTurborepoEnvPassthroughWarning = (envVarName: string) => + isRunningInTurborepo + ? `\nYou seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` : ""; if (!options.release.name) { logger.debug( @@ -350,17 +350,17 @@ export function sentryUnpluginFactory({ } else if (!options.authToken) { logger.warn( "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTruboRepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") ); } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + - getTruboRepoEnvPassthroughWarning("SENTRY_ORG") + getTurborepoEnvPassthroughWarning("SENTRY_ORG") ); } else if (!options.project) { logger.warn( "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + - getTruboRepoEnvPassthroughWarning("SENTRY_PROJECT") + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") ); } else { plugins.push( @@ -405,17 +405,17 @@ export function sentryUnpluginFactory({ } else if (!options.authToken) { logger.warn( "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTruboRepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") ); } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + - getTruboRepoEnvPassthroughWarning("SENTRY_ORG") + getTurborepoEnvPassthroughWarning("SENTRY_ORG") ); } else if (!options.project) { logger.warn( "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + - getTruboRepoEnvPassthroughWarning("SENTRY_PROJECT") + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") ); } else { // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins From e00a4724db8bcc4f2d4255832600304fa2cbae2a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 17 Mar 2025 10:20:27 +0100 Subject: [PATCH 465/640] docs: Warn about risks of `reactComponentAnnotation` (#699) --- packages/dev-utils/src/generate-documentation-table.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index bd522fe769af..197673a2dd82 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -377,12 +377,8 @@ type IncludeEntry = { }, { name: "reactComponentAnnotation", - fullDescription: `Options related to react component name annotations. - Disabled by default, unless a value is set for this option. - When enabled, your app's DOM will automatically be annotated during build-time with their respective component names. - This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. - Please note that this feature is not currently supported by the esbuild bundler plugins, and will only annotate React components - `, + fullDescription: `(NOTICE: Use the react component annotation feature with caution. The option will pass additional properties to your React components which may lead to errors if libraries or your own code iterate through component props without checking for the additional Sentry props.)\n\nOptions related to react component name annotations. + Disabled by default, unless a value is set for this option.\nWhen enabled, your app's DOM will automatically be annotated during build-time with their respective component names.\nThis will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring.`, supportedBundlers: ["webpack", "vite", "rollup"], children: [ { From 368add492065be98c81e915379fe38289d2701cc Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Mar 2025 11:13:30 +0100 Subject: [PATCH 466/640] feat(webpack): Primarily use `contentHash` for debug ID hash (#702) --- packages/webpack-plugin/src/index.ts | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index c69a2b3e9148..089d9cf48973 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -13,11 +13,14 @@ import { v4 as uuidv4 } from "uuid"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack is a peer dep -import * as webback4or5 from "webpack"; +import * as webpack4or5 from "webpack"; interface BannerPluginCallbackArg { chunk?: { hash?: string; + contentHash?: { + javascript?: string; + }; }; } @@ -33,8 +36,8 @@ function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access compiler?.webpack?.BannerPlugin || - webback4or5?.BannerPlugin || - webback4or5?.default?.BannerPlugin; + webpack4or5?.BannerPlugin || + webpack4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call @@ -74,8 +77,8 @@ function webpackBundleSizeOptimizationsPlugin( // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access compiler?.webpack?.DefinePlugin || - webback4or5?.DefinePlugin || - webback4or5?.default?.DefinePlugin; + webpack4or5?.DefinePlugin || + webpack4or5?.default?.DefinePlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call @@ -99,8 +102,8 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access compiler?.webpack?.BannerPlugin || - webback4or5?.BannerPlugin || - webback4or5?.default?.BannerPlugin; + webpack4or5?.BannerPlugin || + webpack4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call @@ -108,7 +111,8 @@ function webpackDebugIdInjectionPlugin(): UnpluginOptions { raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, banner: (arg?: BannerPluginCallbackArg) => { - const debugId = arg?.chunk?.hash ? stringToUUID(arg.chunk.hash) : uuidv4(); + const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; + const debugId = hash ? stringToUUID(hash) : uuidv4(); return getDebugIdSnippet(debugId); }, }) @@ -161,8 +165,8 @@ function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp // @ts-ignore webpack version compatibility shenanigans // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access compiler?.webpack?.BannerPlugin || - webback4or5?.BannerPlugin || - webback4or5?.default?.BannerPlugin; + webpack4or5?.BannerPlugin || + webpack4or5?.default?.BannerPlugin; compiler.options.plugins = compiler.options.plugins || []; compiler.options.plugins.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call From e7251f88aa37088b7f58abd9268359c1888a66e6 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 24 Mar 2025 14:42:46 +0100 Subject: [PATCH 467/640] feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700) --- .../src/debug-id-upload.ts | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index d201b3a0a75e..3c45838854c7 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -213,7 +213,7 @@ export async function prepareBundleForDebugIdUpload( logger: Logger, rewriteSourcesHook: RewriteSourcesHook ) { - let bundleContent; + let bundleContent: string; try { bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); } catch (e) { @@ -232,14 +232,11 @@ export async function prepareBundleForDebugIdUpload( return; } - const uniqueUploadName = `${debugId}-${chunkIndex}`; - + const uniqueSourceFileUploadPath = getUniqueUploadPath(uploadFolder, chunkIndex, bundleFilePath); bundleContent += `\n//# debugId=${debugId}`; - const writeSourceFilePromise = fs.promises.writeFile( - path.join(uploadFolder, `${uniqueUploadName}.js`), - bundleContent, - "utf-8" - ); + const writeSourceFilePromise = fs.promises + .mkdir(path.dirname(uniqueSourceFileUploadPath), { recursive: true }) + .then(() => fs.promises.writeFile(uniqueSourceFileUploadPath, bundleContent, "utf-8")); const writeSourceMapFilePromise = determineSourceMapPathFromBundle( bundleFilePath, @@ -249,7 +246,7 @@ export async function prepareBundleForDebugIdUpload( if (sourceMapPath) { await prepareSourceMapForDebugIdUpload( sourceMapPath, - path.join(uploadFolder, `${uniqueUploadName}.js.map`), + getUniqueUploadPath(uploadFolder, chunkIndex, sourceMapPath), debugId, rewriteSourcesHook, logger @@ -261,6 +258,27 @@ export async function prepareBundleForDebugIdUpload( await writeSourceMapFilePromise; } +function getUniqueUploadPath(uploadFolder: string, chunkIndex: number, filePath: string) { + return path.join( + uploadFolder, + // We add a "chunk index" segment to the path that is a simple incrementing number to avoid name collisions. + // Name collisions can happen when files are located "outside" of the current working directory, at different levels but they share a subpath. + // Example: + // - CWD: /root/foo/cwd + // - File 1: /root/foo/index.js -> ../foo/index.js -> foo/index.js + // - File 2: /foo/index.js -> ../../foo/index.js -> foo/index.js + `${chunkIndex}`, + path.normalize( + path + .relative(process.cwd(), filePath) + .split(path.sep) + // We filter out these "navigation" segments because a) they look ugly b) they will cause us to break out of the upload folder. + .filter((segment) => segment !== ".." && segment !== ".") + .join(path.sep) + ) + ); +} + /** * Looks for a particular string pattern (`sdbid-[debug ID]`) in the bundle * source and extracts the bundle's debug ID from it. @@ -379,7 +397,8 @@ async function prepareSourceMapForDebugIdUpload( } try { - await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { + await fs.promises.mkdir(path.dirname(targetPath), { recursive: true }); + await fs.promises.writeFile(targetPath, JSON.stringify(map), { encoding: "utf8", }); } catch (e) { From 2a4d298057329581b485ee67912d66c862fa77fd Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 26 Mar 2025 13:54:39 +0100 Subject: [PATCH 468/640] meta: Update changelog for `3.2.3` (#705) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0caca4260883..f319ea5b84d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.2.3 + +- feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700) +- feat(webpack): Primarily use `contentHash` for debug ID hash (#702) +- feat: Detect Vercel commits and env (#694) +- feat: Default to automatically setting commits on release (#692) + ## 3.2.2 - feat(annotation): Handle JSX member expressions (#690) From 3bd3bb34e197f98efe1626e8d858ed3a0059b343 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 26 Mar 2025 12:55:47 +0000 Subject: [PATCH 469/640] release: 3.2.3 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index a8033083c855..3e9cdc39c653 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.2", + "version": "3.2.3", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 59bd78bd46a8..aaeac98c104d 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.2.2", + "version": "3.2.3", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 53c1336406d5..a092d0612e6a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.2.2", + "version": "3.2.3", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.2.2", + "@sentry/babel-plugin-component-annotate": "3.2.3", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b21707128f93..e7080acfb941 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 03f29b035517..a0c341c0eba9 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.2.2", - "@sentry/rollup-plugin": "3.2.2", - "@sentry/vite-plugin": "3.2.2", - "@sentry/webpack-plugin": "3.2.2", + "@sentry/esbuild-plugin": "3.2.3", + "@sentry/rollup-plugin": "3.2.3", + "@sentry/vite-plugin": "3.2.3", + "@sentry/webpack-plugin": "3.2.3", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d52b9e06f78d..3438527f8571 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.2.2", + "version": "3.2.3", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 950634c6e416..9b5d41b79860 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index ca00f4ff6c85..3514af82f62e 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", - "@sentry/bundler-plugin-core": "3.2.2", - "@sentry/esbuild-plugin": "3.2.2", - "@sentry/rollup-plugin": "3.2.2", - "@sentry/vite-plugin": "3.2.2", - "@sentry/webpack-plugin": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/esbuild-plugin": "3.2.3", + "@sentry/rollup-plugin": "3.2.3", + "@sentry/vite-plugin": "3.2.3", + "@sentry/webpack-plugin": "3.2.3", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 905b6fd21e6d..9aded6edc160 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.3", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 94c7e31eaf3c..f864ca818953 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.2.2", + "version": "3.2.3", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.3", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index a1e153f2d7fc..542d3e9781ad 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6575bd31b7c5..883639d502c2 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.2.2", + "version": "3.2.3", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.3", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 7af42f77c733..9719135e5dee 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.2.2", + "version": "3.2.3", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.2", + "@sentry/bundler-plugin-core": "3.2.3", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.2.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.2", + "@sentry-internal/eslint-config": "3.2.3", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From a70ab2dc24555fa6844dbf61b8b52297bb700d36 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 26 Mar 2025 16:45:46 +0100 Subject: [PATCH 470/640] ref: Remove deprecated use of `useArtifacBundles` (#707) --- packages/bundler-plugin-core/src/debug-id-upload.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 3c45838854c7..5fe0012477b1 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -177,7 +177,6 @@ export function createDebugIdUploadFunction({ dist: dist, }, ], - useArtifactBundle: true, } ); }); From 6cce90ae80afd5afbbb7c8a51a13c7a127309b9e Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 28 Mar 2025 12:47:50 +0100 Subject: [PATCH 471/640] Revert "feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700)" (#709) --- CHANGELOG.md | 5 +++ .../src/debug-id-upload.ts | 39 +++++-------------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f319ea5b84d8..2a4e8178c3b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.2.4 + +- Revert "feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700)" (#709) +- ref: Remove deprecated use of `useArtifacBundles` (#707) + ## 3.2.3 - feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 5fe0012477b1..7b35c4594525 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -212,7 +212,7 @@ export async function prepareBundleForDebugIdUpload( logger: Logger, rewriteSourcesHook: RewriteSourcesHook ) { - let bundleContent: string; + let bundleContent; try { bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); } catch (e) { @@ -231,11 +231,14 @@ export async function prepareBundleForDebugIdUpload( return; } - const uniqueSourceFileUploadPath = getUniqueUploadPath(uploadFolder, chunkIndex, bundleFilePath); + const uniqueUploadName = `${debugId}-${chunkIndex}`; + bundleContent += `\n//# debugId=${debugId}`; - const writeSourceFilePromise = fs.promises - .mkdir(path.dirname(uniqueSourceFileUploadPath), { recursive: true }) - .then(() => fs.promises.writeFile(uniqueSourceFileUploadPath, bundleContent, "utf-8")); + const writeSourceFilePromise = fs.promises.writeFile( + path.join(uploadFolder, `${uniqueUploadName}.js`), + bundleContent, + "utf-8" + ); const writeSourceMapFilePromise = determineSourceMapPathFromBundle( bundleFilePath, @@ -245,7 +248,7 @@ export async function prepareBundleForDebugIdUpload( if (sourceMapPath) { await prepareSourceMapForDebugIdUpload( sourceMapPath, - getUniqueUploadPath(uploadFolder, chunkIndex, sourceMapPath), + path.join(uploadFolder, `${uniqueUploadName}.js.map`), debugId, rewriteSourcesHook, logger @@ -257,27 +260,6 @@ export async function prepareBundleForDebugIdUpload( await writeSourceMapFilePromise; } -function getUniqueUploadPath(uploadFolder: string, chunkIndex: number, filePath: string) { - return path.join( - uploadFolder, - // We add a "chunk index" segment to the path that is a simple incrementing number to avoid name collisions. - // Name collisions can happen when files are located "outside" of the current working directory, at different levels but they share a subpath. - // Example: - // - CWD: /root/foo/cwd - // - File 1: /root/foo/index.js -> ../foo/index.js -> foo/index.js - // - File 2: /foo/index.js -> ../../foo/index.js -> foo/index.js - `${chunkIndex}`, - path.normalize( - path - .relative(process.cwd(), filePath) - .split(path.sep) - // We filter out these "navigation" segments because a) they look ugly b) they will cause us to break out of the upload folder. - .filter((segment) => segment !== ".." && segment !== ".") - .join(path.sep) - ) - ); -} - /** * Looks for a particular string pattern (`sdbid-[debug ID]`) in the bundle * source and extracts the bundle's debug ID from it. @@ -396,8 +378,7 @@ async function prepareSourceMapForDebugIdUpload( } try { - await fs.promises.mkdir(path.dirname(targetPath), { recursive: true }); - await fs.promises.writeFile(targetPath, JSON.stringify(map), { + await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { encoding: "utf8", }); } catch (e) { From 055934890fc39c8c290c5c2dc62919cb713a3f15 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 28 Mar 2025 11:49:08 +0000 Subject: [PATCH 472/640] release: 3.2.4 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 3e9cdc39c653..2a9efee3031b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.3", + "version": "3.2.4", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index aaeac98c104d..f80406b06758 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.2.3", + "version": "3.2.4", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a092d0612e6a..212a56e03895 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.2.3", + "version": "3.2.4", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.2.3", + "@sentry/babel-plugin-component-annotate": "3.2.4", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index e7080acfb941..bf32284a1c03 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index a0c341c0eba9..f474b6cb20b3 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.2.3", - "@sentry/rollup-plugin": "3.2.3", - "@sentry/vite-plugin": "3.2.3", - "@sentry/webpack-plugin": "3.2.3", + "@sentry/esbuild-plugin": "3.2.4", + "@sentry/rollup-plugin": "3.2.4", + "@sentry/vite-plugin": "3.2.4", + "@sentry/webpack-plugin": "3.2.4", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 3438527f8571..9bee266693ef 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.2.3", + "version": "3.2.4", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.4", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9b5d41b79860..cb1c9556bb77 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3514af82f62e..5b1d83620ea3 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", - "@sentry/bundler-plugin-core": "3.2.3", - "@sentry/esbuild-plugin": "3.2.3", - "@sentry/rollup-plugin": "3.2.3", - "@sentry/vite-plugin": "3.2.3", - "@sentry/webpack-plugin": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/esbuild-plugin": "3.2.4", + "@sentry/rollup-plugin": "3.2.4", + "@sentry/vite-plugin": "3.2.4", + "@sentry/webpack-plugin": "3.2.4", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9aded6edc160..be6f06a55f8d 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.4", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index f864ca818953..74a5b0197f0a 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.2.3", + "version": "3.2.4", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.4", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 542d3e9781ad..6eeb584471bb 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.2.3", + "version": "3.2.4", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 883639d502c2..7da8bdb7f0b3 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.2.3", + "version": "3.2.4", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.4", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 9719135e5dee..699d6caecb4d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.2.3", + "version": "3.2.4", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.3", + "@sentry/bundler-plugin-core": "3.2.4", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.2.3", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.3", + "@sentry-internal/eslint-config": "3.2.4", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 95e5cca323e67d535993ef7bf1985d645b3c38e7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 31 Mar 2025 09:55:32 +0200 Subject: [PATCH 473/640] feat: Only do automatic commit association for Vercel production environments (#711) --- packages/bundler-plugin-core/src/options-mapping.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 8b1976fe0d32..83bf11cbe33d 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -48,7 +48,11 @@ export function normalizeUserOptions(userOptions: UserOptions) { process.env["VERCEL"] && process.env["VERCEL_GIT_COMMIT_SHA"] && process.env["VERCEL_GIT_REPO_SLUG"] && - process.env["VERCEL_GIT_REPO_OWNER"] + process.env["VERCEL_GIT_REPO_OWNER"] && + // We only want to set commits for the production env because Sentry becomes extremely noisy (eg on slack) for + // preview environments because the previous commit is always the "stem" commit of the preview/PR causing Sentry + // to notify you for other people creating PRs. + process.env["VERCEL_TARGET_ENV"] === "production" ) { options.release.setCommits = { shouldNotThrowOnFailure: true, From f577a472b687f4b7e76c15833b5d31f3e5ea2ef4 Mon Sep 17 00:00:00 2001 From: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com> Date: Wed, 2 Apr 2025 18:04:22 +0200 Subject: [PATCH 474/640] feat(webpack): Add `sentry/webpack-plugin/webpack5` export for webpack 5.1+ and compatible environments (#715) --- packages/webpack-plugin/README_TEMPLATE.md | 2 + packages/webpack-plugin/package.json | 7 +- packages/webpack-plugin/rollup.config.js | 7 +- packages/webpack-plugin/src/index.ts | 202 +-------------- packages/webpack-plugin/src/webpack4and5.ts | 235 ++++++++++++++++++ packages/webpack-plugin/src/webpack5.ts | 11 + packages/webpack-plugin/test/webpack5.test.ts | 24 ++ 7 files changed, 288 insertions(+), 200 deletions(-) create mode 100644 packages/webpack-plugin/src/webpack4and5.ts create mode 100644 packages/webpack-plugin/src/webpack5.ts create mode 100644 packages/webpack-plugin/test/webpack5.test.ts diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index fa02bed19a22..2b25c4a24dec 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -37,6 +37,8 @@ pnpm add @sentry/webpack-plugin --save-dev ```js // webpack.config.js const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); +// for webpack 5.1 and webpack compatible environments +// const { sentryWebpackPlugin } = require("@sentry/webpack-plugin/webpack5"); module.exports = { // ... other config above ... diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 699d6caecb4d..3731ef01c1a1 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -23,13 +23,18 @@ "import": "./dist/esm/index.mjs", "require": "./dist/cjs/index.js", "types": "./dist/types/index.d.ts" + }, + "./webpack5": { + "import": "./dist/esm/webpack5.mjs", + "require": "./dist/cjs/webpack5.js", + "types": "./dist/types/webpack5.d.ts" } }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "rimraf ./dist && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index 8751124bf233..3f0be9623511 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -3,7 +3,7 @@ import babel from "@rollup/plugin-babel"; import packageJson from "./package.json"; import modulePackage from "module"; -const input = ["src/index.ts"]; +const input = ["src/index.ts", "src/webpack5.ts"]; const extensions = [".ts"]; @@ -33,13 +33,14 @@ export default { ], output: [ { - file: packageJson.module, + dir: "./dist/esm", format: "esm", exports: "named", sourcemap: true, + entryFileNames: "[name].mjs", }, { - file: packageJson.main, + dir: "./dist/cjs", format: "cjs", exports: "named", sourcemap: true, diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 089d9cf48973..9b1bfa242add 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,208 +1,18 @@ -import { - getDebugIdSnippet, - Options, - sentryUnpluginFactory, - stringToUUID, - SentrySDKBuildFlags, - createComponentNameAnnotateHooks, - Logger, -} from "@sentry/bundler-plugin-core"; -import * as path from "path"; -import { UnpluginOptions } from "unplugin"; -import { v4 as uuidv4 } from "uuid"; +import { SentryWebpackPluginOptions, sentryWebpackUnpluginFactory } from "./webpack4and5"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack is a peer dep import * as webpack4or5 from "webpack"; -interface BannerPluginCallbackArg { - chunk?: { - hash?: string; - contentHash?: { - javascript?: string; - }; - }; -} +const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPlugin; -function webpackReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { - return { - name: "sentry-webpack-release-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || - webpack4or5?.BannerPlugin || - webpack4or5?.default?.BannerPlugin; - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: injectionCode, - }) - ); - }, - }; -} +const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; -function webpackComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { - return { - name: "sentry-webpack-component-name-annotate-plugin", - enforce: "pre", - // Webpack needs this hook for loader logic, so the plugin is not run on unsupported file types - transformInclude(id) { - return id.endsWith(".tsx") || id.endsWith(".jsx"); - }, - transform: createComponentNameAnnotateHooks(ignoredComponents).transform, - }; -} - -function webpackBundleSizeOptimizationsPlugin( - replacementValues: SentrySDKBuildFlags -): UnpluginOptions { - return { - name: "sentry-webpack-bundle-size-optimizations-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const DefinePlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.DefinePlugin || - webpack4or5?.DefinePlugin || - webpack4or5?.default?.DefinePlugin; - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new DefinePlugin({ - ...replacementValues, - }) - ); - }, - }; -} - -function webpackDebugIdInjectionPlugin(): UnpluginOptions { - return { - name: "sentry-webpack-debug-id-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || - webpack4or5?.BannerPlugin || - webpack4or5?.default?.BannerPlugin; - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: (arg?: BannerPluginCallbackArg) => { - const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; - const debugId = hash ? stringToUUID(hash) : uuidv4(); - return getDebugIdSnippet(debugId); - }, - }) - ); - }, - }; -} - -function webpackDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - forceExitOnBuildCompletion?: boolean -): UnpluginOptions { - const pluginName = "sentry-webpack-debug-id-upload-plugin"; - return { - name: pluginName, - webpack(compiler) { - compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback: () => void) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const outputPath = (compilation.outputOptions.path as string | undefined) ?? path.resolve(); - const buildArtifacts = Object.keys(compilation.assets as Record).map( - (asset) => path.join(outputPath, asset) - ); - void upload(buildArtifacts).then(() => { - callback(); - }); - }); - - if (forceExitOnBuildCompletion && compiler.options.mode === "production") { - compiler.hooks.done.tap(pluginName, () => { - setTimeout(() => { - logger.debug("Exiting process after debug file upload"); - process.exit(0); - }); - }); - } - }, - }; -} - -function webpackModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { - return { - name: "sentry-webpack-module-metadata-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || - webpack4or5?.BannerPlugin || - webpack4or5?.default?.BannerPlugin; - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: injectionCode, - }) - ); - }, - }; -} - -const sentryUnplugin = sentryUnpluginFactory({ - releaseInjectionPlugin: webpackReleaseInjectionPlugin, - componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin, - moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin, - debugIdInjectionPlugin: webpackDebugIdInjectionPlugin, - debugIdUploadPlugin: webpackDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin, +const sentryUnplugin = sentryWebpackUnpluginFactory({ + BannerPlugin, + DefinePlugin, }); -type SentryWebpackPluginOptions = Options & { - _experiments?: Options["_experiments"] & { - /** - * If enabled, the webpack plugin will exit the build process after the build completes. - * Use this with caution, as it will terminate the process. - * - * More information: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/345 - * - * @default false - */ - forceExitOnBuildCompletion?: boolean; - }; -}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = sentryUnplugin.webpack; diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts new file mode 100644 index 000000000000..e9304038e23e --- /dev/null +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -0,0 +1,235 @@ +import { + getDebugIdSnippet, + Options, + sentryUnpluginFactory, + stringToUUID, + SentrySDKBuildFlags, + createComponentNameAnnotateHooks, + Logger, +} from "@sentry/bundler-plugin-core"; +import * as path from "path"; +import { UnpluginOptions } from "unplugin"; +import { v4 as uuidv4 } from "uuid"; + +// since webpack 5.1 compiler contains webpack module so plugins always use correct webpack version +// https://github.com/webpack/webpack/commit/65eca2e529ce1d79b79200d4bdb1ce1b81141459 + +interface BannerPluginCallbackArg { + chunk?: { + hash?: string; + contentHash?: { + javascript?: string; + }; + }; +} + +type UnsafeBannerPlugin = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (options: any): unknown; +}; + +type UnsafeDefinePlugin = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (options: any): unknown; +}; + +function webpackReleaseInjectionPlugin( + UnsafeBannerPlugin: UnsafeBannerPlugin | undefined +): (injectionCode: string) => UnpluginOptions { + return (injectionCode: string): UnpluginOptions => ({ + name: "sentry-webpack-release-injection-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; + + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, + banner: injectionCode, + }) + ); + }, + }); +} + +function webpackComponentNameAnnotatePlugin(): (ignoredComponents?: string[]) => UnpluginOptions { + return (ignoredComponents?: string[]) => ({ + name: "sentry-webpack-component-name-annotate-plugin", + enforce: "pre", + // Webpack needs this hook for loader logic, so the plugin is not run on unsupported file types + transformInclude(id) { + return id.endsWith(".tsx") || id.endsWith(".jsx"); + }, + transform: createComponentNameAnnotateHooks(ignoredComponents).transform, + }); +} + +function webpackBundleSizeOptimizationsPlugin( + UnsafeDefinePlugin: UnsafeDefinePlugin | undefined +): (replacementValues: SentrySDKBuildFlags) => UnpluginOptions { + return (replacementValues: SentrySDKBuildFlags) => ({ + name: "sentry-webpack-bundle-size-optimizations-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const DefinePlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.DefinePlugin || UnsafeDefinePlugin; + + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new DefinePlugin({ + ...replacementValues, + }) + ); + }, + }); +} + +function webpackDebugIdInjectionPlugin( + UnsafeBannerPlugin: UnsafeBannerPlugin | undefined +): () => UnpluginOptions { + return () => ({ + name: "sentry-webpack-debug-id-injection-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; + + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, + banner: (arg?: BannerPluginCallbackArg) => { + const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; + const debugId = hash ? stringToUUID(hash) : uuidv4(); + return getDebugIdSnippet(debugId); + }, + }) + ); + }, + }); +} + +function webpackDebugIdUploadPlugin(): ( + upload: (buildArtifacts: string[]) => Promise, + logger: Logger, + forceExitOnBuildCompletion?: boolean +) => UnpluginOptions { + const pluginName = "sentry-webpack-debug-id-upload-plugin"; + return ( + upload: (buildArtifacts: string[]) => Promise, + logger: Logger, + forceExitOnBuildCompletion?: boolean + ) => ({ + name: pluginName, + webpack(compiler) { + compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback: () => void) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const outputPath = (compilation.outputOptions.path as string | undefined) ?? path.resolve(); + const buildArtifacts = Object.keys(compilation.assets as Record).map( + (asset) => path.join(outputPath, asset) + ); + void upload(buildArtifacts).then(() => { + callback(); + }); + }); + + if (forceExitOnBuildCompletion && compiler.options.mode === "production") { + compiler.hooks.done.tap(pluginName, () => { + setTimeout(() => { + logger.debug("Exiting process after debug file upload"); + process.exit(0); + }); + }); + } + }, + }); +} + +function webpackModuleMetadataInjectionPlugin( + UnsafeBannerPlugin: UnsafeBannerPlugin | undefined +): (injectionCode: string) => UnpluginOptions { + return (injectionCode: string) => ({ + name: "sentry-webpack-module-metadata-injection-plugin", + webpack(compiler) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + const BannerPlugin = + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore webpack version compatibility shenanigans + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; + + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, + banner: injectionCode, + }) + ); + }, + }); +} + +/** + * The factory function accepts BannerPlugin and DefinePlugin classes in + * order to avoid direct dependencies on webpack. + * + * This allow us to export version of the plugin for webpack 5.1+ and compatible environments. + * + * Since webpack 5.1 compiler contains webpack module so plugins always use correct webpack version. + */ +export function sentryWebpackUnpluginFactory({ + BannerPlugin, + DefinePlugin, +}: { + BannerPlugin?: UnsafeBannerPlugin; + DefinePlugin?: UnsafeDefinePlugin; +} = {}): ReturnType { + return sentryUnpluginFactory({ + releaseInjectionPlugin: webpackReleaseInjectionPlugin(BannerPlugin), + componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin(), + moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin(BannerPlugin), + debugIdInjectionPlugin: webpackDebugIdInjectionPlugin(BannerPlugin), + debugIdUploadPlugin: webpackDebugIdUploadPlugin(), + bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin(DefinePlugin), + }); +} + +export type SentryWebpackPluginOptions = Options & { + _experiments?: Options["_experiments"] & { + /** + * If enabled, the webpack plugin will exit the build process after the build completes. + * Use this with caution, as it will terminate the process. + * + * More information: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/345 + * + * @default false + */ + forceExitOnBuildCompletion?: boolean; + }; +}; diff --git a/packages/webpack-plugin/src/webpack5.ts b/packages/webpack-plugin/src/webpack5.ts new file mode 100644 index 000000000000..421f5eb8159e --- /dev/null +++ b/packages/webpack-plugin/src/webpack5.ts @@ -0,0 +1,11 @@ +import { SentryWebpackPluginOptions, sentryWebpackUnpluginFactory } from "./webpack4and5"; + +const sentryUnplugin = sentryWebpackUnpluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = + sentryUnplugin.webpack; + +export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; + +export type { SentryWebpackPluginOptions }; diff --git a/packages/webpack-plugin/test/webpack5.test.ts b/packages/webpack-plugin/test/webpack5.test.ts new file mode 100644 index 000000000000..09d7df0579d3 --- /dev/null +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -0,0 +1,24 @@ +import { Plugin } from "webpack"; +import { sentryWebpackPlugin } from "../src/webpack5"; + +jest.mock("webpack", () => { + throw new Error("Webpack 5 version of the plugin should use module from compiler."); +}); + +test("Webpack plugin should exist", () => { + expect(sentryWebpackPlugin).toBeDefined(); + expect(typeof sentryWebpackPlugin).toBe("function"); +}); + +describe("sentryWebpackPlugin", () => { + it("returns a webpack plugin", () => { + const plugin = sentryWebpackPlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + }) as Plugin; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect(plugin).toEqual({ apply: expect.any(Function) }); + }); +}); From 45cf007acfbb1791ae6d8864f9e6e2ca45d7522f Mon Sep 17 00:00:00 2001 From: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:24:47 +0200 Subject: [PATCH 475/640] meta(changelog): Add 3.3.0 release (#719) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a4e8178c3b5..46935e113456 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.3.0 + +- feat(webpack): Add `@sentry/webpack-plugin/webpack5` export for webpack 5.1+ and compatible environments (#715) + ## 3.2.4 - Revert "feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700)" (#709) From 8a4d4cb1d08749b5dafadb7a0ef46394be965466 Mon Sep 17 00:00:00 2001 From: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:30:00 +0200 Subject: [PATCH 476/640] meta(changelog): Add missing feature entry for 3.3.0 release (#720) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46935e113456..537e3d197b81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ## 3.3.0 - feat(webpack): Add `@sentry/webpack-plugin/webpack5` export for webpack 5.1+ and compatible environments (#715) +- feat: Only do automatic commit association for Vercel production environments (#711) ## 3.2.4 From 29d15bc7817b542c52514ca7972a383a72c222c2 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 4 Apr 2025 07:30:42 +0000 Subject: [PATCH 477/640] release: 3.3.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 2a9efee3031b..3be61933fa7a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.4", + "version": "3.3.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index f80406b06758..b60102199a97 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.2.4", + "version": "3.3.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 212a56e03895..a7ebb431f2ba 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.2.4", + "version": "3.3.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.2.4", + "@sentry/babel-plugin-component-annotate": "3.3.0", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index bf32284a1c03..9b89e8a01803 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index f474b6cb20b3..1cc81fafd01a 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.2.4", - "@sentry/rollup-plugin": "3.2.4", - "@sentry/vite-plugin": "3.2.4", - "@sentry/webpack-plugin": "3.2.4", + "@sentry/esbuild-plugin": "3.3.0", + "@sentry/rollup-plugin": "3.3.0", + "@sentry/vite-plugin": "3.3.0", + "@sentry/webpack-plugin": "3.3.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 9bee266693ef..83527c18e48a 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.2.4", + "version": "3.3.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/bundler-plugin-core": "3.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index cb1c9556bb77..d56184a9af49 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5b1d83620ea3..38cd55bcb6f3 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", - "@sentry/bundler-plugin-core": "3.2.4", - "@sentry/esbuild-plugin": "3.2.4", - "@sentry/rollup-plugin": "3.2.4", - "@sentry/vite-plugin": "3.2.4", - "@sentry/webpack-plugin": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/esbuild-plugin": "3.3.0", + "@sentry/rollup-plugin": "3.3.0", + "@sentry/vite-plugin": "3.3.0", + "@sentry/webpack-plugin": "3.3.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index be6f06a55f8d..0cb9579b63fe 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/bundler-plugin-core": "3.3.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 74a5b0197f0a..8c9569834310 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.2.4", + "version": "3.3.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/bundler-plugin-core": "3.3.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6eeb584471bb..c251bb6a5731 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.2.4", + "version": "3.3.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7da8bdb7f0b3..b8538d323239 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.2.4", + "version": "3.3.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/bundler-plugin-core": "3.3.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3731ef01c1a1..d1d8ed844ccf 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.2.4", + "version": "3.3.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.2.4", + "@sentry/bundler-plugin-core": "3.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.2.4", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.2.4", + "@sentry-internal/eslint-config": "3.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6f232ac1f71c9f5cf8a0ce7abd4d55fac8c03fa8 Mon Sep 17 00:00:00 2001 From: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:46:42 +0200 Subject: [PATCH 478/640] fix(webpack5): Ensure all `esm` files have `.mjs` postfix (#721) --- CHANGELOG.md | 4 ++++ packages/webpack-plugin/rollup.config.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 537e3d197b81..7634e8f864d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.3.1 + +- fix(webpack5): All `esm` files must have `.mjs` postfix (#721) + ## 3.3.0 - feat(webpack): Add `@sentry/webpack-plugin/webpack5` export for webpack 5.1+ and compatible environments (#715) diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index 3f0be9623511..ea1dc3b680bd 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -38,12 +38,15 @@ export default { exports: "named", sourcemap: true, entryFileNames: "[name].mjs", + chunkFileNames: "[name].mjs", }, { dir: "./dist/cjs", format: "cjs", exports: "named", sourcemap: true, + entryFileNames: "[name].js", + chunkFileNames: "[name].js", }, ], }; From ecb826d7dd72693434c7e43218889a3d54e8ab3b Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 4 Apr 2025 08:48:51 +0000 Subject: [PATCH 479/640] release: 3.3.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 3be61933fa7a..f5e5afb7fe6c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.3.0", + "version": "3.3.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index b60102199a97..deee38500716 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.3.0", + "version": "3.3.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a7ebb431f2ba..ada95d364bdf 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.3.0", + "version": "3.3.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.3.0", + "@sentry/babel-plugin-component-annotate": "3.3.1", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 9b89e8a01803..8ed02c9fef76 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 1cc81fafd01a..896543b651e8 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.3.0", - "@sentry/rollup-plugin": "3.3.0", - "@sentry/vite-plugin": "3.3.0", - "@sentry/webpack-plugin": "3.3.0", + "@sentry/esbuild-plugin": "3.3.1", + "@sentry/rollup-plugin": "3.3.1", + "@sentry/vite-plugin": "3.3.1", + "@sentry/webpack-plugin": "3.3.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 83527c18e48a..ec99e76d7c1d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.3.0", + "version": "3.3.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index d56184a9af49..3da5e8d9ef55 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 38cd55bcb6f3..ea29f66e3441 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", - "@sentry/bundler-plugin-core": "3.3.0", - "@sentry/esbuild-plugin": "3.3.0", - "@sentry/rollup-plugin": "3.3.0", - "@sentry/vite-plugin": "3.3.0", - "@sentry/webpack-plugin": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/esbuild-plugin": "3.3.1", + "@sentry/rollup-plugin": "3.3.1", + "@sentry/vite-plugin": "3.3.1", + "@sentry/webpack-plugin": "3.3.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 0cb9579b63fe..6e71e9cc907a 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 8c9569834310..f59da0ce88c9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.3.0", + "version": "3.3.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c251bb6a5731..fae8464a332c 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.3.0", + "version": "3.3.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b8538d323239..a3c2789b9920 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.3.0", + "version": "3.3.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d1d8ed844ccf..7344e4270821 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.3.0", + "version": "3.3.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.0", + "@sentry/bundler-plugin-core": "3.3.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.0", + "@sentry-internal/eslint-config": "3.3.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From e27f76d208c94094166010bf79cc8064fee06fe6 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 11 Apr 2025 17:35:05 +0200 Subject: [PATCH 480/640] test: More bundler versions (#725) --- .github/workflows/checks.yml | 8 +- .../disabled-debug-id-injection.test.ts | 4 +- packages/integration-tests/package.json | 2 + .../utils/create-cjs-bundles.ts | 68 +++- yarn.lock | 330 ++++++++++++++++++ 5 files changed, 399 insertions(+), 13 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 1d6ec81ffaea..167fb5f87cb5 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -125,9 +125,11 @@ jobs: # "10.24.1", # vite uses optional chaining which isn't compatible with node 12 # "12.22.12", - "14.21.1", - "16.18.1", - "18.12.1", + "14", + "16", + "18", + "20", + "22", ] os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} 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 948c29ddf239..09c22d011394 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 @@ -6,10 +6,10 @@ import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath1: string, bundlePath2: string) { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); - expect(process1Output).toBe("undefined\n"); + expect(process1Output).toMatch(/undefined/); const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); - expect(process2Output).toBe("undefined\n"); + expect(process2Output).toMatch(/undefined/); } describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () => { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index ea29f66e3441..6ad563f1a57c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -39,8 +39,10 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "3.2.0", + "rollup4": "npm:rollup@^4", "ts-node": "^10.9.1", "vite": "3.0.0", + "vite6": "npm:vite@^6", "webpack4": "npm:webpack@^4", "webpack5": "npm:webpack@5.74.0" }, diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index a03916cf4b41..7f75221ed0ce 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -1,6 +1,6 @@ -import * as vite from "vite"; +import * as vite3 from "vite"; import * as path from "path"; -import * as rollup from "rollup"; +import * as rollup3 from "rollup"; import { default as webpack4 } from "webpack4"; import { webpack as webpack5 } from "webpack5"; import * as esbuild from "esbuild"; @@ -10,17 +10,48 @@ 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); +const [NODE_MAJOR_VERSION] = process.version.split(".").map(Number) as [number]; + +type Bundlers = + | "webpack4" + | "webpack5" + | "esbuild" + | "rollup" + | "rollup4" + | "vite" + | "vite6" + | string; export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, sentryUnpluginOptions: Options, - plugins: string[] = [] + plugins: Bundlers[] = [] ): void { if (plugins.length === 0 || plugins.includes("vite")) { - void vite.build({ + void vite3.build({ + clearScreen: false, + build: { + sourcemap: true, + outDir: path.join(outFolder, "vite"), + rollupOptions: { + input: entrypoints, + output: { + format: "cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryUnpluginOptions)], + }); + } + + if (NODE_MAJOR_VERSION >= 18 && (plugins.length === 0 || plugins.includes("vite6"))) { + // We can't import this at the top of the file because they are not + // compatible with Node v14 + // eslint-disable-next-line @typescript-eslint/no-var-requires + const vite6 = require("vite6") as typeof vite3; + void vite6.build({ clearScreen: false, build: { sourcemap: true, @@ -36,8 +67,29 @@ export function createCjsBundles( plugins: [sentryVitePlugin(sentryUnpluginOptions)], }); } + if (plugins.length === 0 || plugins.includes("rollup")) { - void rollup + void rollup3 + .rollup({ + input: entrypoints, + plugins: [sentryRollupPlugin(sentryUnpluginOptions)], + }) + .then((bundle) => + bundle.write({ + sourcemap: true, + dir: path.join(outFolder, "rollup"), + format: "cjs", + exports: "named", + }) + ); + } + + if (NODE_MAJOR_VERSION >= 18 && (plugins.length === 0 || plugins.includes("rollup4"))) { + // We can't import this at the top of the file because they are not + // compatible with Node v14 + // eslint-disable-next-line @typescript-eslint/no-var-requires + const rollup4 = require("rollup4") as typeof rollup3; + void rollup4 .rollup({ input: entrypoints, plugins: [sentryRollupPlugin(sentryUnpluginOptions)], @@ -65,7 +117,7 @@ export function createCjsBundles( } // Webpack 4 doesn't work on Node.js versions >= 18 - if (parseInt(nodejsMajorversion) < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { + if (NODE_MAJOR_VERSION < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { webpack4( { devtool: "source-map", diff --git a/yarn.lock b/yarn.lock index 7ad0c552fee7..948b30f72bab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1303,6 +1303,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@esbuild/aix-ppc64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8" + integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== + "@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" @@ -1313,6 +1318,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196" + integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== + "@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" @@ -1323,6 +1333,11 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5" integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ== +"@esbuild/android-arm@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee" + integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== + "@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" @@ -1333,6 +1348,11 @@ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426" integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g== +"@esbuild/android-x64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2" + integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== + "@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" @@ -1343,6 +1363,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423" + integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== + "@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" @@ -1353,6 +1378,11 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a" integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw== +"@esbuild/darwin-x64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374" + integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== + "@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" @@ -1363,6 +1393,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6" + integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== + "@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" @@ -1373,6 +1408,11 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268" integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw== +"@esbuild/freebsd-x64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809" + integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== + "@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" @@ -1383,6 +1423,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058" + integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== + "@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" @@ -1393,6 +1438,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6" + integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== + "@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" @@ -1403,6 +1453,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82" integrity sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ== +"@esbuild/linux-ia32@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737" + integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== + "@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" @@ -1418,6 +1473,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a" + integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== + "@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" @@ -1428,6 +1488,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30" + integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== + "@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" @@ -1438,6 +1503,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff" integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw== +"@esbuild/linux-ppc64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067" + integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== + "@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" @@ -1448,6 +1518,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3" + integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== + "@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" @@ -1458,6 +1533,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b" integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg== +"@esbuild/linux-s390x@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602" + integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== + "@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" @@ -1468,6 +1548,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb" + integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== + +"@esbuild/netbsd-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac" + integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== + "@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" @@ -1478,6 +1568,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f" + integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== + +"@esbuild/openbsd-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f" + integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== + "@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" @@ -1488,6 +1588,11 @@ 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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768" + integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== + "@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" @@ -1498,6 +1603,11 @@ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740" integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw== +"@esbuild/sunos-x64@0.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb" + integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== + "@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" @@ -1508,6 +1618,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf" + integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== + "@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" @@ -1518,6 +1633,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f" + integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== + "@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" @@ -1528,6 +1648,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.25.2": + version "0.25.2" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d" + integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== + "@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" @@ -2716,6 +2841,106 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz#1d8cc5dd3d8ffe569d8f7f67a45c7909828a0f66" + integrity sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA== + +"@rollup/rollup-android-arm64@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz#9c136034d3d9ed29d0b138c74dd63c5744507fca" + integrity sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ== + +"@rollup/rollup-darwin-arm64@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz#830d07794d6a407c12b484b8cf71affd4d3800a6" + integrity sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q== + +"@rollup/rollup-darwin-x64@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz#b26f0f47005c1fa5419a880f323ed509dc8d885c" + integrity sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ== + +"@rollup/rollup-freebsd-arm64@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz#2b60c81ac01ff7d1bc8df66aee7808b6690c6d19" + integrity sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ== + +"@rollup/rollup-freebsd-x64@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz#4826af30f4d933d82221289068846c9629cc628c" + integrity sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz#a1f4f963d5dcc9e5575c7acf9911824806436bf7" + integrity sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g== + +"@rollup/rollup-linux-arm-musleabihf@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz#e924b0a8b7c400089146f6278446e6b398b75a06" + integrity sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw== + +"@rollup/rollup-linux-arm64-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz#cb43303274ec9a716f4440b01ab4e20c23aebe20" + integrity sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ== + +"@rollup/rollup-linux-arm64-musl@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz#531c92533ce3d167f2111bfcd2aa1a2041266987" + integrity sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA== + +"@rollup/rollup-linux-loongarch64-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz#53403889755d0c37c92650aad016d5b06c1b061a" + integrity sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz#f669f162e29094c819c509e99dbeced58fc708f9" + integrity sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ== + +"@rollup/rollup-linux-riscv64-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz#4bab37353b11bcda5a74ca11b99dea929657fd5f" + integrity sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ== + +"@rollup/rollup-linux-riscv64-musl@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz#4d66be1ce3cfd40a7910eb34dddc7cbd4c2dd2a5" + integrity sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA== + +"@rollup/rollup-linux-s390x-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz#7181c329395ed53340a0c59678ad304a99627f6d" + integrity sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA== + +"@rollup/rollup-linux-x64-gnu@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz#00825b3458094d5c27cb4ed66e88bfe9f1e65f90" + integrity sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA== + +"@rollup/rollup-linux-x64-musl@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz#81caac2a31b8754186f3acc142953a178fcd6fba" + integrity sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg== + +"@rollup/rollup-win32-arm64-msvc@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz#3a3f421f5ce9bd99ed20ce1660cce7cee3e9f199" + integrity sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ== + +"@rollup/rollup-win32-ia32-msvc@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz#a44972d5cdd484dfd9cf3705a884bf0c2b7785a7" + integrity sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ== + +"@rollup/rollup-win32-x64-msvc@4.39.0": + version "4.39.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz#bfe0214e163f70c4fec1c8f7bb8ce266f4c05b7e" + integrity sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug== + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -3091,6 +3316,11 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" + integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== + "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -6206,6 +6436,37 @@ esbuild@^0.14.47: esbuild-windows-64 "0.14.54" esbuild-windows-arm64 "0.14.54" +esbuild@^0.25.0: + version "0.25.2" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b" + integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.2" + "@esbuild/android-arm" "0.25.2" + "@esbuild/android-arm64" "0.25.2" + "@esbuild/android-x64" "0.25.2" + "@esbuild/darwin-arm64" "0.25.2" + "@esbuild/darwin-x64" "0.25.2" + "@esbuild/freebsd-arm64" "0.25.2" + "@esbuild/freebsd-x64" "0.25.2" + "@esbuild/linux-arm" "0.25.2" + "@esbuild/linux-arm64" "0.25.2" + "@esbuild/linux-ia32" "0.25.2" + "@esbuild/linux-loong64" "0.25.2" + "@esbuild/linux-mips64el" "0.25.2" + "@esbuild/linux-ppc64" "0.25.2" + "@esbuild/linux-riscv64" "0.25.2" + "@esbuild/linux-s390x" "0.25.2" + "@esbuild/linux-x64" "0.25.2" + "@esbuild/netbsd-arm64" "0.25.2" + "@esbuild/netbsd-x64" "0.25.2" + "@esbuild/openbsd-arm64" "0.25.2" + "@esbuild/openbsd-x64" "0.25.2" + "@esbuild/sunos-x64" "0.25.2" + "@esbuild/win32-arm64" "0.25.2" + "@esbuild/win32-ia32" "0.25.2" + "@esbuild/win32-x64" "0.25.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -6929,6 +7190,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" @@ -9815,6 +10081,11 @@ nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +nanoid@^3.3.8: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10759,6 +11030,11 @@ 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.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -10830,6 +11106,15 @@ postcss@^8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.5.3: + version "8.5.3" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" + integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== + dependencies: + nanoid "^3.3.8" + 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" @@ -11486,6 +11771,35 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +"rollup4@npm:rollup@^4", rollup@^4.30.1: + version "4.39.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz#9dc1013b70c0e2cb70ef28350142e9b81b3f640c" + integrity sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g== + dependencies: + "@types/estree" "1.0.7" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.39.0" + "@rollup/rollup-android-arm64" "4.39.0" + "@rollup/rollup-darwin-arm64" "4.39.0" + "@rollup/rollup-darwin-x64" "4.39.0" + "@rollup/rollup-freebsd-arm64" "4.39.0" + "@rollup/rollup-freebsd-x64" "4.39.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.39.0" + "@rollup/rollup-linux-arm-musleabihf" "4.39.0" + "@rollup/rollup-linux-arm64-gnu" "4.39.0" + "@rollup/rollup-linux-arm64-musl" "4.39.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.39.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.39.0" + "@rollup/rollup-linux-riscv64-gnu" "4.39.0" + "@rollup/rollup-linux-riscv64-musl" "4.39.0" + "@rollup/rollup-linux-s390x-gnu" "4.39.0" + "@rollup/rollup-linux-x64-gnu" "4.39.0" + "@rollup/rollup-linux-x64-musl" "4.39.0" + "@rollup/rollup-win32-arm64-msvc" "4.39.0" + "@rollup/rollup-win32-ia32-msvc" "4.39.0" + "@rollup/rollup-win32-x64-msvc" "4.39.0" + fsevents "~2.3.2" + rollup@2.75.7: version "2.75.7" resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" @@ -11874,6 +12188,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" @@ -12945,6 +13264,17 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +"vite6@npm:vite@^6": + version "6.2.6" + resolved "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz#7f0ccf2fdc0c1eda079ce258508728e2473d3f61" + integrity sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw== + dependencies: + esbuild "^0.25.0" + postcss "^8.5.3" + rollup "^4.30.1" + optionalDependencies: + fsevents "~2.3.3" + vite@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" From 9c564544b72caaea48205ce77ba6b4ddf0af09d2 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 16 Apr 2025 13:49:33 +0200 Subject: [PATCH 481/640] meta(core): Primitives feature branch (#714) --- .../src/build-plugin-manager.ts | 647 ++++++++++++++++++ .../src/debug-id-upload.ts | 195 +----- packages/bundler-plugin-core/src/index.ts | 508 +++----------- .../src/{sentry => }/logger.ts | 0 .../src/options-mapping.ts | 2 +- .../src/plugins/release-management.ts | 126 ---- .../src/plugins/sourcemap-deletion.ts | 69 -- .../src/plugins/telemetry.ts | 34 - .../src/sentry/telemetry.ts | 14 +- packages/bundler-plugin-core/src/utils.ts | 7 + .../test/sentry/logger.test.ts | 2 +- packages/esbuild-plugin/src/index.ts | 13 +- .../fixtures/telemetry/telemetry.test.ts | 186 ++--- packages/rollup-plugin/src/index.ts | 7 +- .../rollup-plugin/test/public-api.test.ts | 53 +- packages/vite-plugin/src/index.ts | 7 +- packages/vite-plugin/test/public-api.test.ts | 53 +- packages/webpack-plugin/src/webpack4and5.ts | 27 +- 18 files changed, 924 insertions(+), 1026 deletions(-) create mode 100644 packages/bundler-plugin-core/src/build-plugin-manager.ts rename packages/bundler-plugin-core/src/{sentry => }/logger.ts (100%) delete mode 100644 packages/bundler-plugin-core/src/plugins/release-management.ts delete mode 100644 packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts delete mode 100644 packages/bundler-plugin-core/src/plugins/telemetry.ts diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts new file mode 100644 index 000000000000..4bc85e4fd149 --- /dev/null +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -0,0 +1,647 @@ +import SentryCli from "@sentry/cli"; +import { + closeSession, + DEFAULT_ENVIRONMENT, + getDynamicSamplingContextFromSpan, + makeSession, + setMeasurement, + spanToTraceHeader, + startSpan, +} from "@sentry/core"; +import * as dotenv from "dotenv"; +import * as fs from "fs"; +import * as os from "os"; +import * as path from "path"; +import { normalizeUserOptions, validateOptions } from "./options-mapping"; +import { createLogger } from "./logger"; +import { + allowedToSendTelemetry, + createSentryInstance, + safeFlushTelemetry, +} from "./sentry/telemetry"; +import { Options, SentrySDKBuildFlags } from "./types"; +import { arrayify, getTurborepoEnvPassthroughWarning, stripQueryAndHashFromPath } from "./utils"; +import { glob } from "glob"; +import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; +import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; + +export type SentryBuildPluginManager = ReturnType; + +/** + * Creates a build plugin manager that exposes primitives for everything that a Sentry JavaScript SDK or build tooling may do during a build. + * + * The build plugin manager's behavior strongly depends on the options that are passed in. + */ +export function createSentryBuildPluginManager( + userOptions: Options, + bundlerPluginMetaContext: { + /** + * E.g. `webpack` or `nextjs` or `turbopack` + */ + buildTool: string; + /** + * E.g. `[sentry-webpack-plugin]` or `[@sentry/nextjs]` + */ + loggerPrefix: string; + } +) { + const logger = createLogger({ + prefix: bundlerPluginMetaContext.loggerPrefix, + silent: userOptions.silent ?? false, + debug: userOptions.debug ?? false, + }); + + try { + const dotenvFile = fs.readFileSync( + path.join(process.cwd(), ".env.sentry-build-plugin"), + "utf-8" + ); + // NOTE: Do not use the dotenv.config API directly to read the dotenv file! For some ungodly reason, it falls back to reading `${process.cwd()}/.env` which is absolutely not what we want. + const dotenvResult = dotenv.parse(dotenvFile); + + // Vite has a bug/behaviour where spreading into process.env will cause it to crash + // https://github.com/vitest-dev/vitest/issues/1870#issuecomment-1501140251 + Object.assign(process.env, dotenvResult); + + logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); + } catch (e: unknown) { + // Ignore "file not found" errors but throw all others + if (typeof e === "object" && e && "code" in e && e.code !== "ENOENT") { + throw e; + } + } + + const options = normalizeUserOptions(userOptions); + + const shouldSendTelemetry = allowedToSendTelemetry(options); + const { sentryScope, sentryClient } = createSentryInstance( + options, + shouldSendTelemetry, + bundlerPluginMetaContext.buildTool + ); + + const { release, environment = DEFAULT_ENVIRONMENT } = sentryClient.getOptions(); + + const sentrySession = makeSession({ release, environment }); + sentryScope.setSession(sentrySession); + // Send the start of the session + sentryClient.captureSession(sentrySession); + + let sessionHasEnded = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out + + function endSession() { + if (sessionHasEnded) { + return; + } + + closeSession(sentrySession); + sentryClient.captureSession(sentrySession); + sessionHasEnded = true; + } + + // We also need to manually end sessions on errors because beforeExit is not called on crashes + process.on("beforeExit", () => { + endSession(); + }); + + // Set the User-Agent that Sentry CLI will use when interacting with Sentry + process.env[ + "SENTRY_PIPELINE" + ] = `${bundlerPluginMetaContext.buildTool}-plugin/${__PACKAGE_VERSION__}`; + + // Not a bulletproof check but should be good enough to at least sometimes determine + // if the plugin is called in dev/watch mode or for a prod build. The important part + // here is to avoid a false positive. False negatives are okay. + const isDevMode = process.env["NODE_ENV"] === "development"; + + /** + * Handles errors caught and emitted in various areas of the plugin. + * + * Also sets the sentry session status according to the error handling. + * + * If users specify their custom `errorHandler` we'll leave the decision to throw + * or continue up to them. By default, @param throwByDefault controls if the plugin + * should throw an error (which causes a build fail in most bundlers) or continue. + */ + function handleRecoverableError(unknownError: unknown, throwByDefault: boolean) { + sentrySession.status = "abnormal"; + try { + if (options.errorHandler) { + try { + if (unknownError instanceof Error) { + options.errorHandler(unknownError); + } else { + options.errorHandler(new Error("An unknown error occurred")); + } + } catch (e) { + sentrySession.status = "crashed"; + throw e; + } + } else { + // setting the session to "crashed" b/c from a plugin perspective this run failed. + // However, we're intentionally not rethrowing the error to avoid breaking the user build. + sentrySession.status = "crashed"; + if (throwByDefault) { + throw unknownError; + } + logger.error("An error occurred. Couldn't finish all operations:", unknownError); + } + } finally { + endSession(); + } + } + + if (!validateOptions(options, logger)) { + // Throwing by default to avoid a misconfigured plugin going unnoticed. + handleRecoverableError( + new Error("Options were not set correctly. See output above for more details."), + true + ); + } + + // We have multiple plugins depending on generated source map files. (debug ID upload, legacy upload) + // Additionally, we also want to have the functionality to delete files after uploading sourcemaps. + // All of these plugins and the delete functionality need to run in the same hook (`writeBundle`). + // Since the plugins among themselves are not aware of when they run and finish, we need a system to + // track their dependencies on the generated files, so that we can initiate the file deletion only after + // nothing depends on the files anymore. + const dependenciesOnBuildArtifacts = new Set(); + const buildArtifactsDependencySubscribers: (() => void)[] = []; + + function notifyBuildArtifactDependencySubscribers() { + buildArtifactsDependencySubscribers.forEach((subscriber) => { + subscriber(); + }); + } + + function createDependencyOnBuildArtifacts() { + const dependencyIdentifier = Symbol(); + dependenciesOnBuildArtifacts.add(dependencyIdentifier); + + return function freeDependencyOnBuildArtifacts() { + dependenciesOnBuildArtifacts.delete(dependencyIdentifier); + notifyBuildArtifactDependencySubscribers(); + }; + } + + /** + * Returns a Promise that resolves when all the currently active dependencies are freed again. + * + * It is very important that this function is called as late as possible before wanting to await the Promise to give + * the dependency producers as much time as possible to register themselves. + */ + function waitUntilBuildArtifactDependenciesAreFreed() { + return new Promise((resolve) => { + buildArtifactsDependencySubscribers.push(() => { + if (dependenciesOnBuildArtifacts.size === 0) { + resolve(); + } + }); + + if (dependenciesOnBuildArtifacts.size === 0) { + resolve(); + } + }); + } + + const bundleSizeOptimizationReplacementValues: SentrySDKBuildFlags = {}; + if (options.bundleSizeOptimizations) { + const { bundleSizeOptimizations } = options; + + if (bundleSizeOptimizations.excludeDebugStatements) { + bundleSizeOptimizationReplacementValues["__SENTRY_DEBUG__"] = false; + } + if (bundleSizeOptimizations.excludeTracing) { + bundleSizeOptimizationReplacementValues["__SENTRY_TRACING__"] = false; + } + if (bundleSizeOptimizations.excludeReplayCanvas) { + bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_CANVAS__"] = true; + } + if (bundleSizeOptimizations.excludeReplayIframe) { + bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_IFRAME__"] = true; + } + if (bundleSizeOptimizations.excludeReplayShadowDom) { + bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_SHADOW_DOM__"] = true; + } + if (bundleSizeOptimizations.excludeReplayWorker) { + bundleSizeOptimizationReplacementValues["__SENTRY_EXCLUDE_REPLAY_WORKER__"] = true; + } + } + + let bundleMetadata: Record = {}; + if (options.moduleMetadata || options.applicationKey) { + if (options.applicationKey) { + // We use different keys so that if user-code receives multiple bundling passes, we will store the application keys of all the passes. + // It is a bit unfortunate that we have to inject the metadata snippet at the top, because after multiple + // injections, the first injection will always "win" because it comes last in the code. We would generally be + // fine with making the last bundling pass win. But because it cannot win, we have to use a workaround of storing + // the app keys in different object keys. + // We can simply use the `_sentryBundlerPluginAppKey:` to filter for app keys in the SDK. + bundleMetadata[`_sentryBundlerPluginAppKey:${options.applicationKey}`] = true; + } + + if (typeof options.moduleMetadata === "function") { + const args = { + org: options.org, + project: options.project, + release: options.release.name, + }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + bundleMetadata = { ...bundleMetadata, ...options.moduleMetadata(args) }; + } else { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + bundleMetadata = { ...bundleMetadata, ...options.moduleMetadata }; + } + } + + return { + /** + * A logger instance that takes the options passed to the build plugin manager into account. (for silencing and log level etc.) + */ + logger, + + /** + * Options after normalization. Includes things like the inferred release name. + */ + normalizedOptions: options, + + /** + * Magic strings and their replacement values that can be used for bundle size optimizations. This already takes + * into account the options passed to the build plugin manager. + */ + bundleSizeOptimizationReplacementValues, + + /** + * Metadata that should be injected into bundles if possible. Takes into account options passed to the build plugin manager. + */ + // See `generateModuleMetadataInjectorCode` for how this should be used exactly + bundleMetadata, + + /** + * Contains utility functions for emitting telemetry via the build plugin manager. + */ + telemetry: { + /** + * Emits a `Sentry Bundler Plugin execution` signal. + */ + async emitBundlerPluginExecutionSignal() { + if (await shouldSendTelemetry) { + logger.info( + "Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`." + ); + startSpan({ name: "Sentry Bundler Plugin execution", scope: sentryScope }, () => { + // + }); + await safeFlushTelemetry(sentryClient); + } + }, + }, + + /** + * Will potentially create a release based on the build plugin manager options. + * + * Also + * - finalizes the release + * - sets commits + * - uploads legacy sourcemaps + * - adds deploy information + */ + async createRelease() { + if (!options.release.name) { + logger.debug( + "No release name provided. Will not create release. Please set the `release.name` option to identify your release." + ); + return; + } else if (isDevMode) { + logger.debug("Running in development mode. Will not create release."); + return; + } else if (!options.authToken) { + logger.warn( + "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + + getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + ); + return; + } else if (!options.org && !options.authToken.startsWith("sntrys_")) { + logger.warn( + "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + + getTurborepoEnvPassthroughWarning("SENTRY_ORG") + ); + return; + } else if (!options.project) { + logger.warn( + "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") + ); + return; + } + + // It is possible that this writeBundle hook is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) + // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. + const freeWriteBundleInvocationDependencyOnSourcemapFiles = + createDependencyOnBuildArtifacts(); + + try { + const cliInstance = new SentryCli(null, { + authToken: options.authToken, + org: options.org, + project: options.project, + silent: options.silent, + url: options.url, + vcsRemote: options.release.vcsRemote, + headers: options.headers, + }); + + if (options.release.create) { + await cliInstance.releases.new(options.release.name); + } + + if (options.release.uploadLegacySourcemaps) { + const normalizedInclude = arrayify(options.release.uploadLegacySourcemaps) + .map((includeItem) => + typeof includeItem === "string" ? { paths: [includeItem] } : includeItem + ) + .map((includeEntry) => ({ + ...includeEntry, + validate: includeEntry.validate ?? false, + ext: includeEntry.ext + ? includeEntry.ext.map((extension) => `.${extension.replace(/^\./, "")}`) + : [".js", ".map", ".jsbundle", ".bundle"], + ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined, + })); + + await cliInstance.releases.uploadSourceMaps(options.release.name, { + include: normalizedInclude, + dist: options.release.dist, + }); + } + + if (options.release.setCommits !== false) { + try { + await cliInstance.releases.setCommits( + options.release.name, + // set commits always exists due to the normalize function + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + options.release.setCommits! + ); + } catch (e) { + // shouldNotThrowOnFailure being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo + if ( + options.release.setCommits && + "shouldNotThrowOnFailure" in options.release.setCommits && + options.release.setCommits.shouldNotThrowOnFailure + ) { + logger.debug( + "An error occurred setting commits on release (this message can be ignored unless you commits on release are desired):", + e + ); + } else { + throw e; + } + } + } + + if (options.release.finalize) { + await cliInstance.releases.finalize(options.release.name); + } + + if (options.release.deploy) { + await cliInstance.releases.newDeploy(options.release.name, options.release.deploy); + } + } catch (e) { + sentryScope.captureException('Error in "releaseManagementPlugin" writeBundle hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e, false); + } finally { + freeWriteBundleInvocationDependencyOnSourcemapFiles(); + } + }, + + /** + * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded + */ + async uploadSourcemaps(buildArtifactPaths: string[]) { + if (options.sourcemaps?.disable) { + logger.debug( + "Source map upload was disabled. Will not upload sourcemaps using debug ID process." + ); + } else if (isDevMode) { + logger.debug("Running in development mode. Will not upload sourcemaps."); + } else if (!options.authToken) { + logger.warn( + "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + + getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + ); + } else if (!options.org && !options.authToken.startsWith("sntrys_")) { + logger.warn( + "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + + getTurborepoEnvPassthroughWarning("SENTRY_ORG") + ); + } else if (!options.project) { + logger.warn( + "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") + ); + } + + await startSpan( + // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. + { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, + async () => { + let folderToCleanUp: string | undefined; + + // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) + // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. + const freeUploadDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + + try { + const tmpUploadFolder = await startSpan( + { name: "mkdtemp", scope: sentryScope }, + async () => { + return await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + ); + } + ); + + folderToCleanUp = tmpUploadFolder; + const assets = options.sourcemaps?.assets; + + let globAssets: string | string[]; + if (assets) { + globAssets = assets; + } else { + logger.debug( + "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." + ); + globAssets = buildArtifactPaths; + } + + const globResult = await startSpan( + { name: "glob", scope: sentryScope }, + async () => + await glob(globAssets, { + absolute: true, + nodir: true, + ignore: options.sourcemaps?.ignore, + }) + ); + + const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { + return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); + }); + + // The order of the files output by glob() is not deterministic + // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent + debugIdChunkFilePaths.sort(); + + if (Array.isArray(assets) && assets.length === 0) { + logger.debug( + "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." + ); + } else if (debugIdChunkFilePaths.length === 0) { + logger.warn( + "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + ); + } else { + await startSpan( + { name: "prepare-bundles", scope: sentryScope }, + async (prepBundlesSpan) => { + // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so + // instead we do it with a maximum of 16 concurrent workers + const preparationTasks = debugIdChunkFilePaths.map( + (chunkFilePath, chunkIndex) => async () => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + tmpUploadFolder, + chunkIndex, + logger, + options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook + ); + } + ); + const workers: Promise[] = []; + const worker = async () => { + while (preparationTasks.length > 0) { + const task = preparationTasks.shift(); + if (task) { + await task(); + } + } + }; + for (let workerIndex = 0; workerIndex < 16; workerIndex++) { + workers.push(worker()); + } + + await Promise.all(workers); + + const files = await fs.promises.readdir(tmpUploadFolder); + const stats = files.map((file) => + fs.promises.stat(path.join(tmpUploadFolder, file)) + ); + const uploadSize = (await Promise.all(stats)).reduce( + (accumulator, { size }) => accumulator + size, + 0 + ); + + setMeasurement("files", files.length, "none", prepBundlesSpan); + setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); + + await startSpan({ name: "upload", scope: sentryScope }, async (uploadSpan) => { + const cliInstance = new SentryCli(null, { + authToken: options.authToken, + org: options.org, + project: options.project, + silent: options.silent, + url: options.url, + vcsRemote: options.release.vcsRemote, + headers: { + "sentry-trace": spanToTraceHeader(uploadSpan), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + baggage: dynamicSamplingContextToSentryBaggageHeader( + getDynamicSamplingContextFromSpan(uploadSpan) + )!, + ...options.headers, + }, + }); + + await cliInstance.releases.uploadSourceMaps( + options.release.name ?? "undefined", // unfortunately this needs a value for now but it will not matter since debug IDs overpower releases anyhow + { + include: [ + { + paths: [tmpUploadFolder], + rewrite: false, + dist: options.release.dist, + }, + ], + } + ); + }); + } + ); + + logger.info("Successfully uploaded source maps to Sentry"); + } + } catch (e) { + sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); + handleRecoverableError(e, false); + } finally { + if (folderToCleanUp) { + void startSpan({ name: "cleanup", scope: sentryScope }, async () => { + if (folderToCleanUp) { + await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); + } + }); + } + freeUploadDependencyOnBuildArtifacts(); + await safeFlushTelemetry(sentryClient); + } + } + ); + }, + + /** + * Will delete artifacts based on the passed `sourcemaps.filesToDeleteAfterUpload` option. + */ + async deleteArtifacts() { + try { + const filesToDelete = await options.sourcemaps?.filesToDeleteAfterUpload; + if (filesToDelete !== undefined) { + const filePathsToDelete = await glob(filesToDelete, { + absolute: true, + nodir: true, + }); + + logger.debug( + "Waiting for dependencies on generated files to be freed before deleting..." + ); + + await waitUntilBuildArtifactDependenciesAreFreed(); + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } + } catch (e) { + sentryScope.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + // We throw by default if we get here b/c not being able to delete + // source maps could leak them to production + handleRecoverableError(e, true); + } + }, + createDependencyOnBuildArtifacts, + }; +} diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 7b35c4594525..b9bba5a34380 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -1,18 +1,9 @@ import fs from "fs"; -import { glob } from "glob"; -import os from "os"; import path from "path"; import * as util from "util"; -import { Logger } from "./sentry/logger"; import { promisify } from "util"; -import SentryCli from "@sentry/cli"; -import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; -import { safeFlushTelemetry } from "./sentry/telemetry"; -import { stripQueryAndHashFromPath } from "./utils"; -import { setMeasurement, spanToTraceHeader, startSpan } from "@sentry/core"; -import { getDynamicSamplingContextFromSpan, Scope } from "@sentry/core"; -import { Client } from "@sentry/types"; -import { HandleRecoverableErrorFn } from "./types"; +import { SentryBuildPluginManager } from "./build-plugin-manager"; +import { Logger } from "./logger"; interface RewriteSourcesHook { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -20,188 +11,14 @@ interface RewriteSourcesHook { } interface DebugIdUploadPluginOptions { - logger: Logger; - assets?: string | string[]; - ignore?: string | string[]; - releaseName?: string; - dist?: string; - rewriteSourcesHook?: RewriteSourcesHook; - handleRecoverableError: HandleRecoverableErrorFn; - sentryScope: Scope; - sentryClient: Client; - sentryCliOptions: { - url: string; - authToken: string; - org?: string; - project: string; - vcsRemote: string; - silent: boolean; - headers?: Record; - }; - createDependencyOnSourcemapFiles: () => () => void; + sentryBuildPluginManager: SentryBuildPluginManager; } export function createDebugIdUploadFunction({ - assets, - ignore, - logger, - releaseName, - dist, - handleRecoverableError, - sentryScope, - sentryClient, - sentryCliOptions, - rewriteSourcesHook, - createDependencyOnSourcemapFiles, + sentryBuildPluginManager, }: DebugIdUploadPluginOptions) { - const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); - return async (buildArtifactPaths: string[]) => { - await startSpan( - // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. - { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, - async () => { - let folderToCleanUp: string | undefined; - - // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) - // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. - const freeUploadDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); - - try { - const tmpUploadFolder = await startSpan( - { name: "mkdtemp", scope: sentryScope }, - async () => { - return await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - ); - } - ); - - folderToCleanUp = tmpUploadFolder; - - let globAssets: string | string[]; - if (assets) { - globAssets = assets; - } else { - logger.debug( - "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." - ); - globAssets = buildArtifactPaths; - } - - const globResult = await startSpan( - { name: "glob", scope: sentryScope }, - async () => await glob(globAssets, { absolute: true, nodir: true, ignore: ignore }) - ); - - const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { - return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); - }); - - // The order of the files output by glob() is not deterministic - // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent - debugIdChunkFilePaths.sort(); - - if (Array.isArray(assets) && assets.length === 0) { - logger.debug( - "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." - ); - } else if (debugIdChunkFilePaths.length === 0) { - logger.warn( - "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." - ); - } else { - await startSpan( - { name: "prepare-bundles", scope: sentryScope }, - async (prepBundlesSpan) => { - // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so - // instead we do it with a maximum of 16 concurrent workers - const preparationTasks = debugIdChunkFilePaths.map( - (chunkFilePath, chunkIndex) => async () => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - tmpUploadFolder, - chunkIndex, - logger, - rewriteSourcesHook ?? defaultRewriteSourcesHook - ); - } - ); - const workers: Promise[] = []; - const worker = async () => { - while (preparationTasks.length > 0) { - const task = preparationTasks.shift(); - if (task) { - await task(); - } - } - }; - for (let workerIndex = 0; workerIndex < 16; workerIndex++) { - workers.push(worker()); - } - - await Promise.all(workers); - - const files = await fs.promises.readdir(tmpUploadFolder); - const stats = files.map((file) => - fs.promises.stat(path.join(tmpUploadFolder, file)) - ); - const uploadSize = (await Promise.all(stats)).reduce( - (accumulator, { size }) => accumulator + size, - 0 - ); - - setMeasurement("files", files.length, "none", prepBundlesSpan); - setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); - - await startSpan({ name: "upload", scope: sentryScope }, async (uploadSpan) => { - const cliInstance = new SentryCli(null, { - ...sentryCliOptions, - headers: { - "sentry-trace": spanToTraceHeader(uploadSpan), - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - baggage: dynamicSamplingContextToSentryBaggageHeader( - getDynamicSamplingContextFromSpan(uploadSpan) - )!, - ...sentryCliOptions.headers, - }, - }); - - await cliInstance.releases.uploadSourceMaps( - releaseName ?? "undefined", // unfortunately this needs a value for now but it will not matter since debug IDs overpower releases anyhow - { - include: [ - { - paths: [tmpUploadFolder], - rewrite: false, - dist: dist, - }, - ], - } - ); - }); - } - ); - - logger.info("Successfully uploaded source maps to Sentry"); - } - } catch (e) { - sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); - handleRecoverableError(e, false); - } finally { - if (folderToCleanUp) { - void startSpan({ name: "cleanup", scope: sentryScope }, async () => { - if (folderToCleanUp) { - await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); - } - }); - } - freeGlobalDependencyOnSourcemapFiles(); - freeUploadDependencyOnSourcemapFiles(); - await safeFlushTelemetry(sentryClient); - } - } - ); + await sentryBuildPluginManager.uploadSourcemaps(buildArtifactPaths); }; } @@ -388,7 +205,7 @@ async function prepareSourceMapForDebugIdUpload( } const PROTOCOL_REGEX = /^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\//; -function defaultRewriteSourcesHook(source: string): string { +export function defaultRewriteSourcesHook(source: string): string { if (source.match(PROTOCOL_REGEX)) { return source.replace(PROTOCOL_REGEX, ""); } else { diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 0dcf278534f8..fca7a44d4f9b 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,16 +1,15 @@ -import SentryCli from "@sentry/cli"; import { transformAsync } from "@babel/core"; import componentNameAnnotatePlugin from "@sentry/babel-plugin-component-annotate"; +import SentryCli from "@sentry/cli"; +import { logger } from "@sentry/utils"; import * as fs from "fs"; -import * as path from "path"; +import { glob } from "glob"; import MagicString from "magic-string"; +import * as path from "path"; import { createUnplugin, TransformResult, UnpluginOptions } from "unplugin"; -import { normalizeUserOptions, validateOptions } from "./options-mapping"; +import { createSentryBuildPluginManager } from "./build-plugin-manager"; import { createDebugIdUploadFunction } from "./debug-id-upload"; -import { releaseManagementPlugin } from "./plugins/release-management"; -import { telemetryPlugin } from "./plugins/telemetry"; -import { createLogger, Logger } from "./sentry/logger"; -import { allowedToSendTelemetry, createSentryInstance } from "./sentry/telemetry"; +import { Logger } from "./logger"; import { Options, SentrySDKBuildFlags } from "./types"; import { generateGlobalInjectorCode, @@ -22,11 +21,6 @@ import { stringToUUID, stripQueryAndHashFromPath, } from "./utils"; -import * as dotenv from "dotenv"; -import { glob } from "glob"; -import { logger } from "@sentry/utils"; -import { fileDeletionPlugin } from "./plugins/sourcemap-deletion"; -import { closeSession, DEFAULT_ENVIRONMENT, makeSession } from "@sentry/core"; interface SentryUnpluginFactoryOptions { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; @@ -36,36 +30,14 @@ interface SentryUnpluginFactoryOptions { debugIdUploadPlugin: ( upload: (buildArtifacts: string[]) => Promise, logger: Logger, + createDependencyOnBuildArtifacts: () => () => void, webpack_forceExitOnBuildComplete?: boolean ) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; } /** - * The sentry bundler plugin concerns itself with two things: - * - Release injection - * - Sourcemaps upload - * - * Release injection: - * Per default the sentry bundler plugin will inject a global `SENTRY_RELEASE` into each JavaScript/TypeScript module - * that is part of the bundle. On a technical level this is done by appending an import (`import "sentry-release-injector";`) - * to all entrypoint files of the user code (see `transformInclude` and `transform` hooks). This import is then resolved - * by the sentry plugin to a virtual module that sets the global variable (see `resolveId` and `load` hooks). - * If a user wants to inject the release into a particular set of modules they can use the `releaseInjectionTargets` option. - * - * Source maps upload: - * - * The sentry bundler plugin will also take care of uploading source maps to Sentry. This - * is all done in the `writeBundle` hook. In this hook the sentry plugin will execute the - * release creation pipeline: - * - * 1. Create a new release - * 2. Upload sourcemaps based on `include` and source-map-specific options - * 3. Associate a range of commits with the release (if `setCommits` is specified) - * 4. Finalize the release (unless `finalize` is disabled) - * 5. Add deploy information to the release (if `deploy` is specified) - * - * This release creation pipeline relies on Sentry CLI to execute the different steps. + * Creates an unplugin instance used to create Sentry plugins for Vite, Rollup, esbuild, and Webpack. */ export function sentryUnpluginFactory({ releaseInjectionPlugin, @@ -76,40 +48,18 @@ export function sentryUnpluginFactory({ bundleSizeOptimizationsPlugin, }: SentryUnpluginFactoryOptions) { return createUnplugin((userOptions = {}, unpluginMetaContext) => { - const logger = createLogger({ - prefix: + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[sentry-${unpluginMetaContext.framework}-plugin]`, - silent: userOptions.silent ?? false, - debug: userOptions.debug ?? false, + buildTool: unpluginMetaContext.framework, }); - // Not a bulletproof check but should be good enough to at least sometimes determine - // if the plugin is called in dev/watch mode or for a prod build. The important part - // here is to avoid a false positive. False negatives are okay. - const isDevMode = process.env["NODE_ENV"] === "development"; - - try { - const dotenvFile = fs.readFileSync( - path.join(process.cwd(), ".env.sentry-build-plugin"), - "utf-8" - ); - // NOTE: Do not use the dotenv.config API directly to read the dotenv file! For some ungodly reason, it falls back to reading `${process.cwd()}/.env` which is absolutely not what we want. - const dotenvResult = dotenv.parse(dotenvFile); - - // Vite has a bug/behaviour where spreading into process.env will cause it to crash - // https://github.com/vitest-dev/vitest/issues/1870#issuecomment-1501140251 - Object.assign(process.env, dotenvResult); - - logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); - } catch (e: unknown) { - // Ignore "file not found" errors but throw all others - if (typeof e === "object" && e && "code" in e && e.code !== "ENOENT") { - throw e; - } - } - - const options = normalizeUserOptions(userOptions); + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues, + } = sentryBuildPluginManager; if (options.disable) { return [ @@ -119,87 +69,6 @@ export function sentryUnpluginFactory({ ]; } - const shouldSendTelemetry = allowedToSendTelemetry(options); - const { sentryScope, sentryClient } = createSentryInstance( - options, - shouldSendTelemetry, - unpluginMetaContext.framework - ); - - const { release, environment = DEFAULT_ENVIRONMENT } = sentryClient.getOptions(); - - const sentrySession = makeSession({ release, environment }); - sentryScope.setSession(sentrySession); - // Send the start of the session - sentryClient.captureSession(sentrySession); - - let sessionHasEnded = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out - - function endSession() { - if (sessionHasEnded) { - return; - } - - closeSession(sentrySession); - sentryClient.captureSession(sentrySession); - sessionHasEnded = true; - } - - // We also need to manually end sessions on errors because beforeExit is not called on crashes - process.on("beforeExit", () => { - endSession(); - }); - - // Set the User-Agent that Sentry CLI will use when interacting with Sentry - process.env[ - "SENTRY_PIPELINE" - ] = `${unpluginMetaContext.framework}-plugin/${__PACKAGE_VERSION__}`; - - /** - * Handles errors caught and emitted in various areas of the plugin. - * - * Also sets the sentry session status according to the error handling. - * - * If users specify their custom `errorHandler` we'll leave the decision to throw - * or continue up to them. By default, @param throwByDefault controls if the plugin - * should throw an error (which causes a build fail in most bundlers) or continue. - */ - function handleRecoverableError(unknownError: unknown, throwByDefault: boolean) { - sentrySession.status = "abnormal"; - try { - if (options.errorHandler) { - try { - if (unknownError instanceof Error) { - options.errorHandler(unknownError); - } else { - options.errorHandler(new Error("An unknown error occured")); - } - } catch (e) { - sentrySession.status = "crashed"; - throw e; - } - } else { - // setting the session to "crashed" b/c from a plugin perspective this run failed. - // However, we're intentionally not rethrowing the error to avoid breaking the user build. - sentrySession.status = "crashed"; - if (throwByDefault) { - throw unknownError; - } - logger.error("An error occurred. Couldn't finish all operations:", unknownError); - } - } finally { - endSession(); - } - } - - if (!validateOptions(options, logger)) { - // Throwing by default to avoid a misconfigured plugin going unnoticed. - handleRecoverableError( - new Error("Options were not set correctly. See output above for more details."), - true - ); - } - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { logger.warn( "Running Sentry plugin from within a `node_modules` folder. Some features may not work." @@ -208,86 +77,16 @@ export function sentryUnpluginFactory({ const plugins: UnpluginOptions[] = []; - plugins.push( - telemetryPlugin({ - sentryClient, - sentryScope, - logger, - shouldSendTelemetry, - }) - ); - - // We have multiple plugins depending on generated source map files. (debug ID upload, legacy upload) - // Additionally, we also want to have the functionality to delete files after uploading sourcemaps. - // All of these plugins and the delete functionality need to run in the same hook (`writeBundle`). - // Since the plugins among themselves are not aware of when they run and finish, we need a system to - // track their dependencies on the generated files, so that we can initiate the file deletion only after - // nothing depends on the files anymore. - const dependenciesOnSourcemapFiles = new Set(); - const sourcemapFileDependencySubscribers: (() => void)[] = []; - - function notifySourcemapFileDependencySubscribers() { - sourcemapFileDependencySubscribers.forEach((subscriber) => { - subscriber(); - }); - } - - function createDependencyOnSourcemapFiles() { - const dependencyIdentifier = Symbol(); - dependenciesOnSourcemapFiles.add(dependencyIdentifier); - - return function freeDependencyOnSourcemapFiles() { - dependenciesOnSourcemapFiles.delete(dependencyIdentifier); - notifySourcemapFileDependencySubscribers(); - }; - } - - /** - * Returns a Promise that resolves when all the currently active dependencies are freed again. - * - * It is very important that this function is called as late as possible before wanting to await the Promise to give - * the dependency producers as much time as possible to register themselves. - */ - function waitUntilSourcemapFileDependenciesAreFreed() { - return new Promise((resolve) => { - sourcemapFileDependencySubscribers.push(() => { - if (dependenciesOnSourcemapFiles.size === 0) { - resolve(); - } - }); - - if (dependenciesOnSourcemapFiles.size === 0) { - resolve(); - } - }); - } - - if (options.bundleSizeOptimizations) { - const { bundleSizeOptimizations } = options; - const replacementValues: SentrySDKBuildFlags = {}; - - if (bundleSizeOptimizations.excludeDebugStatements) { - replacementValues["__SENTRY_DEBUG__"] = false; - } - if (bundleSizeOptimizations.excludeTracing) { - replacementValues["__SENTRY_TRACING__"] = false; - } - if (bundleSizeOptimizations.excludeReplayCanvas) { - replacementValues["__RRWEB_EXCLUDE_CANVAS__"] = true; - } - if (bundleSizeOptimizations.excludeReplayIframe) { - replacementValues["__RRWEB_EXCLUDE_IFRAME__"] = true; - } - if (bundleSizeOptimizations.excludeReplayShadowDom) { - replacementValues["__RRWEB_EXCLUDE_SHADOW_DOM__"] = true; - } - if (bundleSizeOptimizations.excludeReplayWorker) { - replacementValues["__SENTRY_EXCLUDE_REPLAY_WORKER__"] = true; - } + // Add plugin to emit a telemetry signal when the build starts + plugins.push({ + name: "sentry-telemetry-plugin", + async buildStart() { + await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal(); + }, + }); - if (Object.keys(replacementValues).length > 0) { - plugins.push(bundleSizeOptimizationsPlugin(replacementValues)); - } + if (Object.keys(bundleSizeOptimizationReplacementValues).length > 0) { + plugins.push(bundleSizeOptimizationsPlugin(bundleSizeOptimizationReplacementValues)); } if (!options.release.inject) { @@ -306,152 +105,47 @@ export function sentryUnpluginFactory({ plugins.push(releaseInjectionPlugin(injectionCode)); } - if (options.moduleMetadata || options.applicationKey) { - let metadata: Record = {}; - - if (options.applicationKey) { - // We use different keys so that if user-code receives multiple bundling passes, we will store the application keys of all the passes. - // It is a bit unfortunate that we have to inject the metadata snippet at the top, because after multiple - // injections, the first injection will always "win" because it comes last in the code. We would generally be - // fine with making the last bundling pass win. But because it cannot win, we have to use a workaround of storing - // the app keys in different object keys. - // We can simply use the `_sentryBundlerPluginAppKey:` to filter for app keys in the SDK. - metadata[`_sentryBundlerPluginAppKey:${options.applicationKey}`] = true; - } - - if (typeof options.moduleMetadata === "function") { - const args = { - org: options.org, - project: options.project, - release: options.release.name, - }; - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - metadata = { ...metadata, ...options.moduleMetadata(args) }; - } else { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - metadata = { ...metadata, ...options.moduleMetadata }; - } - - const injectionCode = generateModuleMetadataInjectorCode(metadata); - plugins.push(moduleMetadataInjectionPlugin(injectionCode)); - } - // https://turbo.build/repo/docs/reference/system-environment-variables#environment-variables-in-tasks - const isRunningInTurborepo = Boolean(process.env["TURBO_HASH"]); - const getTurborepoEnvPassthroughWarning = (envVarName: string) => - isRunningInTurborepo - ? `\nYou seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` - : ""; - if (!options.release.name) { - logger.debug( - "No release name provided. Will not create release. Please set the `release.name` option to identify your release." - ); - } else if (isDevMode) { - logger.debug("Running in development mode. Will not create release."); - } else if (!options.authToken) { - logger.warn( - "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") - ); - } else if (!options.org && !options.authToken.startsWith("sntrys_")) { - logger.warn( - "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + - getTurborepoEnvPassthroughWarning("SENTRY_ORG") - ); - } else if (!options.project) { - logger.warn( - "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + - getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") - ); - } else { - plugins.push( - releaseManagementPlugin({ - logger, - releaseName: options.release.name, - shouldCreateRelease: options.release.create, - shouldFinalizeRelease: options.release.finalize, - include: options.release.uploadLegacySourcemaps, - // setCommits has a default defined by the options mappings - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - setCommitsOption: options.release.setCommits!, - deployOptions: options.release.deploy, - dist: options.release.dist, - handleRecoverableError: handleRecoverableError, - sentryScope, - sentryClient, - sentryCliOptions: { - authToken: options.authToken, - org: options.org, - project: options.project, - silent: options.silent, - url: options.url, - vcsRemote: options.release.vcsRemote, - headers: options.headers, - }, - createDependencyOnSourcemapFiles, - }) + if (Object.keys(sentryBuildPluginManager.bundleMetadata).length > 0) { + const injectionCode = generateModuleMetadataInjectorCode( + sentryBuildPluginManager.bundleMetadata ); + plugins.push(moduleMetadataInjectionPlugin(injectionCode)); } + // Add plugin to create and finalize releases, and also take care of adding commits and legacy sourcemaps + const freeGlobalDependencyOnBuildArtifacts = + sentryBuildPluginManager.createDependencyOnBuildArtifacts(); + plugins.push({ + name: "sentry-release-management-plugin", + async writeBundle() { + try { + await sentryBuildPluginManager.createRelease(); + } finally { + freeGlobalDependencyOnBuildArtifacts(); + } + }, + }); + if (!options.sourcemaps?.disable) { plugins.push(debugIdInjectionPlugin(logger)); } - if (options.sourcemaps?.disable) { - logger.debug( - "Source map upload was disabled. Will not upload sourcemaps using debug ID process." - ); - } else if (isDevMode) { - logger.debug("Running in development mode. Will not upload sourcemaps."); - } else if (!options.authToken) { - logger.warn( - "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") - ); - } else if (!options.org && !options.authToken.startsWith("sntrys_")) { - logger.warn( - "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + - getTurborepoEnvPassthroughWarning("SENTRY_ORG") - ); - } else if (!options.project) { - logger.warn( - "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + - getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") - ); - } else { - // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins - const webpack_forceExitOnBuildComplete = - typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" - ? options._experiments["forceExitOnBuildCompletion"] - : undefined; - - plugins.push( - debugIdUploadPlugin( - createDebugIdUploadFunction({ - assets: options.sourcemaps?.assets, - ignore: options.sourcemaps?.ignore, - createDependencyOnSourcemapFiles, - dist: options.release.dist, - releaseName: options.release.name, - logger: logger, - handleRecoverableError: handleRecoverableError, - rewriteSourcesHook: options.sourcemaps?.rewriteSources, - sentryScope, - sentryClient, - sentryCliOptions: { - authToken: options.authToken, - org: options.org, - project: options.project, - silent: options.silent, - url: options.url, - vcsRemote: options.release.vcsRemote, - headers: options.headers, - }, - }), - logger, - webpack_forceExitOnBuildComplete - ) - ); - } + // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins + const webpack_forceExitOnBuildComplete = + typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" + ? options._experiments["forceExitOnBuildCompletion"] + : undefined; + + plugins.push( + debugIdUploadPlugin( + createDebugIdUploadFunction({ + sentryBuildPluginManager, + }), + logger, + sentryBuildPluginManager.createDependencyOnBuildArtifacts, + webpack_forceExitOnBuildComplete + ) + ); if (options.reactComponentAnnotation) { if (!options.reactComponentAnnotation.enabled) { @@ -470,21 +164,22 @@ export function sentryUnpluginFactory({ } } - plugins.push( - fileDeletionPlugin({ - waitUntilSourcemapFileDependenciesAreFreed, - filesToDeleteAfterUpload: options.sourcemaps?.filesToDeleteAfterUpload, - logger, - handleRecoverableError, - sentryScope, - sentryClient, - }) - ); + // Add plugin to delete unwanted artifacts like source maps after the uploads have completed + plugins.push({ + name: "sentry-file-deletion-plugin", + async writeBundle() { + await sentryBuildPluginManager.deleteArtifacts(); + }, + }); return plugins; }); } +/** + * @deprecated + */ +// TODO(v4): Don't export this from the package export function getBuildInformation() { const packageJson = getPackageJson(); @@ -651,36 +346,45 @@ export function createRollupModuleMetadataInjectionHooks(injectionCode: string) } export function createRollupDebugIdUploadHooks( - upload: (buildArtifacts: string[]) => Promise + upload: (buildArtifacts: string[]) => Promise, + _logger: Logger, + createDependencyOnBuildArtifacts: () => () => void ) { + const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); return { async writeBundle( outputOptions: { dir?: string; file?: string }, bundle: { [fileName: string]: unknown } ) { - if (outputOptions.dir) { - const outputDir = outputOptions.dir; - const buildArtifacts = await glob( - [ - "/**/*.js", - "/**/*.mjs", - "/**/*.cjs", - "/**/*.js.map", - "/**/*.mjs.map", - "/**/*.cjs.map", - ].map((q) => `${q}?(\\?*)?(#*)`), // We want to allow query and hashes strings at the end of files - { - root: outputDir, - absolute: true, - nodir: true, - } - ); - await upload(buildArtifacts); - } else if (outputOptions.file) { - await upload([outputOptions.file]); - } else { - const buildArtifacts = Object.keys(bundle).map((asset) => path.join(path.resolve(), asset)); - await upload(buildArtifacts); + try { + if (outputOptions.dir) { + const outputDir = outputOptions.dir; + const buildArtifacts = await glob( + [ + "/**/*.js", + "/**/*.mjs", + "/**/*.cjs", + "/**/*.js.map", + "/**/*.mjs.map", + "/**/*.cjs.map", + ].map((q) => `${q}?(\\?*)?(#*)`), // We want to allow query and hashes strings at the end of files + { + root: outputDir, + absolute: true, + nodir: true, + } + ); + await upload(buildArtifacts); + } else if (outputOptions.file) { + await upload([outputOptions.file]); + } else { + const buildArtifacts = Object.keys(bundle).map((asset) => + path.join(path.resolve(), asset) + ); + await upload(buildArtifacts); + } + } finally { + freeGlobalDependencyOnDebugIdSourcemapArtifacts(); } }, }; @@ -744,7 +448,7 @@ export function getDebugIdSnippet(debugId: string): string { return `;{try{let e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}};`; } -export { stringToUUID, replaceBooleanFlagsInCode } from "./utils"; - +export type { Logger } from "./logger"; export type { Options, SentrySDKBuildFlags } from "./types"; -export type { Logger } from "./sentry/logger"; +export { replaceBooleanFlagsInCode, stringToUUID } from "./utils"; +export { createSentryBuildPluginManager } from "./build-plugin-manager"; diff --git a/packages/bundler-plugin-core/src/sentry/logger.ts b/packages/bundler-plugin-core/src/logger.ts similarity index 100% rename from packages/bundler-plugin-core/src/sentry/logger.ts rename to packages/bundler-plugin-core/src/logger.ts diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 83bf11cbe33d..55998ce04eb6 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,4 +1,4 @@ -import { Logger } from "./sentry/logger"; +import { Logger } from "./logger"; import { Options as UserOptions, SetCommitsOptions } from "./types"; import { determineReleaseName } from "./utils"; diff --git a/packages/bundler-plugin-core/src/plugins/release-management.ts b/packages/bundler-plugin-core/src/plugins/release-management.ts deleted file mode 100644 index fd00157f5271..000000000000 --- a/packages/bundler-plugin-core/src/plugins/release-management.ts +++ /dev/null @@ -1,126 +0,0 @@ -import SentryCli, { SentryCliCommitsOptions, SentryCliNewDeployOptions } from "@sentry/cli"; -import { Scope } from "@sentry/core"; -import { UnpluginOptions } from "unplugin"; -import { Logger } from "../sentry/logger"; -import { safeFlushTelemetry } from "../sentry/telemetry"; -import { HandleRecoverableErrorFn, IncludeEntry } from "../types"; -import { arrayify } from "../utils"; -import { Client } from "@sentry/types"; - -interface ReleaseManagementPluginOptions { - logger: Logger; - releaseName: string; - shouldCreateRelease: boolean; - shouldFinalizeRelease: boolean; - include?: string | IncludeEntry | Array; - setCommitsOption: SentryCliCommitsOptions | false | { auto: true; isDefault: true }; - deployOptions?: SentryCliNewDeployOptions; - dist?: string; - handleRecoverableError: HandleRecoverableErrorFn; - sentryScope: Scope; - sentryClient: Client; - sentryCliOptions: { - url: string; - authToken: string; - org?: string; - project: string; - vcsRemote: string; - silent: boolean; - headers?: Record; - }; - createDependencyOnSourcemapFiles: () => () => void; -} - -/** - * Creates a plugin that creates releases, sets commits, deploys and finalizes releases. - * - * Additionally, if legacy upload options are set, it uploads source maps in the legacy (non-debugId) way. - */ -export function releaseManagementPlugin({ - logger, - releaseName, - include, - dist, - setCommitsOption, - shouldCreateRelease, - shouldFinalizeRelease, - deployOptions, - handleRecoverableError, - sentryScope, - sentryClient, - sentryCliOptions, - createDependencyOnSourcemapFiles, -}: ReleaseManagementPluginOptions): UnpluginOptions { - const freeGlobalDependencyOnSourcemapFiles = createDependencyOnSourcemapFiles(); - return { - name: "sentry-release-management-plugin", - async writeBundle() { - // It is possible that this writeBundle hook is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) - // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. - const freeWriteBundleInvocationDependencyOnSourcemapFiles = - createDependencyOnSourcemapFiles(); - - try { - const cliInstance = new SentryCli(null, sentryCliOptions); - - if (shouldCreateRelease) { - await cliInstance.releases.new(releaseName); - } - - if (include) { - const normalizedInclude = arrayify(include) - .map((includeItem) => - typeof includeItem === "string" ? { paths: [includeItem] } : includeItem - ) - .map((includeEntry) => ({ - ...includeEntry, - validate: includeEntry.validate ?? false, - ext: includeEntry.ext - ? includeEntry.ext.map((extension) => `.${extension.replace(/^\./, "")}`) - : [".js", ".map", ".jsbundle", ".bundle"], - ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined, - })); - - await cliInstance.releases.uploadSourceMaps(releaseName, { - include: normalizedInclude, - dist, - }); - } - - if (setCommitsOption !== false) { - try { - await cliInstance.releases.setCommits(releaseName, setCommitsOption); - } catch (e) { - // shouldNotThrowOnFailure being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo - if ( - "shouldNotThrowOnFailure" in setCommitsOption && - setCommitsOption.shouldNotThrowOnFailure - ) { - logger.debug( - "An error occurred setting commits on release (this message can be ignored unless you commits on release are desired):", - e - ); - } else { - throw e; - } - } - } - - if (shouldFinalizeRelease) { - await cliInstance.releases.finalize(releaseName); - } - - if (deployOptions) { - await cliInstance.releases.newDeploy(releaseName, deployOptions); - } - } catch (e) { - sentryScope.captureException('Error in "releaseManagementPlugin" writeBundle hook'); - await safeFlushTelemetry(sentryClient); - handleRecoverableError(e, false); - } finally { - freeGlobalDependencyOnSourcemapFiles(); - freeWriteBundleInvocationDependencyOnSourcemapFiles(); - } - }, - }; -} diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts deleted file mode 100644 index e6efd08d5c75..000000000000 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { glob } from "glob"; -import { UnpluginOptions } from "unplugin"; -import { Logger } from "../sentry/logger"; -import { safeFlushTelemetry } from "../sentry/telemetry"; -import fs from "fs"; -import { Scope } from "@sentry/core"; -import { Client } from "@sentry/types"; -import { HandleRecoverableErrorFn } from "../types"; - -interface FileDeletionPlugin { - handleRecoverableError: HandleRecoverableErrorFn; - waitUntilSourcemapFileDependenciesAreFreed: () => Promise; - sentryScope: Scope; - sentryClient: Client; - filesToDeleteAfterUpload: string | string[] | Promise | undefined; - logger: Logger; -} - -export function fileDeletionPlugin({ - handleRecoverableError, - sentryScope, - sentryClient, - filesToDeleteAfterUpload, - waitUntilSourcemapFileDependenciesAreFreed, - logger, -}: FileDeletionPlugin): UnpluginOptions { - return { - name: "sentry-file-deletion-plugin", - async writeBundle() { - try { - const filesToDelete = await filesToDeleteAfterUpload; - if (filesToDelete !== undefined) { - const filePathsToDelete = await glob(filesToDelete, { - absolute: true, - nodir: true, - }); - - logger.debug( - "Waiting for dependencies on generated files to be freed before deleting..." - ); - - await waitUntilSourcemapFileDependenciesAreFreed(); - - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); - - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); - } - } catch (e) { - sentryScope.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); - await safeFlushTelemetry(sentryClient); - // We throw by default if we get here b/c not being able to delete - // source maps could leak them to production - handleRecoverableError(e, true); - } - }, - }; -} diff --git a/packages/bundler-plugin-core/src/plugins/telemetry.ts b/packages/bundler-plugin-core/src/plugins/telemetry.ts deleted file mode 100644 index cbff196b0419..000000000000 --- a/packages/bundler-plugin-core/src/plugins/telemetry.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Scope, startSpan } from "@sentry/core"; -import { Client } from "@sentry/types"; -import { UnpluginOptions } from "unplugin"; -import { Logger } from "../sentry/logger"; -import { safeFlushTelemetry } from "../sentry/telemetry"; - -interface TelemetryPluginOptions { - sentryClient: Client; - sentryScope: Scope; - shouldSendTelemetry: Promise; - logger: Logger; -} - -export function telemetryPlugin({ - sentryClient, - sentryScope, - shouldSendTelemetry, - logger, -}: TelemetryPluginOptions): UnpluginOptions { - return { - name: "sentry-telemetry-plugin", - async buildStart() { - if (await shouldSendTelemetry) { - logger.info( - "Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`." - ); - startSpan({ name: "Sentry Bundler Plugin execution", scope: sentryScope }, () => { - // - }); - await safeFlushTelemetry(sentryClient); - } - }, - }; -} diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 81b10c36e5c6..3c183ad831b0 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -13,7 +13,7 @@ const stackParser = createStackParser(nodeStackLineParser()); export function createSentryInstance( options: NormalizedOptions, shouldSendTelemetry: Promise, - bundler: string + buildTool: string ): { sentryScope: Scope; sentryClient: Client } { const clientOptions: ServerRuntimeClientOptions = { platform: "node", @@ -55,12 +55,16 @@ export function createSentryInstance( const scope = new Scope(); scope.setClient(client); - setTelemetryDataOnScope(options, scope, bundler); + setTelemetryDataOnScope(options, scope, buildTool); return { sentryScope: scope, sentryClient: client }; } -export function setTelemetryDataOnScope(options: NormalizedOptions, scope: Scope, bundler: string) { +export function setTelemetryDataOnScope( + options: NormalizedOptions, + scope: Scope, + buildTool: string +) { const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; scope.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); @@ -103,7 +107,7 @@ export function setTelemetryDataOnScope(options: NormalizedOptions, scope: Scope scope.setTags({ organization: org, project, - bundler, + bundler: buildTool, }); scope.setUser({ id: org }); @@ -134,7 +138,7 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis let cliInfo; try { // Makes a call to SentryCLI to get the Sentry server URL the CLI uses. - // We need to check and decide to use telemetry based on the CLI's respone to this call + // We need to check and decide to use telemetry based on the CLI's response to this call // because only at this time we checked a possibly existing .sentryclirc file. This file // could point to another URL than the default URL. cliInfo = await cli.execute(["info"], false); diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 24e2049eae84..8293315c3e56 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -411,3 +411,10 @@ export function replaceBooleanFlagsInCode( return null; } + +// https://turbo.build/repo/docs/reference/system-environment-variables#environment-variables-in-tasks +export function getTurborepoEnvPassthroughWarning(envVarName: string) { + return process.env["TURBO_HASH"] + ? `\nYou seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` + : ""; +} diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index f16d5c89c383..d63d3bcdcb7d 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -1,4 +1,4 @@ -import { createLogger } from "../../src/sentry/logger"; +import { createLogger } from "../../src/logger"; describe("Logger", () => { const consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => undefined); diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 08cc17c471bb..4e8373f6cb12 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -222,16 +222,23 @@ function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp } function esbuildDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise + upload: (buildArtifacts: string[]) => Promise, + _logger: Logger, + createDependencyOnBuildArtifacts: () => () => void ): UnpluginOptions { + const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); return { name: "sentry-esbuild-debug-id-upload-plugin", esbuild: { setup({ initialOptions, onEnd }) { initialOptions.metafile = true; onEnd(async (result) => { - const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; - await upload(buildArtifacts); + try { + const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; + await upload(buildArtifacts); + } finally { + freeGlobalDependencyOnDebugIdSourcemapArtifacts(); + } }); }, }, diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index deb289e13310..3f6d896307bc 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -39,110 +39,112 @@ test("rollup bundle telemetry", async () => { // Ensure the session gets closed process.emit("beforeExit", 0); - expect(gbl.__SENTRY_INTERCEPT_TRANSPORT__).toEqual([ - // Fist we should have a session start + expect(gbl.__SENTRY_INTERCEPT_TRANSPORT__).toEqual( expect.arrayContaining([ - [ + // Fist we should have a session start + expect.arrayContaining([ [ - { type: "session" }, - expect.objectContaining({ - sid: expect.any(String), - init: true, - started: expect.any(String), - timestamp: expect.any(String), - status: "ok", - errors: 0, - }), + [ + { type: "session" }, + expect.objectContaining({ + sid: expect.any(String), + init: true, + started: expect.any(String), + timestamp: expect.any(String), + status: "ok", + errors: 0, + }), + ], ], - ], - ]), - // Then we should get a transaction for execution - [ - { - event_id: expect.any(String), - sent_at: expect.any(String), - sdk: { name: "sentry.javascript.node", version: expect.any(String) }, - trace: expect.objectContaining({ - environment: "production", - release: expect.any(String), - sample_rate: "1", - transaction: "Sentry Bundler Plugin execution", - sampled: "true", - }), - }, + ]), + // Then we should get a transaction for execution [ + { + event_id: expect.any(String), + sent_at: expect.any(String), + sdk: { name: "sentry.javascript.node", version: expect.any(String) }, + trace: expect.objectContaining({ + environment: "production", + release: expect.any(String), + sample_rate: "1", + transaction: "Sentry Bundler Plugin execution", + sampled: "true", + }), + }, [ - { type: "transaction" }, - expect.objectContaining({ - contexts: { - trace: { - span_id: expect.any(String), - trace_id: expect.any(String), - data: { - "sentry.origin": "manual", - "sentry.source": "custom", - "sentry.sample_rate": 1, + [ + { type: "transaction" }, + expect.objectContaining({ + contexts: { + trace: { + span_id: expect.any(String), + trace_id: expect.any(String), + data: { + "sentry.origin": "manual", + "sentry.source": "custom", + "sentry.sample_rate": 1, + }, + origin: "manual", }, - origin: "manual", + runtime: { name: "node", version: expect.any(String) }, }, - runtime: { name: "node", version: expect.any(String) }, - }, - spans: [], - start_timestamp: expect.any(Number), - timestamp: expect.any(Number), - transaction: "Sentry Bundler Plugin execution", - type: "transaction", - transaction_info: { source: "custom" }, - platform: "node", - event_id: expect.any(String), - environment: "production", - release: expect.any(String), - tags: expect.objectContaining({ - "upload-legacy-sourcemaps": false, - "module-metadata": false, - "inject-build-information": false, - "set-commits": "auto", - "finalize-release": true, - "deploy-options": false, - "custom-error-handler": false, - "sourcemaps-assets": false, - "delete-after-upload": false, - "sourcemaps-disabled": false, - "react-annotate": false, - "meta-framework": "none", - "application-key-set": false, - bundler: "rollup", + spans: [], + start_timestamp: expect.any(Number), + timestamp: expect.any(Number), + transaction: "Sentry Bundler Plugin execution", + type: "transaction", + transaction_info: { source: "custom" }, + platform: "node", + event_id: expect.any(String), + environment: "production", + release: expect.any(String), + tags: expect.objectContaining({ + "upload-legacy-sourcemaps": false, + "module-metadata": false, + "inject-build-information": false, + "set-commits": "auto", + "finalize-release": true, + "deploy-options": false, + "custom-error-handler": false, + "sourcemaps-assets": false, + "delete-after-upload": false, + "sourcemaps-disabled": false, + "react-annotate": false, + "meta-framework": "none", + "application-key-set": false, + bundler: "rollup", + }), + sdk: expect.objectContaining({ + name: "sentry.javascript.node", + version: expect.any(String), + packages: [{ name: "npm:@sentry/node", version: expect.any(String) }], + }), }), - sdk: expect.objectContaining({ - name: "sentry.javascript.node", - version: expect.any(String), - packages: [{ name: "npm:@sentry/node", version: expect.any(String) }], - }), - }), + ], ], ], - ], - // Then we should get a session exit - [ - { - sent_at: expect.any(String), - sdk: { name: "sentry.javascript.node", version: expect.any(String) }, - }, + // Then we should get a session exit [ + { + sent_at: expect.any(String), + sdk: { name: "sentry.javascript.node", version: expect.any(String) }, + }, [ - { type: "session" }, - { - sid: expect.any(String), - init: false, - started: expect.any(String), - timestamp: expect.any(String), - status: "exited", - errors: 0, - duration: expect.any(Number), - attrs: { release: expect.any(String), environment: "production" }, - }, + [ + { type: "session" }, + { + sid: expect.any(String), + init: false, + started: expect.any(String), + timestamp: expect.any(String), + status: "exited", + errors: 0, + duration: expect.any(Number), + attrs: { release: expect.any(String), environment: "production" }, + }, + ], ], ], - ], - ]); + ]) + ); }); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index de29484fd555..6ca2466f1669 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -8,6 +8,7 @@ import { SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, createComponentNameAnnotateHooks, + Logger, } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; @@ -40,11 +41,13 @@ function rollupModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOpt } function rollupDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise + upload: (buildArtifacts: string[]) => Promise, + logger: Logger, + createDependencyOnBuildArtifacts: () => () => void ): UnpluginOptions { return { name: "sentry-rollup-debug-id-upload-plugin", - rollup: createRollupDebugIdUploadHooks(upload), + rollup: createRollupDebugIdUploadHooks(upload, logger, createDependencyOnBuildArtifacts), }; } diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index ba69f60e18cc..8a36177cc650 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -22,50 +22,15 @@ describe("sentryRollupPlugin", () => { const pluginNames = plugins.map((plugin) => plugin.name); - expect(pluginNames).toEqual([ - "sentry-telemetry-plugin", - "sentry-rollup-release-injection-plugin", - "sentry-release-management-plugin", - "sentry-rollup-debug-id-injection-plugin", - "sentry-rollup-debug-id-upload-plugin", - "sentry-file-deletion-plugin", - ]); - }); - - it("doesn't include release management and debug id upload plugins if NODE_ENV is 'development'", () => { - const originalNodeEnv = process.env["NODE_ENV"]; - process.env["NODE_ENV"] = "development"; - - const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { - /* avoid test output pollution */ - }); - - const plugins = sentryRollupPlugin({ - authToken: "test-token", - org: "test-org", - project: "test-project", - debug: true, - }) as Plugin[]; - - expect(Array.isArray(plugins)).toBe(true); - - const pluginNames = plugins.map((plugin) => plugin.name); - - expect(pluginNames).toEqual([ - "sentry-telemetry-plugin", - "sentry-rollup-release-injection-plugin", - "sentry-rollup-debug-id-injection-plugin", - "sentry-file-deletion-plugin", - ]); - - expect(consoleSpy).toHaveBeenCalledWith( - expect.stringContaining("Running in development mode. Will not create release.") - ); - - expect(consoleSpy).toHaveBeenCalledWith( - expect.stringContaining("Running in development mode. Will not upload sourcemaps.") + expect(pluginNames).toEqual( + expect.arrayContaining([ + "sentry-telemetry-plugin", + "sentry-rollup-release-injection-plugin", + "sentry-release-management-plugin", + "sentry-rollup-debug-id-injection-plugin", + "sentry-rollup-debug-id-upload-plugin", + "sentry-file-deletion-plugin", + ]) ); - - process.env["NODE_ENV"] = originalNodeEnv; }); }); diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 11c77f00c4c9..fa13b02fd06a 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -8,6 +8,7 @@ import { SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, createComponentNameAnnotateHooks, + Logger, } from "@sentry/bundler-plugin-core"; import { UnpluginOptions } from "unplugin"; @@ -44,11 +45,13 @@ function viteModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptio } function viteDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise + upload: (buildArtifacts: string[]) => Promise, + logger: Logger, + createDependencyOnBuildArtifacts: () => () => void ): UnpluginOptions { return { name: "sentry-vite-debug-id-upload-plugin", - vite: createRollupDebugIdUploadHooks(upload), + vite: createRollupDebugIdUploadHooks(upload, logger, createDependencyOnBuildArtifacts), }; } diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index ccf11af2286c..d610eb10f2fa 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -22,50 +22,15 @@ describe("sentryVitePlugin", () => { const pluginNames = plugins.map((plugin) => plugin.name); - expect(pluginNames).toEqual([ - "sentry-telemetry-plugin", - "sentry-vite-release-injection-plugin", - "sentry-release-management-plugin", - "sentry-vite-debug-id-injection-plugin", - "sentry-vite-debug-id-upload-plugin", - "sentry-file-deletion-plugin", - ]); - }); - - it("doesn't include release management and debug id upload plugins if NODE_ENV is 'development'", () => { - const originalNodeEnv = process.env["NODE_ENV"]; - process.env["NODE_ENV"] = "development"; - - const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { - /* avoid test output pollution */ - }); - - const plugins = sentryVitePlugin({ - authToken: "test-token", - org: "test-org", - project: "test-project", - debug: true, - }) as VitePlugin[]; - - expect(Array.isArray(plugins)).toBe(true); - - const pluginNames = plugins.map((plugin) => plugin.name); - - expect(pluginNames).toEqual([ - "sentry-telemetry-plugin", - "sentry-vite-release-injection-plugin", - "sentry-vite-debug-id-injection-plugin", - "sentry-file-deletion-plugin", - ]); - - expect(consoleSpy).toHaveBeenCalledWith( - expect.stringContaining("Running in development mode. Will not create release.") - ); - - expect(consoleSpy).toHaveBeenCalledWith( - expect.stringContaining("Running in development mode. Will not upload sourcemaps.") + expect(pluginNames).toEqual( + expect.arrayContaining([ + "sentry-telemetry-plugin", + "sentry-vite-release-injection-plugin", + "sentry-release-management-plugin", + "sentry-vite-debug-id-injection-plugin", + "sentry-vite-debug-id-upload-plugin", + "sentry-file-deletion-plugin", + ]) ); - - process.env["NODE_ENV"] = originalNodeEnv; }); }); diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index e9304038e23e..5c7c3e29bff8 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -131,28 +131,31 @@ function webpackDebugIdInjectionPlugin( }); } -function webpackDebugIdUploadPlugin(): ( +function webpackDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise, logger: Logger, + createDependencyOnBuildArtifacts: () => () => void, forceExitOnBuildCompletion?: boolean -) => UnpluginOptions { +): UnpluginOptions { const pluginName = "sentry-webpack-debug-id-upload-plugin"; - return ( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - forceExitOnBuildCompletion?: boolean - ) => ({ + return { name: pluginName, webpack(compiler) { + const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); + compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback: () => void) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const outputPath = (compilation.outputOptions.path as string | undefined) ?? path.resolve(); const buildArtifacts = Object.keys(compilation.assets as Record).map( (asset) => path.join(outputPath, asset) ); - void upload(buildArtifacts).then(() => { - callback(); - }); + void upload(buildArtifacts) + .then(() => { + callback(); + }) + .finally(() => { + freeGlobalDependencyOnDebugIdSourcemapArtifacts(); + }); }); if (forceExitOnBuildCompletion && compiler.options.mode === "production") { @@ -164,7 +167,7 @@ function webpackDebugIdUploadPlugin(): ( }); } }, - }); + }; } function webpackModuleMetadataInjectionPlugin( @@ -215,7 +218,7 @@ export function sentryWebpackUnpluginFactory({ componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin(), moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin(BannerPlugin), debugIdInjectionPlugin: webpackDebugIdInjectionPlugin(BannerPlugin), - debugIdUploadPlugin: webpackDebugIdUploadPlugin(), + debugIdUploadPlugin: webpackDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin(DefinePlugin), }); } From 2d796d7f10b77fb0e0ec4478fc9b6567adaf2c0b Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 23 Apr 2025 11:40:38 +0200 Subject: [PATCH 482/640] revert: Testing additional bundlers (#729) * revert: Testing additional bundlers * Lint --- packages/integration-tests/package.json | 2 - .../utils/create-cjs-bundles.ts | 62 +--- yarn.lock | 330 ------------------ 3 files changed, 6 insertions(+), 388 deletions(-) diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 6ad563f1a57c..ea29f66e3441 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -39,10 +39,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "3.2.0", - "rollup4": "npm:rollup@^4", "ts-node": "^10.9.1", "vite": "3.0.0", - "vite6": "npm:vite@^6", "webpack4": "npm:webpack@^4", "webpack5": "npm:webpack@5.74.0" }, diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 7f75221ed0ce..b230ccab41ce 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -1,6 +1,6 @@ -import * as vite3 from "vite"; +import * as vite from "vite"; import * as path from "path"; -import * as rollup3 from "rollup"; +import * as rollup from "rollup"; import { default as webpack4 } from "webpack4"; import { webpack as webpack5 } from "webpack5"; import * as esbuild from "esbuild"; @@ -10,17 +10,9 @@ import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -const [NODE_MAJOR_VERSION] = process.version.split(".").map(Number) as [number]; +const [NODE_MAJOR_VERSION] = process.version.replace("v", "").split(".").map(Number) as [number]; -type Bundlers = - | "webpack4" - | "webpack5" - | "esbuild" - | "rollup" - | "rollup4" - | "vite" - | "vite6" - | string; +type Bundlers = "webpack4" | "webpack5" | "esbuild" | "rollup" | "vite" | string; export function createCjsBundles( entrypoints: { [name: string]: string }, @@ -29,29 +21,7 @@ export function createCjsBundles( plugins: Bundlers[] = [] ): void { if (plugins.length === 0 || plugins.includes("vite")) { - void vite3.build({ - clearScreen: false, - build: { - sourcemap: true, - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [sentryVitePlugin(sentryUnpluginOptions)], - }); - } - - if (NODE_MAJOR_VERSION >= 18 && (plugins.length === 0 || plugins.includes("vite6"))) { - // We can't import this at the top of the file because they are not - // compatible with Node v14 - // eslint-disable-next-line @typescript-eslint/no-var-requires - const vite6 = require("vite6") as typeof vite3; - void vite6.build({ + void vite.build({ clearScreen: false, build: { sourcemap: true, @@ -69,27 +39,7 @@ export function createCjsBundles( } if (plugins.length === 0 || plugins.includes("rollup")) { - void rollup3 - .rollup({ - input: entrypoints, - plugins: [sentryRollupPlugin(sentryUnpluginOptions)], - }) - .then((bundle) => - bundle.write({ - sourcemap: true, - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", - }) - ); - } - - if (NODE_MAJOR_VERSION >= 18 && (plugins.length === 0 || plugins.includes("rollup4"))) { - // We can't import this at the top of the file because they are not - // compatible with Node v14 - // eslint-disable-next-line @typescript-eslint/no-var-requires - const rollup4 = require("rollup4") as typeof rollup3; - void rollup4 + void rollup .rollup({ input: entrypoints, plugins: [sentryRollupPlugin(sentryUnpluginOptions)], diff --git a/yarn.lock b/yarn.lock index 948b30f72bab..7ad0c552fee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1303,11 +1303,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@esbuild/aix-ppc64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8" - integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== - "@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" @@ -1318,11 +1313,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz#74752a09301b8c6b9a415fbda9fb71406a62a7b7" integrity sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg== -"@esbuild/android-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196" - integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== - "@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" @@ -1333,11 +1323,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5" integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ== -"@esbuild/android-arm@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee" - integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== - "@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" @@ -1348,11 +1333,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426" integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g== -"@esbuild/android-x64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2" - integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== - "@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" @@ -1363,11 +1343,6 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz#64e2ee945e5932cd49812caa80e8896e937e2f8b" integrity sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA== -"@esbuild/darwin-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423" - integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== - "@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" @@ -1378,11 +1353,6 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a" integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw== -"@esbuild/darwin-x64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374" - integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== - "@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" @@ -1393,11 +1363,6 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz#29751a41b242e0a456d89713b228f1da4f45582f" integrity sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ== -"@esbuild/freebsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6" - integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== - "@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" @@ -1408,11 +1373,6 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268" integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw== -"@esbuild/freebsd-x64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809" - integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== - "@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" @@ -1423,11 +1383,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058" - integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== - "@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" @@ -1438,11 +1393,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6" - integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== - "@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" @@ -1453,11 +1403,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82" integrity sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ== -"@esbuild/linux-ia32@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737" - integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== - "@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" @@ -1473,11 +1418,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz#df890499f6e566b7de3aa2361be6df2b8d5fa015" integrity sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg== -"@esbuild/linux-loong64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a" - integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== - "@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" @@ -1488,11 +1428,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30" - integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== - "@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" @@ -1503,11 +1438,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff" integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw== -"@esbuild/linux-ppc64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067" - integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== - "@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" @@ -1518,11 +1448,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3" - integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== - "@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" @@ -1533,11 +1458,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b" integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg== -"@esbuild/linux-s390x@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602" - integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== - "@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" @@ -1548,16 +1468,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz#f618bec2655de49bff91c588777e37b5e3169d4a" integrity sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg== -"@esbuild/linux-x64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb" - integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== - -"@esbuild/netbsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac" - integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== - "@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" @@ -1568,16 +1478,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f" - integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== - -"@esbuild/openbsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f" - integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== - "@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" @@ -1588,11 +1488,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768" - integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== - "@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" @@ -1603,11 +1498,6 @@ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740" integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw== -"@esbuild/sunos-x64@0.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb" - integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== - "@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" @@ -1618,11 +1508,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf" - integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== - "@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" @@ -1633,11 +1518,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f" - integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== - "@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" @@ -1648,11 +1528,6 @@ 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.25.2": - version "0.25.2" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d" - integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== - "@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" @@ -2841,106 +2716,6 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz#1d8cc5dd3d8ffe569d8f7f67a45c7909828a0f66" - integrity sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA== - -"@rollup/rollup-android-arm64@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz#9c136034d3d9ed29d0b138c74dd63c5744507fca" - integrity sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ== - -"@rollup/rollup-darwin-arm64@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz#830d07794d6a407c12b484b8cf71affd4d3800a6" - integrity sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q== - -"@rollup/rollup-darwin-x64@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz#b26f0f47005c1fa5419a880f323ed509dc8d885c" - integrity sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ== - -"@rollup/rollup-freebsd-arm64@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz#2b60c81ac01ff7d1bc8df66aee7808b6690c6d19" - integrity sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ== - -"@rollup/rollup-freebsd-x64@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz#4826af30f4d933d82221289068846c9629cc628c" - integrity sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q== - -"@rollup/rollup-linux-arm-gnueabihf@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz#a1f4f963d5dcc9e5575c7acf9911824806436bf7" - integrity sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g== - -"@rollup/rollup-linux-arm-musleabihf@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz#e924b0a8b7c400089146f6278446e6b398b75a06" - integrity sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw== - -"@rollup/rollup-linux-arm64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz#cb43303274ec9a716f4440b01ab4e20c23aebe20" - integrity sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ== - -"@rollup/rollup-linux-arm64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz#531c92533ce3d167f2111bfcd2aa1a2041266987" - integrity sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA== - -"@rollup/rollup-linux-loongarch64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz#53403889755d0c37c92650aad016d5b06c1b061a" - integrity sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz#f669f162e29094c819c509e99dbeced58fc708f9" - integrity sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ== - -"@rollup/rollup-linux-riscv64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz#4bab37353b11bcda5a74ca11b99dea929657fd5f" - integrity sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ== - -"@rollup/rollup-linux-riscv64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz#4d66be1ce3cfd40a7910eb34dddc7cbd4c2dd2a5" - integrity sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA== - -"@rollup/rollup-linux-s390x-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz#7181c329395ed53340a0c59678ad304a99627f6d" - integrity sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA== - -"@rollup/rollup-linux-x64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz#00825b3458094d5c27cb4ed66e88bfe9f1e65f90" - integrity sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA== - -"@rollup/rollup-linux-x64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz#81caac2a31b8754186f3acc142953a178fcd6fba" - integrity sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg== - -"@rollup/rollup-win32-arm64-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz#3a3f421f5ce9bd99ed20ce1660cce7cee3e9f199" - integrity sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ== - -"@rollup/rollup-win32-ia32-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz#a44972d5cdd484dfd9cf3705a884bf0c2b7785a7" - integrity sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ== - -"@rollup/rollup-win32-x64-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz#bfe0214e163f70c4fec1c8f7bb8ce266f4c05b7e" - integrity sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug== - "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -3316,11 +3091,6 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/estree@1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -6436,37 +6206,6 @@ esbuild@^0.14.47: esbuild-windows-64 "0.14.54" esbuild-windows-arm64 "0.14.54" -esbuild@^0.25.0: - version "0.25.2" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b" - integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.2" - "@esbuild/android-arm" "0.25.2" - "@esbuild/android-arm64" "0.25.2" - "@esbuild/android-x64" "0.25.2" - "@esbuild/darwin-arm64" "0.25.2" - "@esbuild/darwin-x64" "0.25.2" - "@esbuild/freebsd-arm64" "0.25.2" - "@esbuild/freebsd-x64" "0.25.2" - "@esbuild/linux-arm" "0.25.2" - "@esbuild/linux-arm64" "0.25.2" - "@esbuild/linux-ia32" "0.25.2" - "@esbuild/linux-loong64" "0.25.2" - "@esbuild/linux-mips64el" "0.25.2" - "@esbuild/linux-ppc64" "0.25.2" - "@esbuild/linux-riscv64" "0.25.2" - "@esbuild/linux-s390x" "0.25.2" - "@esbuild/linux-x64" "0.25.2" - "@esbuild/netbsd-arm64" "0.25.2" - "@esbuild/netbsd-x64" "0.25.2" - "@esbuild/openbsd-arm64" "0.25.2" - "@esbuild/openbsd-x64" "0.25.2" - "@esbuild/sunos-x64" "0.25.2" - "@esbuild/win32-arm64" "0.25.2" - "@esbuild/win32-ia32" "0.25.2" - "@esbuild/win32-x64" "0.25.2" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -7190,11 +6929,6 @@ 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" @@ -10081,11 +9815,6 @@ nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== -nanoid@^3.3.8: - version "3.3.11" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -11030,11 +10759,6 @@ 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.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -11106,15 +10830,6 @@ postcss@^8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.5.3: - version "8.5.3" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== - dependencies: - nanoid "^3.3.8" - 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" @@ -11771,35 +11486,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -"rollup4@npm:rollup@^4", rollup@^4.30.1: - version "4.39.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz#9dc1013b70c0e2cb70ef28350142e9b81b3f640c" - integrity sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g== - dependencies: - "@types/estree" "1.0.7" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.39.0" - "@rollup/rollup-android-arm64" "4.39.0" - "@rollup/rollup-darwin-arm64" "4.39.0" - "@rollup/rollup-darwin-x64" "4.39.0" - "@rollup/rollup-freebsd-arm64" "4.39.0" - "@rollup/rollup-freebsd-x64" "4.39.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.39.0" - "@rollup/rollup-linux-arm-musleabihf" "4.39.0" - "@rollup/rollup-linux-arm64-gnu" "4.39.0" - "@rollup/rollup-linux-arm64-musl" "4.39.0" - "@rollup/rollup-linux-loongarch64-gnu" "4.39.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.39.0" - "@rollup/rollup-linux-riscv64-gnu" "4.39.0" - "@rollup/rollup-linux-riscv64-musl" "4.39.0" - "@rollup/rollup-linux-s390x-gnu" "4.39.0" - "@rollup/rollup-linux-x64-gnu" "4.39.0" - "@rollup/rollup-linux-x64-musl" "4.39.0" - "@rollup/rollup-win32-arm64-msvc" "4.39.0" - "@rollup/rollup-win32-ia32-msvc" "4.39.0" - "@rollup/rollup-win32-x64-msvc" "4.39.0" - fsevents "~2.3.2" - rollup@2.75.7: version "2.75.7" resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" @@ -12188,11 +11874,6 @@ 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" @@ -13264,17 +12945,6 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -"vite6@npm:vite@^6": - version "6.2.6" - resolved "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz#7f0ccf2fdc0c1eda079ce258508728e2473d3f61" - integrity sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw== - dependencies: - esbuild "^0.25.0" - postcss "^8.5.3" - rollup "^4.30.1" - optionalDependencies: - fsevents "~2.3.3" - vite@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" From 7bc20a771c8bbb321be745c790b2eca9120cc6b0 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 29 Apr 2025 15:23:30 +0200 Subject: [PATCH 483/640] fix: Replace existing debug ID comments (#730) --- .gitignore | 1 + .../src/build-plugin-manager.ts | 9 +- .../src/debug-id-upload.ts | 16 ++- .../debug-ids-already-injected.test.ts | 106 ++++++++++++++++++ .../input/bundle.js | 2 + .../input/rollup4/package.json | 6 + .../input/rollup4/rollup.config.js | 15 +++ .../input/vite6/package.json | 5 + .../input/vite6/vite.config.js | 21 ++++ .../input/webpack5/package.json | 7 ++ .../input/webpack5/webpack.config.js | 18 +++ packages/integration-tests/utils/testIf.ts | 10 +- 12 files changed, 210 insertions(+), 6 deletions(-) create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/package.json create mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js diff --git a/.gitignore b/.gitignore index 7f95f1013fff..cd23e592c032 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ yarn-error.log *.tgz .nxcache +packages/**/yarn.lock \ No newline at end of file diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 4bc85e4fd149..397f04bfb565 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -457,8 +457,11 @@ export function createSentryBuildPluginManager( const tmpUploadFolder = await startSpan( { name: "mkdtemp", scope: sentryScope }, async () => { - return await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + return ( + process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"] || + (await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + )) ); } ); @@ -586,7 +589,7 @@ export function createSentryBuildPluginManager( sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); handleRecoverableError(e, false); } finally { - if (folderToCleanUp) { + if (folderToCleanUp && !process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"]) { void startSpan({ name: "cleanup", scope: sentryScope }, async () => { if (folderToCleanUp) { await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index b9bba5a34380..c9f9302e784c 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -50,7 +50,7 @@ export async function prepareBundleForDebugIdUpload( const uniqueUploadName = `${debugId}-${chunkIndex}`; - bundleContent += `\n//# debugId=${debugId}`; + bundleContent = addDebugIdToBundleSource(bundleContent, debugId); const writeSourceFilePromise = fs.promises.writeFile( path.join(uploadFolder, `${uniqueUploadName}.js`), bundleContent, @@ -95,6 +95,20 @@ function determineDebugIdFromBundleSource(code: string): string | undefined { } } +const SPEC_LAST_DEBUG_ID_REGEX = /\/\/# debugId=([a-fA-F0-9-]+)(?![\s\S]*\/\/# debugId=)/m; + +function hasSpecCompliantDebugId(bundleSource: string): boolean { + return SPEC_LAST_DEBUG_ID_REGEX.test(bundleSource); +} + +function addDebugIdToBundleSource(bundleSource: string, debugId: string): string { + if (hasSpecCompliantDebugId(bundleSource)) { + return bundleSource.replace(SPEC_LAST_DEBUG_ID_REGEX, `//# debugId=${debugId}`); + } else { + return `${bundleSource}\n//# debugId=${debugId}`; + } +} + /** * Applies a set of heuristics to find the source map for a particular bundle. * 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 new file mode 100644 index 000000000000..f0c77f6768bc --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts @@ -0,0 +1,106 @@ +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"; + +function createTempDir() { + return fs.mkdtempSync(path.join(os.tmpdir(), "sentry-bundler-plugin-upload-")); +} + +const SPEC_DEBUG_ID_REGEX = /\/\/# debugId=([a-fA-F0-9-]+)/g; + +function countDebugIdComments(source: string): number { + const matches = source.match(SPEC_DEBUG_ID_REGEX); + if (matches) { + return matches.length; + } + return 0; +} + +function getSingleJavaScriptSourceFileFromDirectory( + dir: string, + fileExtension = ".js" +): string | undefined { + const files = fs.readdirSync(dir); + const jsFiles = files.filter((file) => file.endsWith(fileExtension)); + if (jsFiles.length === 1) { + return fs.readFileSync(path.join(dir, jsFiles[0] as string), "utf-8"); + } + return undefined; +} + +describeNode18Plus("vite 6 bundle", () => { + const viteRoot = path.join(__dirname, "input", "vite6"); + const tempDir = createTempDir(); + + beforeEach(() => { + execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); + execSync("yarn vite build", { + cwd: viteRoot, + stdio: "inherit", + env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, + }); + }); + + test("check vite 6 bundle", () => { + const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); + expect(source).toBeDefined(); + const debugIds = countDebugIdComments(source as string); + expect(debugIds).toBe(1); + }); + + afterEach(() => { + fs.rmSync(tempDir, { recursive: true, force: true }); + }); +}); + +describeNode18Plus("webpack 5 bundle", () => { + const viteRoot = path.join(__dirname, "input", "webpack5"); + const tempDir = createTempDir(); + + beforeEach(() => { + execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); + execSync("yarn webpack build", { + cwd: viteRoot, + stdio: "inherit", + env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, + }); + }); + + test("check webpack 5 bundle", () => { + const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); + expect(source).toBeDefined(); + const debugIds = countDebugIdComments(source as string); + expect(debugIds).toBe(1); + }); + + afterEach(() => { + fs.rmSync(tempDir, { recursive: true, force: true }); + }); +}); + +describeNode18Plus("rollup bundle", () => { + const viteRoot = path.join(__dirname, "input", "rollup4"); + const tempDir = createTempDir(); + + beforeEach(() => { + execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); + execSync("yarn rollup --config rollup.config.js", { + cwd: viteRoot, + stdio: "inherit", + env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, + }); + }); + + test("check rollup bundle", () => { + const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); + expect(source).toBeDefined(); + const debugIds = countDebugIdComments(source as string); + expect(debugIds).toBe(1); + }); + + afterEach(() => { + fs.rmSync(tempDir, { recursive: true, force: true }); + }); +}); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js new file mode 100644 index 000000000000..74cb26633109 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("Hello world"); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json new file mode 100644 index 000000000000..b455216aba59 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "dependencies": { + "rollup": "^4" + } +} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js new file mode 100644 index 000000000000..e54532460106 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js @@ -0,0 +1,15 @@ +import { defineConfig } from "rollup"; +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { join } from "path"; + +const __dirname = new URL(".", import.meta.url).pathname; + +export default defineConfig({ + input: { index: join(__dirname, "..", "bundle.js") }, + output: { + dir: join(__dirname, "..", "..", "out", "rollup4"), + sourcemap: true, + sourcemapDebugIds: true, + }, + plugins: [sentryRollupPlugin({ telemetry: false })], +}); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json new file mode 100644 index 000000000000..94bf169fd2c2 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "vite": "^6" + } +} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js new file mode 100644 index 000000000000..39e04917a352 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js @@ -0,0 +1,21 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { join } from "path"; + +export default defineConfig({ + clearScreen: false, + mode: "production", + build: { + sourcemap: true, + outDir: join(__dirname, "..", "..", "out", "vite6"), + rollupOptions: { + input: { index: join(__dirname, "..", "bundle.js") }, + output: { + format: "cjs", + entryFileNames: "[name].js", + sourcemapDebugIds: true, + }, + }, + }, + plugins: [sentryVitePlugin({ telemetry: false })], +}); 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/webpack5/package.json new file mode 100644 index 000000000000..e1a155e77fec --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/package.json @@ -0,0 +1,7 @@ +{ + "type": "module", + "dependencies": { + "webpack": "^5", + "webpack-cli": "^6" + } +} 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/webpack5/webpack.config.js new file mode 100644 index 000000000000..5ef9279897e2 --- /dev/null +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js @@ -0,0 +1,18 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { join } from "path"; + +const __dirname = new URL(".", import.meta.url).pathname; + +export default { + devtool: "source-map-debugids", + cache: false, + entry: { index: join(__dirname, "..", "bundle.js") }, + output: { + path: join(__dirname, "..", "..", "out", "webpack5"), + library: { + type: "commonjs", + }, + }, + mode: "production", + plugins: [sentryWebpackPlugin({ telemetry: false })], +}; diff --git a/packages/integration-tests/utils/testIf.ts b/packages/integration-tests/utils/testIf.ts index 6c8ac66ad5fc..8f47bc788d0f 100644 --- a/packages/integration-tests/utils/testIf.ts +++ b/packages/integration-tests/utils/testIf.ts @@ -1,3 +1,5 @@ +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) { @@ -15,7 +17,11 @@ export function testIf(condition: boolean): jest.It { */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-undef, @typescript-eslint/no-unsafe-assignment export const testIfNodeMajorVersionIsLessThan18: jest.It = function () { - const nodejsMajorversion = process.version.split(".")[0]?.slice(1); - return testIf(!nodejsMajorversion || parseInt(nodejsMajorversion) < 18); + 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; From 30c15dfd0e5c423504e9718940d6ae258ddc5bbb Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 5 May 2025 10:21:09 +0200 Subject: [PATCH 484/640] meta: Update changelog for 3.4.0 (#733) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7634e8f864d6..a7f6fdc55700 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.4.0 + +- fix: Replace existing debug ID comments (#730) +- feat: Expose bundler plugin primitives via `createSentryBuildPluginManager` (#714) + ## 3.3.1 - fix(webpack5): All `esm` files must have `.mjs` postfix (#721) From 0e15c2582bced4a151287d41103d61df3d2443fc Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 5 May 2025 08:22:22 +0000 Subject: [PATCH 485/640] release: 3.4.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index f5e5afb7fe6c..a489cd6acfb4 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.3.1", + "version": "3.4.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index deee38500716..b9a2551b095e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.3.1", + "version": "3.4.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ada95d364bdf..bc317c2b89da 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.3.1", + "version": "3.4.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.3.1", + "@sentry/babel-plugin-component-annotate": "3.4.0", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 8ed02c9fef76..e4572033d528 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 896543b651e8..13a8cfab2c5b 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.3.1", - "@sentry/rollup-plugin": "3.3.1", - "@sentry/vite-plugin": "3.3.1", - "@sentry/webpack-plugin": "3.3.1", + "@sentry/esbuild-plugin": "3.4.0", + "@sentry/rollup-plugin": "3.4.0", + "@sentry/vite-plugin": "3.4.0", + "@sentry/webpack-plugin": "3.4.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index ec99e76d7c1d..e76f7720243e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.3.1", + "version": "3.4.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/bundler-plugin-core": "3.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 3da5e8d9ef55..4371093a85ee 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index ea29f66e3441..56b665676248 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", - "@sentry/bundler-plugin-core": "3.3.1", - "@sentry/esbuild-plugin": "3.3.1", - "@sentry/rollup-plugin": "3.3.1", - "@sentry/vite-plugin": "3.3.1", - "@sentry/webpack-plugin": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/esbuild-plugin": "3.4.0", + "@sentry/rollup-plugin": "3.4.0", + "@sentry/vite-plugin": "3.4.0", + "@sentry/webpack-plugin": "3.4.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 6e71e9cc907a..163733d8c185 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/bundler-plugin-core": "3.4.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index f59da0ce88c9..d89053bffc6c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.3.1", + "version": "3.4.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/bundler-plugin-core": "3.4.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index fae8464a332c..c322eb826545 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.3.1", + "version": "3.4.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a3c2789b9920..69ff8fc5f4ea 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.3.1", + "version": "3.4.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/bundler-plugin-core": "3.4.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 7344e4270821..36d402b84522 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.3.1", + "version": "3.4.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.3.1", + "@sentry/bundler-plugin-core": "3.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.3.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.3.1", + "@sentry-internal/eslint-config": "3.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From b33725e6ecd1d9990cf650fb1dac5d2da76a8c0d Mon Sep 17 00:00:00 2001 From: thecodewarrior Date: Tue, 13 May 2025 06:14:10 -0700 Subject: [PATCH 486/640] feat(core): Add hook to customize source map file resolution (#732) * feat(core): Add hook to customize source map file resolution fixes #731 * feat(core): Address `resolveSourceMap` PR comments 1. Added better debug logging around the `resolveSourceMap` hook invocation 2. Expanded the `resolveSourceMap` doc comment to include more detail and an example use case 3. Added `resolveSourceMap` documentation to `generate-documentation-table.ts` 4. Removed the feature-specific playground test previously added * Fix formatting --------- Co-authored-by: Andrei Borza --- .../src/build-plugin-manager.ts | 3 +- .../src/debug-id-upload.ts | 96 +++++----- packages/bundler-plugin-core/src/types.ts | 32 +++- .../adjacent-sourcemap/index.js | 2 + .../adjacent-sourcemap/index.js.map | 1 + .../separate-directory/bundles/index.js | 2 + .../sourcemaps/index.js.map | 1 + .../test/sentry/resolve-source-maps.test.ts | 165 ++++++++++++++++++ .../src/generate-documentation-table.ts | 22 +++ 9 files changed, 278 insertions(+), 46 deletions(-) create mode 100644 packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map create mode 100644 packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js create mode 100644 packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map create mode 100644 packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 397f04bfb565..1e7f6f81d456 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -518,7 +518,8 @@ export function createSentryBuildPluginManager( tmpUploadFolder, chunkIndex, logger, - options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook + options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook, + options.sourcemaps?.resolveSourceMap ); } ); diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index c9f9302e784c..3f5e47e5db57 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -1,14 +1,11 @@ import fs from "fs"; import path from "path"; +import * as url from "url"; import * as util from "util"; import { promisify } from "util"; import { SentryBuildPluginManager } from "./build-plugin-manager"; import { Logger } from "./logger"; - -interface RewriteSourcesHook { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (source: string, map: any): string; -} +import { ResolveSourceMapHook, RewriteSourcesHook } from "./types"; interface DebugIdUploadPluginOptions { sentryBuildPluginManager: SentryBuildPluginManager; @@ -27,7 +24,8 @@ export async function prepareBundleForDebugIdUpload( uploadFolder: string, chunkIndex: number, logger: Logger, - rewriteSourcesHook: RewriteSourcesHook + rewriteSourcesHook: RewriteSourcesHook, + resolveSourceMapHook: ResolveSourceMapHook | undefined ) { let bundleContent; try { @@ -60,7 +58,8 @@ export async function prepareBundleForDebugIdUpload( const writeSourceMapFilePromise = determineSourceMapPathFromBundle( bundleFilePath, bundleContent, - logger + logger, + resolveSourceMapHook ).then(async (sourceMapPath) => { if (sourceMapPath) { await prepareSourceMapForDebugIdUpload( @@ -114,61 +113,72 @@ function addDebugIdToBundleSource(bundleSource: string, debugId: string): string * * @returns the path to the bundle's source map or `undefined` if none could be found. */ -async function determineSourceMapPathFromBundle( +export async function determineSourceMapPathFromBundle( bundlePath: string, bundleSource: string, - logger: Logger + logger: Logger, + resolveSourceMapHook: ResolveSourceMapHook | undefined ): Promise { - // 1. try to find source map at `sourceMappingURL` location const sourceMappingUrlMatch = bundleSource.match(/^\s*\/\/# sourceMappingURL=(.*)$/m); - if (sourceMappingUrlMatch) { - const sourceMappingUrl = path.normalize(sourceMappingUrlMatch[1] as string); + const sourceMappingUrl = sourceMappingUrlMatch ? (sourceMappingUrlMatch[1] as string) : undefined; + + const searchLocations: string[] = []; + + if (resolveSourceMapHook) { + logger.debug( + `Calling sourcemaps.resolveSourceMap(${JSON.stringify(bundlePath)}, ${JSON.stringify( + sourceMappingUrl + )})` + ); + const customPath = await resolveSourceMapHook(bundlePath, sourceMappingUrl); + logger.debug(`resolveSourceMap hook returned: ${JSON.stringify(customPath)}`); + + if (customPath) { + searchLocations.push(customPath); + } + } - let isUrl; - let isSupportedUrl; + // 1. try to find source map at `sourceMappingURL` location + if (sourceMappingUrl) { + let parsedUrl: URL | undefined; try { - const url = new URL(sourceMappingUrl); - isUrl = true; - isSupportedUrl = url.protocol === "file:"; + parsedUrl = new URL(sourceMappingUrl); } catch { - isUrl = false; - isSupportedUrl = false; + // noop } - let absoluteSourceMapPath; - if (isSupportedUrl) { - absoluteSourceMapPath = sourceMappingUrl; - } else if (isUrl) { - // noop + if (parsedUrl && parsedUrl.protocol === "file:") { + searchLocations.push(url.fileURLToPath(sourceMappingUrl)); + } else if (parsedUrl) { + // noop, non-file urls don't translate to a local sourcemap file } else if (path.isAbsolute(sourceMappingUrl)) { - absoluteSourceMapPath = sourceMappingUrl; + searchLocations.push(path.normalize(sourceMappingUrl)); } else { - absoluteSourceMapPath = path.join(path.dirname(bundlePath), sourceMappingUrl); - } - - if (absoluteSourceMapPath) { - try { - // Check if the file actually exists - await util.promisify(fs.access)(absoluteSourceMapPath); - return absoluteSourceMapPath; - } catch (e) { - // noop - } + searchLocations.push(path.normalize(path.join(path.dirname(bundlePath), sourceMappingUrl))); } } // 2. try to find source map at path adjacent to chunk source, but with `.map` appended - try { - const adjacentSourceMapFilePath = bundlePath + ".map"; - await util.promisify(fs.access)(adjacentSourceMapFilePath); - return adjacentSourceMapFilePath; - } catch (e) { - // noop + searchLocations.push(bundlePath + ".map"); + + for (const searchLocation of searchLocations) { + try { + await util.promisify(fs.access)(searchLocation); + logger.debug(`Source map found for bundle \`${bundlePath}\`: \`${searchLocation}\``); + return searchLocation; + } catch (e) { + // noop + } } // This is just a debug message because it can be quite spammy for some frameworks logger.debug( - `Could not determine source map path for bundle: ${bundlePath} - Did you turn on source map generation in your bundler?` + `Could not determine source map path for bundle \`${bundlePath}\`` + + ` with sourceMappingURL=${ + sourceMappingUrl === undefined ? "undefined" : `\`${sourceMappingUrl}\`` + }` + + ` - Did you turn on source map generation in your bundler?` + + ` (Attempted paths: ${searchLocations.map((e) => `\`${e}\``).join(", ")})` ); return undefined; } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 9ea123979503..1c088a4de220 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -124,8 +124,28 @@ export interface Options { * * Defaults to making all sources relative to `process.cwd()` while building. */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - rewriteSources?: (source: string, map: any) => string; + rewriteSources?: RewriteSourcesHook; + + /** + * Hook to customize source map file resolution. + * + * The hook is called with the absolute path of the build artifact and the value of the `//# sourceMappingURL=` + * comment, if present. The hook should then return an absolute path (or a promise that resolves to one) indicating + * where to find the artifact's corresponding source map file. If no path is returned or the returned path doesn't + * exist, the standard source map resolution process will be used. + * + * The standard process first tries to resolve based on the `//# sourceMappingURL=` value (it supports `file://` + * urls and absolute/relative paths). If that path doesn't exist, it then looks for a file named + * `${artifactName}.map` in the same directory as the artifact. + * + * Note: This is mostly helpful for complex builds with custom source map generation. For example, if you put source + * maps into a separate directory and rewrite the `//# sourceMappingURL=` comment to something other than a relative + * directory, sentry will be unable to locate the source maps for a given build artifact. This hook allows you to + * implement the resolution process yourself. + * + * Use the `debug` option to print information about source map resolution. + */ + resolveSourceMap?: ResolveSourceMapHook; /** * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. @@ -356,6 +376,14 @@ export interface Options { }; } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type RewriteSourcesHook = (source: string, map: any) => string; + +export type ResolveSourceMapHook = ( + artifactPath: string, + sourceMappingUrl: string | undefined +) => string | undefined | Promise; + export interface ModuleMetadata { // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js new file mode 100644 index 000000000000..ff1a49c7b54a --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js @@ -0,0 +1,2 @@ +"use strict"; +console.log("wow!"); \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map new file mode 100644 index 000000000000..11ab57d0fd93 --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"input.js","sourceRoot":"","sources":["input.tsx"],"names":[],"mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA"} \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js new file mode 100644 index 000000000000..ff1a49c7b54a --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js @@ -0,0 +1,2 @@ +"use strict"; +console.log("wow!"); \ No newline at end of file diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map new file mode 100644 index 000000000000..88e40095300c --- /dev/null +++ b/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"input.js","sourceRoot":"","sources":["input.tsx"],"names":[],"mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA"} 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 new file mode 100644 index 000000000000..b8e5c30971fd --- /dev/null +++ b/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts @@ -0,0 +1,165 @@ +import * as path from "path"; +import * as fs from "fs"; +import * as url from "url"; +import { determineSourceMapPathFromBundle } from "../../src/debug-id-upload"; +import { createLogger } from "../../src/logger"; + +const logger = createLogger({ prefix: "[resolve-source-maps-test]", silent: false, debug: false }); +const fixtureDir = path.resolve(__dirname, "../fixtures/resolve-source-maps"); + +const adjacentBundlePath = path.join(fixtureDir, "adjacent-sourcemap/index.js"); +const adjacentSourceMapPath = path.join(fixtureDir, "adjacent-sourcemap/index.js.map"); +const adjacentBundleContent = fs.readFileSync(adjacentBundlePath, "utf-8"); + +const separateBundlePath = path.join(fixtureDir, "separate-directory/bundles/index.js"); +const separateSourceMapPath = path.join(fixtureDir, "separate-directory/sourcemaps/index.js.map"); +const separateBundleContent = fs.readFileSync(separateBundlePath, "utf-8"); + +const sourceMapUrl = "https://sourcemaps.example.com/foo/index.js.map"; + +function srcMappingUrl(url: string): string { + return `\n//# sourceMappingURL=${url}`; +} + +describe("Resolve source maps", () => { + it("should resolve source maps next to bundles", async () => { + expect( + await determineSourceMapPathFromBundle( + adjacentBundlePath, + adjacentBundleContent, + logger, + undefined + ) + ).toEqual(adjacentSourceMapPath); + }); + + it("shouldn't resolve source maps in separate directories", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent, + logger, + undefined + ) + ).toBeUndefined(); + }); + + describe("sourceMappingURL resolution", () => { + it("should resolve source maps when sourceMappingURL is a file URL", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + srcMappingUrl(url.pathToFileURL(separateSourceMapPath).href), + logger, + undefined + ) + ).toEqual(separateSourceMapPath); + }); + + it("shouldn't resolve source maps when sourceMappingURL is a non-file URL", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + srcMappingUrl(sourceMapUrl), + logger, + undefined + ) + ).toBeUndefined(); + }); + + it("should resolve source maps when sourceMappingURL is an absolute path", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + srcMappingUrl(separateSourceMapPath), + logger, + undefined + ) + ).toEqual(separateSourceMapPath); + }); + + it("should resolve source maps when sourceMappingURL is a relative path", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + + srcMappingUrl(path.relative(path.dirname(separateBundlePath), separateSourceMapPath)), + logger, + undefined + ) + ).toEqual(separateSourceMapPath); + }); + }); + + describe("resolveSourceMap hook", () => { + it("should resolve source maps when a resolveSourceMap hook is provided", async () => { + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + srcMappingUrl(sourceMapUrl), + logger, + () => separateSourceMapPath + ) + ).toEqual(separateSourceMapPath); + }); + + it("should pass the correct values to the resolveSourceMap hook", async () => { + const hook = jest.fn(() => separateSourceMapPath); + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent + srcMappingUrl(sourceMapUrl), + logger, + hook + ) + ).toEqual(separateSourceMapPath); + expect(hook.mock.calls[0]).toEqual([separateBundlePath, sourceMapUrl]); + }); + + it("should pass the correct values to the resolveSourceMap hook when no sourceMappingURL is present", async () => { + const hook = jest.fn(() => separateSourceMapPath); + expect( + await determineSourceMapPathFromBundle( + separateBundlePath, + separateBundleContent, + logger, + hook + ) + ).toEqual(separateSourceMapPath); + expect(hook.mock.calls[0]).toEqual([separateBundlePath, undefined]); + }); + + it("should prefer resolveSourceMap result over heuristic results", async () => { + expect( + await determineSourceMapPathFromBundle( + adjacentBundlePath, + adjacentBundleContent, + logger, + () => separateSourceMapPath + ) + ).toEqual(separateSourceMapPath); + }); + + it("should fall back when the resolveSourceMap hook returns undefined", async () => { + expect( + await determineSourceMapPathFromBundle( + adjacentBundlePath, + adjacentBundleContent, + logger, + () => undefined + ) + ).toEqual(adjacentSourceMapPath); + }); + + it("should fall back when the resolveSourceMap hook returns a non-existent path", async () => { + expect( + await determineSourceMapPathFromBundle( + adjacentBundlePath, + adjacentBundleContent, + logger, + () => path.join(fixtureDir, "non-existent.js.map") + ) + ).toEqual(adjacentSourceMapPath); + }); + }); +}); diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 197673a2dd82..3719d7604a6b 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -96,6 +96,28 @@ errorHandler: (err) => { fullDescription: "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nDefaults to making all sources relative to `process.cwd()` while building.", }, + { + name: "resolveSourceMap", + type: "(artifactPath: string, sourceMappingUrl: string | undefined) => string | undefined | Promise", + fullDescription: `Hook to customize source map file resolution. + +The hook is called with the absolute path of the build artifact and the value of the \`//# sourceMappingURL=\` +comment, if present. The hook should then return an absolute path (or a promise that resolves to one) indicating +where to find the artifact's corresponding source map file. If no path is returned or the returned path doesn't +exist, the standard source map resolution process will be used. + +The standard process first tries to resolve based on the \`//# sourceMappingURL=\` value (it supports \`file://\` +urls and absolute/relative paths). If that path doesn't exist, it then looks for a file named +\`\${artifactName}.map\` in the same directory as the artifact. + +Note: This is mostly helpful for complex builds with custom source map generation. For example, if you put source +maps into a separate directory and rewrite the \`//# sourceMappingURL=\` comment to something other than a relative +directory, sentry will be unable to locate the source maps for a given build artifact. This hook allows you to +implement the resolution process yourself. + +Use the \`debug\` option to print information about source map resolution. +`, + }, { name: "filesToDeleteAfterUpload", type: "string | string[] | Promise", From 3ba65eb7332db1fd3451ca54c38020cd571c9b30 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Wed, 14 May 2025 13:36:36 +0200 Subject: [PATCH 487/640] chore: Add contributor attribution to changelog (#738) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7f6fdc55700..bbe675936c7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +Work in this release was contributed by @thecodewarrior. Thank you for your contribution! + ## 3.4.0 - fix: Replace existing debug ID comments (#730) From 7130a86549f240e5c3b4f884a40775efb4133ce4 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 20 May 2025 16:31:28 +0200 Subject: [PATCH 488/640] fix(core): Avoid console output and telemetry init when plugins are disabled (#741) --- .../src/build-plugin-manager.ts | 91 ++++++++++++++++++- .../src/options-mapping.ts | 84 ++++++++++++++++- .../test/build-plugin-manager.test.ts | 51 +++++++++++ 3 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 packages/bundler-plugin-core/test/build-plugin-manager.test.ts diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 1e7f6f81d456..d8e6a5255e35 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -12,8 +12,8 @@ import * as dotenv from "dotenv"; import * as fs from "fs"; import * as os from "os"; import * as path from "path"; -import { normalizeUserOptions, validateOptions } from "./options-mapping"; -import { createLogger } from "./logger"; +import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; +import { createLogger, Logger } from "./logger"; import { allowedToSendTelemetry, createSentryInstance, @@ -25,7 +25,60 @@ import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; -export type SentryBuildPluginManager = ReturnType; +export type SentryBuildPluginManager = { + /** + * A logger instance that takes the options passed to the build plugin manager into account. (for silencing and log level etc.) + */ + logger: Logger; + + /** + * Options after normalization. Includes things like the inferred release name. + */ + normalizedOptions: NormalizedOptions; + /** + * Magic strings and their replacement values that can be used for bundle size optimizations. This already takes + * into account the options passed to the build plugin manager. + */ + bundleSizeOptimizationReplacementValues: SentrySDKBuildFlags; + /** + * Metadata that should be injected into bundles if possible. Takes into account options passed to the build plugin manager. + */ + // See `generateModuleMetadataInjectorCode` for how this should be used exactly + bundleMetadata: Record; + + /** + * Contains utility functions for emitting telemetry via the build plugin manager. + */ + telemetry: { + /** + * Emits a `Sentry Bundler Plugin execution` signal. + */ + emitBundlerPluginExecutionSignal(): Promise; + }; + + /** + * Will potentially create a release based on the build plugin manager options. + * + * Also + * - finalizes the release + * - sets commits + * - uploads legacy sourcemaps + * - adds deploy information + */ + createRelease(): Promise; + + /** + * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded + */ + uploadSourcemaps(buildArtifactPaths: string[]): Promise; + + /** + * Will delete artifacts based on the passed `sourcemaps.filesToDeleteAfterUpload` option. + */ + deleteArtifacts(): Promise; + + createDependencyOnBuildArtifacts: () => () => void; +}; /** * Creates a build plugin manager that exposes primitives for everything that a Sentry JavaScript SDK or build tooling may do during a build. @@ -44,7 +97,7 @@ export function createSentryBuildPluginManager( */ loggerPrefix: string; } -) { +): SentryBuildPluginManager { const logger = createLogger({ prefix: bundlerPluginMetaContext.loggerPrefix, silent: userOptions.silent ?? false, @@ -73,6 +126,36 @@ export function createSentryBuildPluginManager( const options = normalizeUserOptions(userOptions); + if (options.disable) { + // Early-return a noop build plugin manager instance so that we + // don't continue validating options, setting up Sentry, etc. + // Otherwise we might create side-effects or log messages that + // users don't expect from a disabled plugin. + return { + normalizedOptions: options, + logger, + bundleSizeOptimizationReplacementValues: {}, + telemetry: { + emitBundlerPluginExecutionSignal: async () => { + /* noop */ + }, + }, + bundleMetadata: {}, + createRelease: async () => { + /* noop */ + }, + uploadSourcemaps: async () => { + /* noop */ + }, + deleteArtifacts: async () => { + /* noop */ + }, + createDependencyOnBuildArtifacts: () => () => { + /* noop */ + }, + }; + } + const shouldSendTelemetry = allowedToSendTelemetry(options); const { sentryScope, sentryClient } = createSentryInstance( options, diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 55998ce04eb6..1ab3a532708d 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,12 +1,90 @@ import { Logger } from "./logger"; -import { Options as UserOptions, SetCommitsOptions } from "./types"; +import { + Options as UserOptions, + SetCommitsOptions, + RewriteSourcesHook, + ResolveSourceMapHook, + IncludeEntry, + ModuleMetadata, + ModuleMetadataCallback, +} from "./types"; import { determineReleaseName } from "./utils"; -export type NormalizedOptions = ReturnType; +export type NormalizedOptions = { + org: string | undefined; + project: string | undefined; + authToken: string | undefined; + url: string; + headers: Record | undefined; + debug: boolean; + silent: boolean; + errorHandler: ((err: Error) => void) | undefined; + telemetry: boolean; + disable: boolean; + sourcemaps: + | { + disable?: boolean; + assets?: string | string[]; + ignore?: string | string[]; + rewriteSources?: RewriteSourcesHook; + resolveSourceMap?: ResolveSourceMapHook; + filesToDeleteAfterUpload?: string | string[] | Promise; + } + | undefined; + release: { + name: string | undefined; + inject: boolean; + create: boolean; + finalize: boolean; + vcsRemote: string; + setCommits: + | (SetCommitsOptions & { + shouldNotThrowOnFailure?: boolean; + }) + | false + | undefined; + dist?: string; + deploy?: { + env: string; + started?: number | string; + finished?: number | string; + time?: number; + name?: string; + url?: string; + }; + uploadLegacySourcemaps?: string | IncludeEntry | Array; + }; + bundleSizeOptimizations: + | { + excludeDebugStatements?: boolean; + excludeTracing?: boolean; + excludeReplayCanvas?: boolean; + excludeReplayShadowDom?: boolean; + excludeReplayIframe?: boolean; + excludeReplayWorker?: boolean; + } + | undefined; + reactComponentAnnotation: + | { + enabled?: boolean; + ignoredComponents?: string[]; + } + | undefined; + _metaOptions: { + telemetry: { + metaFramework: string | undefined; + }; + }; + applicationKey: string | undefined; + moduleMetadata: ModuleMetadata | ModuleMetadataCallback | undefined; + _experiments: { + injectBuildInformation?: boolean; + } & Record; +}; export const SENTRY_SAAS_URL = "https://sentry.io"; -export function normalizeUserOptions(userOptions: UserOptions) { +export function normalizeUserOptions(userOptions: UserOptions): NormalizedOptions { const options = { org: userOptions.org ?? process.env["SENTRY_ORG"], project: userOptions.project ?? process.env["SENTRY_PROJECT"], diff --git a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts new file mode 100644 index 000000000000..c0078fa6b29c --- /dev/null +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -0,0 +1,51 @@ +import { createSentryBuildPluginManager } from "../src/build-plugin-manager"; + +describe("createSentryBuildPluginManager", () => { + describe("when disabled", () => { + it("initializes a no-op build plugin manager", () => { + const buildPluginManager = createSentryBuildPluginManager( + { + disable: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(buildPluginManager).toBeDefined(); + expect(buildPluginManager.logger).toBeDefined(); + expect(buildPluginManager.normalizedOptions.disable).toBe(true); + }); + + 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"); + + createSentryBuildPluginManager( + { + disable: true, + release: { + deploy: { + // An empty string triggers a validation error (but satisfies the type checker) + env: "", + }, + }, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(logSpy).not.toHaveBeenCalled(); + expect(infoSpy).not.toHaveBeenCalled(); + expect(debugSpy).not.toHaveBeenCalled(); + expect(warnSpy).not.toHaveBeenCalled(); + expect(errorSpy).not.toHaveBeenCalled(); + }); + }); +}); From 4dccccaa98b92ae0af76d1abfba46912dce0d648 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 09:54:12 +0200 Subject: [PATCH 489/640] chore(deps-dev): bump rollup from 2.75.7 to 2.79.2 in /packages/webpack-plugin (#736) chore(deps-dev): bump rollup in /packages/webpack-plugin Bumps [rollup](https://github.com/rollup/rollup) from 2.75.7 to 2.79.2. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.75.7...v2.79.2) --- updated-dependencies: - dependency-name: rollup dependency-version: 2.79.2 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/webpack-plugin/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 36d402b84522..72df516f7651 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -74,7 +74,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "rimraf": "^3.0.2", - "rollup": "2.75.7", + "rollup": "2.79.2", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "npm:webpack@^4" From bab95d92e97049b9436c8ddf39b8e77034f56d13 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 21 May 2025 10:17:15 +0200 Subject: [PATCH 490/640] meta: Add Changelog entry for 3.5.0 (#743) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbe675936c7c..67ef2eb96902 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ Work in this release was contributed by @thecodewarrior. Thank you for your contribution! +## 3.5.0 + +- feat(core): Add hook to customize source map file resolution ([#732](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/732)) +- fix(core): Avoid console output and telemetry init when plugins are disabled ([#741](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/741)) + +Work in this release was contributed by @thecodewarrior. Thank you for your contribution! + ## 3.4.0 - fix: Replace existing debug ID comments (#730) From 20e59da8b237b8f43fc2cde8488ec492015bf178 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 21 May 2025 08:18:27 +0000 Subject: [PATCH 491/640] release: 3.5.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index a489cd6acfb4..c5c3d68895ad 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.4.0", + "version": "3.5.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index b9a2551b095e..dac0cd82ba6e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.4.0", + "version": "3.5.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bc317c2b89da..726489a1a30c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.4.0", + "version": "3.5.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.4.0", + "@sentry/babel-plugin-component-annotate": "3.5.0", "@sentry/cli": "2.42.2", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index e4572033d528..34f05fd6f23f 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 13a8cfab2c5b..f4b1fb8caf78 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.4.0", - "@sentry/rollup-plugin": "3.4.0", - "@sentry/vite-plugin": "3.4.0", - "@sentry/webpack-plugin": "3.4.0", + "@sentry/esbuild-plugin": "3.5.0", + "@sentry/rollup-plugin": "3.5.0", + "@sentry/vite-plugin": "3.5.0", + "@sentry/webpack-plugin": "3.5.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index e76f7720243e..39d4f4ba5ebd 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.4.0", + "version": "3.5.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "3.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 4371093a85ee..72c21e59333c 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 56b665676248..54c0cce73d37 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", - "@sentry/bundler-plugin-core": "3.4.0", - "@sentry/esbuild-plugin": "3.4.0", - "@sentry/rollup-plugin": "3.4.0", - "@sentry/vite-plugin": "3.4.0", - "@sentry/webpack-plugin": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/esbuild-plugin": "3.5.0", + "@sentry/rollup-plugin": "3.5.0", + "@sentry/vite-plugin": "3.5.0", + "@sentry/webpack-plugin": "3.5.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 163733d8c185..9a968b1a1c19 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "3.5.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d89053bffc6c..981138549cb7 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.4.0", + "version": "3.5.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "3.5.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index c322eb826545..13efcd806a93 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.4.0", + "version": "3.5.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 69ff8fc5f4ea..df44042441f7 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.4.0", + "version": "3.5.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "3.5.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 72df516f7651..0cf0651765b0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.4.0", + "version": "3.5.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "3.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.4.0", + "@sentry-internal/eslint-config": "3.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From ea04da5b6b423bf0914b7ec08d48a355420d1aea Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 21 May 2025 12:48:46 +0200 Subject: [PATCH 492/640] chore: Add changelog generation script (#744) * chore: Add changelog generation script * actually add the sript lol --- package.json | 4 +++- scripts/get-commit-list.ts | 36 ++++++++++++++++++++++++++++++++++++ yarn.lock | 26 ++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 scripts/get-commit-list.ts diff --git a/package.json b/package.json index 1abce4f100cf..e0f39918563e 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "build:watch": "nx run-many --target=build:watch --all", "build:graph": "nx graph", "build:npm": "nx run-many --target=build:npm --all", + "changelog": "ts-node ./scripts/get-commit-list.ts", "check:types": "nx run-many --target=check:types --all", "clean": "nx run-many --target=clean --all", "clean:all": "nx run-many --target=clean:all --all && yarn", @@ -32,7 +33,8 @@ "nx": "14.5.10", "prettier": "^2.7.1", "pretty-quick": "^3.1.3", - "npm-run-all": "^4.1.5" + "npm-run-all": "^4.1.5", + "ts-node": "^10.9.2" }, "volta": { "node": "14.21.2", diff --git a/scripts/get-commit-list.ts b/scripts/get-commit-list.ts new file mode 100644 index 000000000000..502ff2eabf25 --- /dev/null +++ b/scripts/get-commit-list.ts @@ -0,0 +1,36 @@ +import { execSync } from "child_process"; + +function run(): void { + const commits = execSync('git log --format="- %s"').toString().split("\n"); + + const lastReleasePos = commits.findIndex((commit) => /- meta(.*)changelog/i.test(commit)); + + const newCommits = commits.splice(0, lastReleasePos).filter((commit) => { + // Filter out merge commits + if (/Merge pull request/.test(commit)) { + return false; + } + // Filter release branch merged + if (/Merge branch/.test(commit)) { + return false; + } + // Filter release commit itself + if (/release:/.test(commit)) { + return false; + } + + return true; + }); + + newCommits.sort((a, b) => a.localeCompare(b)); + + const issueUrl = "https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/"; + const newCommitsWithLink = newCommits.map((commit) => + commit.replace(/#(\d+)/, `[#$1](${issueUrl}$1)`) + ); + + // eslint-disable-next-line no-console + console.log(newCommitsWithLink.join("\n")); +} + +run(); diff --git a/yarn.lock b/yarn.lock index 7ad0c552fee7..74fc835d59ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11500,6 +11500,13 @@ rollup@2.77.0: optionalDependencies: fsevents "~2.3.2" +rollup@2.79.2: + version "2.79.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== + optionalDependencies: + fsevents "~2.3.2" + rollup@3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/rollup/-/rollup-3.2.0.tgz#a6f44074418e55217967c8eca622f9638d396388" @@ -12517,6 +12524,25 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tsconfig-paths@^3.9.0: version "3.14.2" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" From c6b18cdbdc9e1b19a1efc6f936796308ea600b05 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 21 May 2025 12:49:08 +0200 Subject: [PATCH 493/640] ref: Enable `explicit-function-return-type` eslint rule (#742) * ref: Enable `explicit-function-return-type` eslint rule * better solution for rollup-vite type conflicts * cleanup --- .../src/index.ts | 10 +-- .../src/build-plugin-manager.ts | 12 +-- .../src/debug-id-upload.ts | 2 +- packages/bundler-plugin-core/src/index.ts | 73 ++++++++++++------- .../src/sentry/telemetry.ts | 4 +- .../src/sentry/transports.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 12 ++- .../bundler-plugin-core/test/utils.test.ts | 2 +- packages/e2e-tests/.eslintrc.js | 1 + packages/eslint-configs/base.js | 4 + packages/integration-tests/.eslintrc.js | 3 + 11 files changed, 78 insertions(+), 47 deletions(-) diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index b1f0af1fba16..19f0a5199da9 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -152,7 +152,7 @@ function functionBodyPushAttributes( sourceFileName: string | undefined, attributeNames: string[], ignoredComponents: string[] -) { +): void { let jsxNode: Babel.NodePath; const functionBody = path.get("body").get("body"); @@ -248,7 +248,7 @@ function processJSX( sourceFileName: string | undefined, attributeNames: string[], ignoredComponents: string[] -) { +): void { if (!jsxNode) { return; } @@ -323,7 +323,7 @@ function applyAttributes( sourceFileName: string | undefined, attributeNames: string[], ignoredComponents: string[] -) { +): void { const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; if (isReactFragment(t, openingElement)) { @@ -390,7 +390,7 @@ function applyAttributes( } } -function sourceFileNameFromState(state: AnnotationPluginPass) { +function sourceFileNameFromState(state: AnnotationPluginPass): string | undefined { const name = fullSourceFileNameFromState(state); if (!name) { return undefined; @@ -416,7 +416,7 @@ function fullSourceFileNameFromState(state: AnnotationPluginPass): string | null return null; } -function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass) { +function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass): boolean { const fullSourceFileName = fullSourceFileNameFromState(state); if (!fullSourceFileName) { diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index d8e6a5255e35..1eda94c24783 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -172,7 +172,7 @@ export function createSentryBuildPluginManager( let sessionHasEnded = false; // Just to prevent infinite loops with beforeExit, which is called whenever the event loop empties out - function endSession() { + function endSession(): void { if (sessionHasEnded) { return; } @@ -206,7 +206,7 @@ export function createSentryBuildPluginManager( * or continue up to them. By default, @param throwByDefault controls if the plugin * should throw an error (which causes a build fail in most bundlers) or continue. */ - function handleRecoverableError(unknownError: unknown, throwByDefault: boolean) { + function handleRecoverableError(unknownError: unknown, throwByDefault: boolean): void { sentrySession.status = "abnormal"; try { if (options.errorHandler) { @@ -251,13 +251,13 @@ export function createSentryBuildPluginManager( const dependenciesOnBuildArtifacts = new Set(); const buildArtifactsDependencySubscribers: (() => void)[] = []; - function notifyBuildArtifactDependencySubscribers() { + function notifyBuildArtifactDependencySubscribers(): void { buildArtifactsDependencySubscribers.forEach((subscriber) => { subscriber(); }); } - function createDependencyOnBuildArtifacts() { + function createDependencyOnBuildArtifacts(): () => void { const dependencyIdentifier = Symbol(); dependenciesOnBuildArtifacts.add(dependencyIdentifier); @@ -273,7 +273,7 @@ export function createSentryBuildPluginManager( * It is very important that this function is called as late as possible before wanting to await the Promise to give * the dependency producers as much time as possible to register themselves. */ - function waitUntilBuildArtifactDependenciesAreFreed() { + function waitUntilBuildArtifactDependenciesAreFreed(): Promise { return new Promise((resolve) => { buildArtifactsDependencySubscribers.push(() => { if (dependenciesOnBuildArtifacts.size === 0) { @@ -607,7 +607,7 @@ export function createSentryBuildPluginManager( } ); const workers: Promise[] = []; - const worker = async () => { + const worker = async (): Promise => { while (preparationTasks.length > 0) { const task = preparationTasks.shift(); if (task) { diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 3f5e47e5db57..2bca52c207ce 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -26,7 +26,7 @@ export async function prepareBundleForDebugIdUpload( logger: Logger, rewriteSourcesHook: RewriteSourcesHook, resolveSourceMapHook: ResolveSourceMapHook | undefined -) { +): Promise { let bundleContent; try { bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index fca7a44d4f9b..d487483bf80f 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -4,9 +4,9 @@ import SentryCli from "@sentry/cli"; import { logger } from "@sentry/utils"; import * as fs from "fs"; import { glob } from "glob"; -import MagicString from "magic-string"; +import MagicString, { SourceMap } from "magic-string"; import * as path from "path"; -import { createUnplugin, TransformResult, UnpluginOptions } from "unplugin"; +import { createUnplugin, TransformResult, UnpluginInstance, UnpluginOptions } from "unplugin"; import { createSentryBuildPluginManager } from "./build-plugin-manager"; import { createDebugIdUploadFunction } from "./debug-id-upload"; import { Logger } from "./logger"; @@ -14,9 +14,7 @@ import { Options, SentrySDKBuildFlags } from "./types"; import { generateGlobalInjectorCode, generateModuleMetadataInjectorCode, - getDependencies, - getPackageJson, - parseMajorVersion, + getBuildInformation as actualGetBuildInformation, replaceBooleanFlagsInCode, stringToUUID, stripQueryAndHashFromPath, @@ -46,7 +44,7 @@ export function sentryUnpluginFactory({ debugIdInjectionPlugin, debugIdUploadPlugin, bundleSizeOptimizationsPlugin, -}: SentryUnpluginFactoryOptions) { +}: SentryUnpluginFactoryOptions): UnpluginInstance { return createUnplugin((userOptions = {}, unpluginMetaContext) => { const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { loggerPrefix: @@ -177,22 +175,11 @@ export function sentryUnpluginFactory({ } /** - * @deprecated + * @deprecated This will be removed in v4 */ -// TODO(v4): Don't export this from the package -export function getBuildInformation() { - const packageJson = getPackageJson(); - - const { deps, depsVersions } = packageJson - ? getDependencies(packageJson) - : { deps: [], depsVersions: {} }; - - return { - deps, - depsVersions, - nodeVersion: parseMajorVersion(process.version), - }; -} +// TODO(v4): Don't export this from the package but keep the utils version +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export const getBuildInformation = actualGetBuildInformation; /** * Determines whether the Sentry CLI binary is in its expected location. @@ -203,7 +190,11 @@ export function sentryCliBinaryExists(): boolean { return fs.existsSync(SentryCli.getPath()); } -export function createRollupReleaseInjectionHooks(injectionCode: string) { +export function createRollupReleaseInjectionHooks(injectionCode: string): { + resolveId: UnpluginOptions["resolveId"]; + load: UnpluginOptions["load"]; + transform: UnpluginOptions["transform"]; +} { const virtualReleaseInjectionFileId = "\0sentry-release-injection-file"; return { resolveId(id: string) { @@ -260,7 +251,9 @@ export function createRollupReleaseInjectionHooks(injectionCode: string) { }; } -export function createRollupBundleSizeOptimizationHooks(replacementValues: SentrySDKBuildFlags) { +export function createRollupBundleSizeOptimizationHooks(replacementValues: SentrySDKBuildFlags): { + transform: UnpluginOptions["transform"]; +} { return { transform(code: string) { return replaceBooleanFlagsInCode(code, replacementValues); @@ -274,7 +267,24 @@ const COMMENT_USE_STRICT_REGEX = // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; -export function createRollupDebugIdInjectionHooks() { +/** + * Simplified `renderChunk` hook type from Rollup. + * We can't reference the type directly because the Vite plugin complains + * about type mismatches + */ +type RenderChunkHook = ( + code: string, + chunk: { + fileName: string; + } +) => { + code: string; + map: SourceMap; +} | null; + +export function createRollupDebugIdInjectionHooks(): { + renderChunk: RenderChunkHook; +} { return { renderChunk(code: string, chunk: { fileName: string }) { if ( @@ -311,7 +321,9 @@ export function createRollupDebugIdInjectionHooks() { }; } -export function createRollupModuleMetadataInjectionHooks(injectionCode: string) { +export function createRollupModuleMetadataInjectionHooks(injectionCode: string): { + renderChunk: RenderChunkHook; +} { return { renderChunk(code: string, chunk: { fileName: string }) { if ( @@ -349,7 +361,12 @@ export function createRollupDebugIdUploadHooks( upload: (buildArtifacts: string[]) => Promise, _logger: Logger, createDependencyOnBuildArtifacts: () => () => void -) { +): { + writeBundle: ( + outputOptions: { dir?: string; file?: string }, + bundle: { [fileName: string]: unknown } + ) => Promise; +} { const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); return { async writeBundle( @@ -390,7 +407,9 @@ export function createRollupDebugIdUploadHooks( }; } -export function createComponentNameAnnotateHooks(ignoredComponents?: string[]) { +export function createComponentNameAnnotateHooks(ignoredComponents?: string[]): { + transform: UnpluginOptions["transform"]; +} { type ParserPlugins = NonNullable< NonNullable[1]>["parserOpts"] >["plugins"]; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 3c183ad831b0..48c93fb7b811 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -64,7 +64,7 @@ export function setTelemetryDataOnScope( options: NormalizedOptions, scope: Scope, buildTool: string -) { +): void { const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; scope.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); @@ -161,7 +161,7 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis /** * Flushing the SDK client can fail. We never want to crash the plugin because of telemetry. */ -export async function safeFlushTelemetry(sentryClient: Client) { +export async function safeFlushTelemetry(sentryClient: Client): Promise { try { await sentryClient.flush(2000); } catch { diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugin-core/src/sentry/transports.ts index d85923bc1d7f..49169d817271 100644 --- a/packages/bundler-plugin-core/src/sentry/transports.ts +++ b/packages/bundler-plugin-core/src/sentry/transports.ts @@ -93,7 +93,7 @@ function createRequestExecutor(options: BaseTransportOptions): TransportRequestE /** * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry. */ -function makeNodeTransport(options: BaseTransportOptions) { +function makeNodeTransport(options: BaseTransportOptions): Transport { const requestExecutor = createRequestExecutor(options); return createTransport(options, requestExecutor); } diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 8293315c3e56..1df4226f036d 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -311,7 +311,7 @@ export function generateGlobalInjectorCode({ }: { release: string; injectBuildInformation: boolean; -}) { +}): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) let code = `{ @@ -341,7 +341,7 @@ export function generateGlobalInjectorCode({ } // eslint-disable-next-line @typescript-eslint/no-explicit-any -export function generateModuleMetadataInjectorCode(metadata: any) { +export function generateModuleMetadataInjectorCode(metadata: any): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin @@ -369,7 +369,11 @@ export function generateModuleMetadataInjectorCode(metadata: any) { }`; } -function getBuildInformation() { +export function getBuildInformation(): { + deps: string[]; + depsVersions: Record; + nodeVersion: number | undefined; +} { const packageJson = getPackageJson(); const { deps, depsVersions } = packageJson @@ -413,7 +417,7 @@ export function replaceBooleanFlagsInCode( } // https://turbo.build/repo/docs/reference/system-environment-variables#environment-variables-in-tasks -export function getTurborepoEnvPassthroughWarning(envVarName: string) { +export function getTurborepoEnvPassthroughWarning(envVarName: string): string { return process.env["TURBO_HASH"] ? `\nYou seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` : ""; diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 1ace6e6829dc..0adf19710eb6 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -10,7 +10,7 @@ import path from "node:path"; type PackageJson = Record; -function getCwdFor(dirName: string) { +function getCwdFor(dirName: string): string { return path.resolve(__dirname + dirName); } diff --git a/packages/e2e-tests/.eslintrc.js b/packages/e2e-tests/.eslintrc.js index 2140ab1856eb..0b67f986effc 100644 --- a/packages/e2e-tests/.eslintrc.js +++ b/packages/e2e-tests/.eslintrc.js @@ -25,5 +25,6 @@ module.exports = { }, rules: { "no-console": "off", + "@typescript-eslint/explicit-function-return-type": "off", }, }; diff --git a/packages/eslint-configs/base.js b/packages/eslint-configs/base.js index f53dbcf03858..dff271925075 100644 --- a/packages/eslint-configs/base.js +++ b/packages/eslint-configs/base.js @@ -15,5 +15,9 @@ module.exports = { { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }, ], "no-undef": "error", // https://github.com/typescript-eslint/typescript-eslint/issues/4580#issuecomment-1047144015 + // Although for most codebases inferencing the return type is fine, we explicitly ask to annotate + // all functions with a return type. This is so that intent is as clear as possible as well as to + // avoid accidental breaking changes. + "@typescript-eslint/explicit-function-return-type": ["error", { allowExpressions: true }], }, }; diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js index 4feaa40917f2..9213808a6bc8 100644 --- a/packages/integration-tests/.eslintrc.js +++ b/packages/integration-tests/.eslintrc.js @@ -22,4 +22,7 @@ module.exports = { version: jestPackageJson.version, }, }, + rules: { + "@typescript-eslint/explicit-function-return-type": "off", + }, }; From 26a48400092e5e550ccb59f728065500a5389592 Mon Sep 17 00:00:00 2001 From: Francesco Gringl-Novy Date: Tue, 1 Jul 2025 15:16:35 +0200 Subject: [PATCH 494/640] deps: Bump `@sentry/cli` to `^2.46.0` (#751) Also make it use `^` so we also get future updates as well. --- packages/bundler-plugin-core/package.json | 4 +- .../errorhandling/error-no-handler.test.ts | 7 +- yarn.lock | 98 ++++++++++--------- 3 files changed, 60 insertions(+), 49 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 726489a1a30c..53980c2763d9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -53,8 +53,8 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.5.0", - "@sentry/cli": "2.42.2", + "@sentry/babel-plugin-component-annotate": "^3.5.0", + "@sentry/cli": "^2.46.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", 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 fd93a8cb5bbc..7aaaa82b4c46 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -37,7 +37,12 @@ describe("Error throwing by default (no errorHandler)", () => { "doesn't throw when Sentry server responds with error code for %s", async (bundler) => { const buildProcess = spawn("yarn", ["ts-node", path.join(__dirname, `build-${bundler}.ts`)], { - env: { ...process.env, FAKE_SENTRY_PORT }, + env: { + ...process.env, + FAKE_SENTRY_PORT, + // only retry once to avoid the test from timing out due to retries + SENTRY_HTTP_MAX_RETRIES: "1", + }, stdio: "ignore", // <-- set to "inherit" to get build output. Deactivated to avoid spamming test logs. shell: true, }); diff --git a/yarn.lock b/yarn.lock index 74fc835d59ef..53bc23394d5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,45 +2726,50 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz#a32a4f226e717122b37d9969e8d4d0e14779f720" - integrity sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg== - -"@sentry/cli-linux-arm64@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz#1c06c83ff21f51ec23acf5be3b1f8c7553bf86b1" - integrity sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw== - -"@sentry/cli-linux-arm@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz#00cadc359ae3c051efb3e63873c033c61dbd1ca1" - integrity sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg== - -"@sentry/cli-linux-i686@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz#3b817b715dd806c20dfbffd539725ad8089c310a" - integrity sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ== - -"@sentry/cli-linux-x64@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz#ddf906bc3071cc79ce6e633eddcb76bb9068e688" - integrity sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw== - -"@sentry/cli-win32-i686@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz#9036085c7c6ce455ad45fda411c55ff39c06eb95" - integrity sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw== - -"@sentry/cli-win32-x64@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz#7d6464b63f32c9f97fff428f246b1f039b402233" - integrity sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw== - -"@sentry/cli@2.42.2": - version "2.42.2" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.42.2.tgz#8173df4d057d600a9ef0cf1e9b42b0c6607b46e4" - integrity sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg== +"@sentry/cli-darwin@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.46.0.tgz#e07ff66f03e8cb6e1988b7673ae5dbd6ff957b1d" + integrity sha512-5Ll+e5KAdIk9OYiZO8aifMBRNWmNyPjSqdjaHlBC1Qfh7pE3b1zyzoHlsUazG0bv0sNrSGea8e7kF5wIO1hvyg== + +"@sentry/cli-linux-arm64@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.46.0.tgz#d5b27e5813e7b3add65c9e3dbdd75a8bea4ef324" + integrity sha512-OEJN8yAjI9y5B4telyqzu27Hi3+S4T8VxZCqJz1+z2Mp0Q/MZ622AahVPpcrVq/5bxrnlZR16+lKh8L1QwNFPg== + +"@sentry/cli-linux-arm@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.46.0.tgz#d2a0f21cd208ef8e844bc5e565b337640d125441" + integrity sha512-WRrLNq/TEX/TNJkGqq6Ad0tGyapd5dwlxtsPbVBrIdryuL1mA7VCBoaHBr3kcwJLsgBHFH0lmkMee2ubNZZdkg== + +"@sentry/cli-linux-i686@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.46.0.tgz#73368ebe30236c8647caec420f717a7f45410f29" + integrity sha512-xko3/BVa4LX8EmRxVOCipV+PwfcK5Xs8lP6lgF+7NeuAHMNL4DqF6iV9rrN8gkGUHCUI9RXSve37uuZnFy55+Q== + +"@sentry/cli-linux-x64@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.46.0.tgz#49da3dfd873e0e72abef968e1c213b9397e5d70e" + integrity sha512-hJ1g5UEboYcOuRia96LxjJ0jhnmk8EWLDvlGnXLnYHkwy3ree/L7sNgdp/QsY8Z4j2PGO5f22Va+UDhSjhzlfQ== + +"@sentry/cli-win32-arm64@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.46.0.tgz#4e26b254d5283eb114ac916ac504283a30b2ecdb" + integrity sha512-mN7cpPoCv2VExFRGHt+IoK11yx4pM4ADZQGEso5BAUZ5duViXB2WrAXCLd8DrwMnP0OE978a7N8OtzsFqjkbNA== + +"@sentry/cli-win32-i686@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.46.0.tgz#72f7c0a611f17b7e5b34e2b47309d165195a8276" + integrity sha512-6F73AUE3lm71BISUO19OmlnkFD5WVe4/wA1YivtLZTc1RU3eUYJLYxhDfaH3P77+ycDppQ2yCgemLRaA4A8mNQ== + +"@sentry/cli-win32-x64@2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.46.0.tgz#8cfd438ec365b0ee925d9724a24b533b4cb75587" + integrity sha512-yuGVcfepnNL84LGA0GjHzdMIcOzMe0bjPhq/rwPsPN+zu11N+nPR2wV2Bum4U0eQdqYH3iAlMdL5/BEQfuLJww== + +"@sentry/cli@^2.46.0": + version "2.46.0" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.46.0.tgz#790864874ea04f804053aa85dc94501b2cc321bb" + integrity sha512-nqoPl7UCr446QFkylrsRrUXF51x8Z9dGquyf4jaQU+OzbOJMqclnYEvU6iwbwvaw3tu/2DnoZE/Og+Nq1h63sA== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2772,13 +2777,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.42.2" - "@sentry/cli-linux-arm" "2.42.2" - "@sentry/cli-linux-arm64" "2.42.2" - "@sentry/cli-linux-i686" "2.42.2" - "@sentry/cli-linux-x64" "2.42.2" - "@sentry/cli-win32-i686" "2.42.2" - "@sentry/cli-win32-x64" "2.42.2" + "@sentry/cli-darwin" "2.46.0" + "@sentry/cli-linux-arm" "2.46.0" + "@sentry/cli-linux-arm64" "2.46.0" + "@sentry/cli-linux-i686" "2.46.0" + "@sentry/cli-linux-x64" "2.46.0" + "@sentry/cli-win32-arm64" "2.46.0" + "@sentry/cli-win32-i686" "2.46.0" + "@sentry/cli-win32-x64" "2.46.0" "@sentry/core@7.50.0": version "7.50.0" From fc1f540e6148c1dc55d6eaef7ab41516009f172c Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 7 Jul 2025 18:14:41 +0200 Subject: [PATCH 495/640] feat(core): Don't add `debugIdUploadPlugin` when sourcemaps option is disabled (#753) --- packages/bundler-plugin-core/src/index.ts | 34 +++++++++---------- .../disabled-sourcemaps-upload.test.ts | 26 ++++++++++++++ .../input/bundle.js | 2 ++ 3 files changed, 45 insertions(+), 17 deletions(-) create mode 100644 packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts create mode 100644 packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d487483bf80f..25ed91e2cf50 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -126,24 +126,24 @@ export function sentryUnpluginFactory({ if (!options.sourcemaps?.disable) { plugins.push(debugIdInjectionPlugin(logger)); - } - // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins - const webpack_forceExitOnBuildComplete = - typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" - ? options._experiments["forceExitOnBuildCompletion"] - : undefined; - - plugins.push( - debugIdUploadPlugin( - createDebugIdUploadFunction({ - sentryBuildPluginManager, - }), - logger, - sentryBuildPluginManager.createDependencyOnBuildArtifacts, - webpack_forceExitOnBuildComplete - ) - ); + // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins + const webpack_forceExitOnBuildComplete = + typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" + ? options._experiments["forceExitOnBuildCompletion"] + : undefined; + + plugins.push( + debugIdUploadPlugin( + createDebugIdUploadFunction({ + sentryBuildPluginManager, + }), + logger, + sentryBuildPluginManager.createDependencyOnBuildArtifacts, + webpack_forceExitOnBuildComplete + ) + ); + } if (options.reactComponentAnnotation) { if (!options.reactComponentAnnotation.enabled) { diff --git a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts new file mode 100644 index 000000000000..dd22ef3183fc --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts @@ -0,0 +1,26 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; + +const debugIdUploadPluginName = "sentry-rollup-debug-id-upload-plugin"; + +test("should not call upload plugin when sourcemaps are disabled", () => { + const plugins = sentryRollupPlugin({ + telemetry: false, + sourcemaps: { + disable: true, + }, + }) as Array<{ name: string }>; + + const debugIdUploadPlugin = plugins.find((plugin) => plugin.name === debugIdUploadPluginName); + + expect(debugIdUploadPlugin).toBeUndefined(); +}); + +test("should call upload plugin when sourcemaps are enabled", () => { + const plugins = sentryRollupPlugin({ + telemetry: false, + }) as Array<{ name: string }>; + + const debugIdUploadPlugin = plugins.find((plugin) => plugin.name === debugIdUploadPluginName); + + expect(debugIdUploadPlugin).toBeDefined(); +}); diff --git a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js new file mode 100644 index 000000000000..85b0fd2bf286 --- /dev/null +++ b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("Beep!"); From 33a18f9d94afe4e3fbbd08822d30782039b5a60f Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 15 Jul 2025 12:47:45 +0200 Subject: [PATCH 496/640] fix(core): Avoid showing success message if upload was disabled or nothing was uploaded (#757) --- .../src/build-plugin-manager.ts | 71 +++++++++++++------ .../input/rollup4/rollup.config.js | 9 ++- .../input/vite6/vite.config.js | 9 ++- .../input/webpack5/webpack.config.js | 9 ++- 4 files changed, 72 insertions(+), 26 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 1eda94c24783..c692a19fb502 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -503,27 +503,8 @@ export function createSentryBuildPluginManager( * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded */ async uploadSourcemaps(buildArtifactPaths: string[]) { - if (options.sourcemaps?.disable) { - logger.debug( - "Source map upload was disabled. Will not upload sourcemaps using debug ID process." - ); - } else if (isDevMode) { - logger.debug("Running in development mode. Will not upload sourcemaps."); - } else if (!options.authToken) { - logger.warn( - "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") - ); - } else if (!options.org && !options.authToken.startsWith("sntrys_")) { - logger.warn( - "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + - getTurborepoEnvPassthroughWarning("SENTRY_ORG") - ); - } else if (!options.project) { - logger.warn( - "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + - getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") - ); + if (!canUploadSourceMaps(options, logger, isDevMode)) { + return; } await startSpan( @@ -589,7 +570,7 @@ export function createSentryBuildPluginManager( "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." ); } else { - await startSpan( + const numUploadedFiles = await startSpan( { name: "prepare-bundles", scope: sentryScope }, async (prepBundlesSpan) => { // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so @@ -664,10 +645,14 @@ export function createSentryBuildPluginManager( } ); }); + + return files.length; } ); - logger.info("Successfully uploaded source maps to Sentry"); + if (numUploadedFiles > 0) { + logger.info("Successfully uploaded source maps to Sentry"); + } } } catch (e) { sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); @@ -732,3 +717,43 @@ export function createSentryBuildPluginManager( createDependencyOnBuildArtifacts, }; } + +function canUploadSourceMaps( + options: NormalizedOptions, + logger: Logger, + isDevMode: boolean +): boolean { + if (options.sourcemaps?.disable) { + logger.debug( + "Source map upload was disabled. Will not upload sourcemaps using debug ID process." + ); + return false; + } + if (isDevMode) { + logger.debug("Running in development mode. Will not upload sourcemaps."); + return false; + } + if (!options.authToken) { + logger.warn( + "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + + getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + ); + return false; + } + if (!options.org && !options.authToken.startsWith("sntrys_")) { + logger.warn( + "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + + getTurborepoEnvPassthroughWarning("SENTRY_ORG") + ); + return false; + } + if (!options.project) { + logger.warn( + "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") + ); + return false; + } + + return true; +} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js index e54532460106..2a43368b551e 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js @@ -11,5 +11,12 @@ export default defineConfig({ sourcemap: true, sourcemapDebugIds: true, }, - plugins: [sentryRollupPlugin({ telemetry: false })], + plugins: [ + sentryRollupPlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], }); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js index 39e04917a352..0d763cdb4ac6 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js @@ -17,5 +17,12 @@ export default defineConfig({ }, }, }, - plugins: [sentryVitePlugin({ telemetry: false })], + plugins: [ + sentryVitePlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], }); 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/webpack5/webpack.config.js index 5ef9279897e2..fa294910524f 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/webpack5/webpack.config.js @@ -14,5 +14,12 @@ export default { }, }, mode: "production", - plugins: [sentryWebpackPlugin({ telemetry: false })], + plugins: [ + sentryWebpackPlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], }; From 39c26949162e9026bbfab6d9e32ed616abcfa0ea Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 15 Jul 2025 14:15:05 +0200 Subject: [PATCH 497/640] meta: Update changelog for 3.6.0 (#760) --- .gitignore | 4 +++- CHANGELOG.md | 5 ++++- CONTRIBUTING.md | 6 +++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index cd23e592c032..1bd2042962ab 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ yarn-error.log *.tgz .nxcache -packages/**/yarn.lock \ No newline at end of file +packages/**/yarn.lock + +.DS_Store \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 67ef2eb96902..a5fa3c522fed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott -Work in this release was contributed by @thecodewarrior. Thank you for your contribution! +## 3.6.0 + +- feat(core): Don't add `debugIdUploadPlugin` when sourcemaps option is disabled ([#753](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/753)) +- fix(core): Avoid showing success message if upload was disabled or nothing was uploaded ([#757](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/757)) ## 3.5.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6f6d82e80d4e..b3935d9d2f71 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,10 +81,10 @@ _These steps are only relevant to Sentry employees when preparing and publishing ### Updating the Changelog 1. Create a new branch. -2. Run `git log --format="- %s"` and copy everything since the last release. +2. Run `yarn changelog` and copy all commits in the list. 3. Create a new section in the changelog, deciding based on the changes whether it should be a minor bump or a patch release. -4. Paste in the logs you copied earlier. +4. Paste in the commits you copied earlier. 5. Delete any which aren't user-facing changes. 6. Alphabetize the rest. 7. If any of the PRs are from external contributors, include underneath the commits `Work in this release contributed by . Thank you for your contributions!`. If there's only one external PR, don't forget to remove the final `s`. If there are three or more, use an Oxford comma. (It's in the Sentry styleguide!) -8. Commit, push, and open a PR with the title `meta: Update changelog for `. +8. Commit, push, and open a PR against `main` with the title `meta: Update changelog for `. From a07caaee6d52214f04e9520c4e2807f4395bb1e8 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 15 Jul 2025 12:26:40 +0000 Subject: [PATCH 498/640] release: 3.6.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index c5c3d68895ad..3a0da81c6a84 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.5.0", + "version": "3.6.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index dac0cd82ba6e..f2475391972b 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.5.0", + "version": "3.6.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 53980c2763d9..79f48fdc9e19 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.5.0", + "version": "3.6.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "^3.5.0", + "@sentry/babel-plugin-component-annotate": "3.6.0", "@sentry/cli": "^2.46.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 34f05fd6f23f..216153a83c07 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index f4b1fb8caf78..c0b7dd26168b 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.5.0", - "@sentry/rollup-plugin": "3.5.0", - "@sentry/vite-plugin": "3.5.0", - "@sentry/webpack-plugin": "3.5.0", + "@sentry/esbuild-plugin": "3.6.0", + "@sentry/rollup-plugin": "3.6.0", + "@sentry/vite-plugin": "3.6.0", + "@sentry/webpack-plugin": "3.6.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 39d4f4ba5ebd..66c14dda4c65 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.5.0", + "version": "3.6.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/bundler-plugin-core": "3.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 72c21e59333c..10b480f09b5a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 54c0cce73d37..e0128618d61d 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", - "@sentry/bundler-plugin-core": "3.5.0", - "@sentry/esbuild-plugin": "3.5.0", - "@sentry/rollup-plugin": "3.5.0", - "@sentry/vite-plugin": "3.5.0", - "@sentry/webpack-plugin": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/esbuild-plugin": "3.6.0", + "@sentry/rollup-plugin": "3.6.0", + "@sentry/vite-plugin": "3.6.0", + "@sentry/webpack-plugin": "3.6.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9a968b1a1c19..cead058df601 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/bundler-plugin-core": "3.6.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 981138549cb7..787d50cec29f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.5.0", + "version": "3.6.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/bundler-plugin-core": "3.6.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 13efcd806a93..72054bf342de 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.5.0", + "version": "3.6.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index df44042441f7..9cf92ae4ca3a 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.5.0", + "version": "3.6.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/bundler-plugin-core": "3.6.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 0cf0651765b0..1b97c197ddda 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.5.0", + "version": "3.6.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.5.0", + "@sentry/bundler-plugin-core": "3.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.5.0", + "@sentry-internal/eslint-config": "3.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 11c6e74291fb27ea64119188eb26fe9882101392 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 18 Jul 2025 12:16:00 +0200 Subject: [PATCH 499/640] fix(core): Observe and handle Sentry CLI sourcemap upload failures (#763) Bump `@sentry/cli` to 2.49.0 which adds a new `rejectOnError` live mode setting to the `execute` and `releases.uploadSourceMaps` APIs. This new mode now makes the CLI reject the promise it returns if the CLI binary process exits with a non-zero exit code. In the previous live mode, it never rejected but only piped the stdio output, meaning the plugins didn't even know that the CLI failed. --- package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- .../src/build-plugin-manager.ts | 6 + yarn.lock | 104 +++++++++--------- 4 files changed, 60 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index e0f39918563e..15c26f2d6c11 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "ts-node": "^10.9.2" }, "volta": { - "node": "14.21.2", + "node": "18.20.8", "yarn": "1.22.19" } } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 79f48fdc9e19..ff5382dcdc2e 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "3.6.0", - "@sentry/cli": "^2.46.0", + "@sentry/cli": "^2.49.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index c692a19fb502..1cda50c2813a 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -455,6 +455,9 @@ export function createSentryBuildPluginManager( await cliInstance.releases.uploadSourceMaps(options.release.name, { include: normalizedInclude, dist: options.release.dist, + // We want this promise to throw if the sourcemaps fail to upload so that we know about it. + // see: https://github.com/getsentry/sentry-cli/pull/2605 + live: "rejectOnError", }); } @@ -642,6 +645,9 @@ export function createSentryBuildPluginManager( dist: options.release.dist, }, ], + // We want this promise to throw if the sourcemaps fail to upload so that we know about it. + // see: https://github.com/getsentry/sentry-cli/pull/2605 + live: "rejectOnError", } ); }); diff --git a/yarn.lock b/yarn.lock index 53bc23394d5d..8dd0238df9d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,50 +2726,50 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.46.0.tgz#e07ff66f03e8cb6e1988b7673ae5dbd6ff957b1d" - integrity sha512-5Ll+e5KAdIk9OYiZO8aifMBRNWmNyPjSqdjaHlBC1Qfh7pE3b1zyzoHlsUazG0bv0sNrSGea8e7kF5wIO1hvyg== - -"@sentry/cli-linux-arm64@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.46.0.tgz#d5b27e5813e7b3add65c9e3dbdd75a8bea4ef324" - integrity sha512-OEJN8yAjI9y5B4telyqzu27Hi3+S4T8VxZCqJz1+z2Mp0Q/MZ622AahVPpcrVq/5bxrnlZR16+lKh8L1QwNFPg== - -"@sentry/cli-linux-arm@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.46.0.tgz#d2a0f21cd208ef8e844bc5e565b337640d125441" - integrity sha512-WRrLNq/TEX/TNJkGqq6Ad0tGyapd5dwlxtsPbVBrIdryuL1mA7VCBoaHBr3kcwJLsgBHFH0lmkMee2ubNZZdkg== - -"@sentry/cli-linux-i686@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.46.0.tgz#73368ebe30236c8647caec420f717a7f45410f29" - integrity sha512-xko3/BVa4LX8EmRxVOCipV+PwfcK5Xs8lP6lgF+7NeuAHMNL4DqF6iV9rrN8gkGUHCUI9RXSve37uuZnFy55+Q== - -"@sentry/cli-linux-x64@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.46.0.tgz#49da3dfd873e0e72abef968e1c213b9397e5d70e" - integrity sha512-hJ1g5UEboYcOuRia96LxjJ0jhnmk8EWLDvlGnXLnYHkwy3ree/L7sNgdp/QsY8Z4j2PGO5f22Va+UDhSjhzlfQ== - -"@sentry/cli-win32-arm64@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.46.0.tgz#4e26b254d5283eb114ac916ac504283a30b2ecdb" - integrity sha512-mN7cpPoCv2VExFRGHt+IoK11yx4pM4ADZQGEso5BAUZ5duViXB2WrAXCLd8DrwMnP0OE978a7N8OtzsFqjkbNA== - -"@sentry/cli-win32-i686@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.46.0.tgz#72f7c0a611f17b7e5b34e2b47309d165195a8276" - integrity sha512-6F73AUE3lm71BISUO19OmlnkFD5WVe4/wA1YivtLZTc1RU3eUYJLYxhDfaH3P77+ycDppQ2yCgemLRaA4A8mNQ== - -"@sentry/cli-win32-x64@2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.46.0.tgz#8cfd438ec365b0ee925d9724a24b533b4cb75587" - integrity sha512-yuGVcfepnNL84LGA0GjHzdMIcOzMe0bjPhq/rwPsPN+zu11N+nPR2wV2Bum4U0eQdqYH3iAlMdL5/BEQfuLJww== - -"@sentry/cli@^2.46.0": - version "2.46.0" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.46.0.tgz#790864874ea04f804053aa85dc94501b2cc321bb" - integrity sha512-nqoPl7UCr446QFkylrsRrUXF51x8Z9dGquyf4jaQU+OzbOJMqclnYEvU6iwbwvaw3tu/2DnoZE/Og+Nq1h63sA== +"@sentry/cli-darwin@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.49.0.tgz#290657e5840b360cb8ca25c8a78f8c0f15c66b03" + integrity sha512-bgowyDeFuXbjkGq1ZKqcWhmzgfBe7oKIXYWJOOps4+32QfG+YsrdNnottHS01td3bzrJq0QnHj8H12fA81DqrA== + +"@sentry/cli-linux-arm64@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.49.0.tgz#a732004d7131f7e7b44f6a64abdccc36efb35d52" + integrity sha512-dqxsDUd76aDm03fUwUOs5BR7RHLpSb2EH/B1hlWm0mFvo9uY907XxW9wDFx/qDpCdmpC0aF+lF/lOBOrG9B5Fg== + +"@sentry/cli-linux-arm@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.49.0.tgz#73719561510df3369e05e9a4898b4e43b8753e4c" + integrity sha512-RBDIjIGmNsFw+a6vAt6m3D7ROKsMEB9i3u+UuIRxk0/DyHTcfVWxnK/ScPXGILM6PxQ2XOBfOKad0mmiDHBzZA== + +"@sentry/cli-linux-i686@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.49.0.tgz#8d1bb1378251a3aa995cc4b56bd352fa12a84b66" + integrity sha512-gDAd5/vJbEhd4Waud0Cd8ZRqLEagDlOvWwNH3KB694EiHJUwzRSiTA1YUVMYGI8Z9UyEA1sKxARwm2Trv99BxA== + +"@sentry/cli-linux-x64@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.49.0.tgz#7bf58fb7005c89fdde4e1262d5ed35e23065aceb" + integrity sha512-mbohGvPNhHjUciYNXzkt9TYUebTmxeAp9v9JfLSb/Soz6fubKwEHhpRJuz1zASxVWIR4PuqkePchqN5zhcLC0A== + +"@sentry/cli-win32-arm64@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.49.0.tgz#2bf6dd911acbe3ddb02eec0afb4301bb8fb25b53" + integrity sha512-3zwvsp61EPpSuGpGdXY4JelVJmNEjoj4vn5m6EFoOtk7OUI5/VFqqR4wchjy9Hjm3Eh6MB5K+KTKXs4W2p18ng== + +"@sentry/cli-win32-i686@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.49.0.tgz#32e31472ae6c5f69e538a4061d651937fcb8f14a" + integrity sha512-2oWaNl6z0BaOCAjM1Jxequfgjod3XO6wothxow4kA8e9+43JLhgarSdpwJPgQjcVyxjygwQ3/jKPdUFh0qNOmg== + +"@sentry/cli-win32-x64@2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.49.0.tgz#86aab38cb41f885914d7c99ceaab7b6ce52c72c6" + integrity sha512-dR4ulyrA6ZT7x7cg4Rwm0tcHf4TZz5QO6t1W1jX6uJ9n/U0bOSqSFZHNf/RryiUzQE1g8LBthOYyKGMkET6T8w== + +"@sentry/cli@^2.49.0": + version "2.49.0" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.49.0.tgz#a8332ae38e9f92a0da3d939bdbce119e63450e99" + integrity sha512-99IKax3yjOaPlWJh3rAJC/R6hdmZZJ2B3ACVP8CpOYE+JzGGLyir1fvTzrdFKFLPLOq2lGC3RqWuKqU7PJUTZQ== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2777,14 +2777,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.46.0" - "@sentry/cli-linux-arm" "2.46.0" - "@sentry/cli-linux-arm64" "2.46.0" - "@sentry/cli-linux-i686" "2.46.0" - "@sentry/cli-linux-x64" "2.46.0" - "@sentry/cli-win32-arm64" "2.46.0" - "@sentry/cli-win32-i686" "2.46.0" - "@sentry/cli-win32-x64" "2.46.0" + "@sentry/cli-darwin" "2.49.0" + "@sentry/cli-linux-arm" "2.49.0" + "@sentry/cli-linux-arm64" "2.49.0" + "@sentry/cli-linux-i686" "2.49.0" + "@sentry/cli-linux-x64" "2.49.0" + "@sentry/cli-win32-arm64" "2.49.0" + "@sentry/cli-win32-i686" "2.49.0" + "@sentry/cli-win32-x64" "2.49.0" "@sentry/core@7.50.0": version "7.50.0" From 24ab6c24e4d1239eb02b263da87e4da3412601c6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 18 Jul 2025 12:35:35 +0200 Subject: [PATCH 500/640] meta: Update changelog for 3.6.1 (#764) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5fa3c522fed..957e8f710bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 3.6.1 + +- fix(core): Observe and handle Sentry CLI sourcemap upload failures ([#763](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/763)) + ## 3.6.0 - feat(core): Don't add `debugIdUploadPlugin` when sourcemaps option is disabled ([#753](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/753)) From 736d5a24f7f2d415c748af9887d337a00419d6f4 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 18 Jul 2025 10:36:49 +0000 Subject: [PATCH 501/640] release: 3.6.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 3a0da81c6a84..6e9e631ad6a4 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.6.0", + "version": "3.6.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index f2475391972b..5ce5ebc9686e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.6.0", + "version": "3.6.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ff5382dcdc2e..7c1685ecaf31 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.6.0", + "version": "3.6.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.6.0", + "@sentry/babel-plugin-component-annotate": "3.6.1", "@sentry/cli": "^2.49.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 216153a83c07..6b733677468b 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c0b7dd26168b..dc3d5bc42f14 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.6.0", - "@sentry/rollup-plugin": "3.6.0", - "@sentry/vite-plugin": "3.6.0", - "@sentry/webpack-plugin": "3.6.0", + "@sentry/esbuild-plugin": "3.6.1", + "@sentry/rollup-plugin": "3.6.1", + "@sentry/vite-plugin": "3.6.1", + "@sentry/webpack-plugin": "3.6.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 66c14dda4c65..519486e0e543 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.6.0", + "version": "3.6.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 10b480f09b5a..1a7f1641ce0f 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index e0128618d61d..b3418b760c8d 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", - "@sentry/bundler-plugin-core": "3.6.0", - "@sentry/esbuild-plugin": "3.6.0", - "@sentry/rollup-plugin": "3.6.0", - "@sentry/vite-plugin": "3.6.0", - "@sentry/webpack-plugin": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/esbuild-plugin": "3.6.1", + "@sentry/rollup-plugin": "3.6.1", + "@sentry/vite-plugin": "3.6.1", + "@sentry/webpack-plugin": "3.6.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index cead058df601..ddcfd66e9787 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 787d50cec29f..042e4f514474 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.6.0", + "version": "3.6.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 72054bf342de..bb2956e153ae 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 9cf92ae4ca3a..9b7a0aa54514 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.6.0", + "version": "3.6.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 1b97c197ddda..2fed90932cf5 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.6.0", + "version": "3.6.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.0", + "@sentry/bundler-plugin-core": "3.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.0", + "@sentry-internal/eslint-config": "3.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 9a96e4c506f5706f35e728de5702778170d79955 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Fri, 18 Jul 2025 15:13:45 +0200 Subject: [PATCH 502/640] feat(vite): Update return type of vite plugin (#728) --- packages/vite-plugin/src/index.ts | 5 ++--- packages/vite-plugin/test/public-api.test.ts | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index fa13b02fd06a..9a31e2878cdf 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -10,7 +10,7 @@ import { createComponentNameAnnotateHooks, Logger, } from "@sentry/bundler-plugin-core"; -import { UnpluginOptions } from "unplugin"; +import { UnpluginOptions, VitePlugin } from "unplugin"; function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { return { @@ -73,8 +73,7 @@ const sentryUnplugin = sentryUnpluginFactory({ bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, }); -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryVitePlugin: (options?: Options) => any = sentryUnplugin.vite; +export const sentryVitePlugin: (options?: Options) => VitePlugin[] = sentryUnplugin.vite; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index d610eb10f2fa..22bec8eac08c 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -1,4 +1,3 @@ -import { VitePlugin } from "unplugin"; import { sentryVitePlugin } from "../src"; test("Vite plugin should exist", () => { @@ -16,7 +15,7 @@ describe("sentryVitePlugin", () => { authToken: "test-token", org: "test-org", project: "test-project", - }) as VitePlugin[]; + }); expect(Array.isArray(plugins)).toBe(true); From 96da5199d185bb8a235a5af0603c73bfb54c04bc Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Fri, 18 Jul 2025 15:22:38 +0200 Subject: [PATCH 503/640] feat(core)!: Remove `getBuildInformation` export (#765) rm getBuildInformation --- packages/bundler-plugin-core/src/index.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 25ed91e2cf50..b99c0c21d104 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -14,7 +14,6 @@ import { Options, SentrySDKBuildFlags } from "./types"; import { generateGlobalInjectorCode, generateModuleMetadataInjectorCode, - getBuildInformation as actualGetBuildInformation, replaceBooleanFlagsInCode, stringToUUID, stripQueryAndHashFromPath, @@ -174,13 +173,6 @@ export function sentryUnpluginFactory({ }); } -/** - * @deprecated This will be removed in v4 - */ -// TODO(v4): Don't export this from the package but keep the utils version -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export const getBuildInformation = actualGetBuildInformation; - /** * Determines whether the Sentry CLI binary is in its expected location. * This function is useful since `@sentry/cli` installs the binary via a post-install From 469d0e502e27e6b7e984b70c1627184478900ab1 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Fri, 18 Jul 2025 15:30:47 +0200 Subject: [PATCH 504/640] meta: Update changelog for 4.0.0 (#766) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 957e8f710bd4..298ecb8f3f74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.0.0 + +### Breaking Changes + +- (Type change) Vite plugin now returns `VitePlugin` type instead of `any` +- Deprecated function `getBuildInformation` has been removed + +### List of Changes + +- feat(core)!: Remove `getBuildInformation` export ([#765](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/765)) +- feat(vite)!: Update return type of vite plugin ([#728](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/728)) + ## 3.6.1 - fix(core): Observe and handle Sentry CLI sourcemap upload failures ([#763](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/763)) From 913ba011e8f7a5aa5ee65101fde877879713a09a Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 18 Jul 2025 13:35:11 +0000 Subject: [PATCH 505/640] release: 4.0.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 6e9e631ad6a4..81386087057d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.6.1", + "version": "4.0.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 5ce5ebc9686e..341cfa5dd36a 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "3.6.1", + "version": "4.0.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7c1685ecaf31..aae90c5840eb 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "3.6.1", + "version": "4.0.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.6.1", + "@sentry/babel-plugin-component-annotate": "4.0.0", "@sentry/cli": "^2.49.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6b733677468b..7a3c5bb93c44 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index dc3d5bc42f14..4ae2e26556f2 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "3.6.1", - "@sentry/rollup-plugin": "3.6.1", - "@sentry/vite-plugin": "3.6.1", - "@sentry/webpack-plugin": "3.6.1", + "@sentry/esbuild-plugin": "4.0.0", + "@sentry/rollup-plugin": "4.0.0", + "@sentry/vite-plugin": "4.0.0", + "@sentry/webpack-plugin": "4.0.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 519486e0e543..e76513fb45bd 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "3.6.1", + "version": "4.0.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/bundler-plugin-core": "4.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 1a7f1641ce0f..b95915965e9d 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index b3418b760c8d..10831aa96f32 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", - "@sentry/bundler-plugin-core": "3.6.1", - "@sentry/esbuild-plugin": "3.6.1", - "@sentry/rollup-plugin": "3.6.1", - "@sentry/vite-plugin": "3.6.1", - "@sentry/webpack-plugin": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/esbuild-plugin": "4.0.0", + "@sentry/rollup-plugin": "4.0.0", + "@sentry/vite-plugin": "4.0.0", + "@sentry/webpack-plugin": "4.0.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index ddcfd66e9787..acaaec24c460 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/bundler-plugin-core": "4.0.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 042e4f514474..368eeb1d31af 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "3.6.1", + "version": "4.0.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/bundler-plugin-core": "4.0.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index bb2956e153ae..d47a0912d55f 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "3.6.1", + "version": "4.0.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 9b7a0aa54514..47a01ec5e4a8 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "3.6.1", + "version": "4.0.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/bundler-plugin-core": "4.0.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2fed90932cf5..6d44966b6c63 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "3.6.1", + "version": "4.0.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "3.6.1", + "@sentry/bundler-plugin-core": "4.0.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "3.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "3.6.1", + "@sentry-internal/eslint-config": "4.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 8237ac982d7eb79b6abec8bde0bb18f7a3d1face Mon Sep 17 00:00:00 2001 From: Konstantin Grushetsky Date: Wed, 23 Jul 2025 18:12:25 +0300 Subject: [PATCH 506/640] fix(core): Make plugin inject ES5-friendly code (#770) * fix(webpack): make plugin inject ES5-friendly code Sentry webpack plugin injects code that includes `let` that breaks in ES5-only environments. `let` is substituted for `var` wrapped in an IIFE in order to keep the same scope for the declared variable. * add test for release and build info, minimal snippet format change * changelog credits --------- Co-authored-by: Lukas Stracke --- CHANGELOG.md | 4 + packages/bundler-plugin-core/src/index.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 14 ++-- .../bundler-plugin-core/test/index.test.ts | 2 +- .../bundler-plugin-core/test/utils.test.ts | 77 +++++++++++++++++-- 5 files changed, 84 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 298ecb8f3f74..91a6c2260cfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +- fix(core): Make plugin inject ES5-friendly code ([#770](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/770)) + +Work in this release was contributed by @grushetsky. Thank you for your contribution! + ## 4.0.0 ### Breaking Changes diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index b99c0c21d104..9c9e106e54e9 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -456,7 +456,7 @@ export function createComponentNameAnnotateHooks(ignoredComponents?: string[]): } export function getDebugIdSnippet(debugId: string): string { - return `;{try{let e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}};`; + return `;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");})();}catch(e){}};`; } export type { Logger } from "./logger"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 1df4226f036d..16a8d2e99995 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -314,8 +314,8 @@ export function generateGlobalInjectorCode({ }): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = `{ - let _global = + let code = `(function(){ + var _global = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? @@ -332,10 +332,10 @@ export function generateGlobalInjectorCode({ const buildInfo = getBuildInformation(); code += ` - _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; + _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; } - code += "}"; + code += "})();"; return code; } @@ -345,8 +345,8 @@ export function generateModuleMetadataInjectorCode(metadata: any): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin - return `{ - let _sentryModuleMetadataGlobal = + return `(function(){ + var _sentryModuleMetadataGlobal = typeof window !== "undefined" ? window : typeof global !== "undefined" @@ -366,7 +366,7 @@ export function generateModuleMetadataInjectorCode(metadata: any): string { _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], ${JSON.stringify(metadata)} ); -}`; +})();`; } export function getBuildInformation(): { diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 6e981ced100d..2608716932f0 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -4,7 +4,7 @@ describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); expect(snippet).toMatchInlineSnapshot( - `";{try{let e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"1234\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-1234\\")}catch(e){}};"` + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 0adf19710eb6..e7787a7f675f 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -1,4 +1,5 @@ import { + generateGlobalInjectorCode, generateModuleMetadataInjectorCode, getDependencies, getPackageJson, @@ -6,6 +7,9 @@ import { replaceBooleanFlagsInCode, stringToUUID, } from "../src/utils"; + +import fs from "fs"; + import path from "node:path"; type PackageJson = Record; @@ -216,12 +220,73 @@ if (false && true) { }); }); +describe("generateGlobalInjectorCode", () => { + it("generates code with release", () => { + const generatedCode = generateGlobalInjectorCode({ + release: "1.2.3", + injectBuildInformation: false, + }); + + expect(generatedCode).toMatchInlineSnapshot(` + "(function(){ + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof globalThis !== 'undefined' ? + globalThis : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:\\"1.2.3\\"};})();" + `); + }); + + it("generates code with release and build information", () => { + jest.spyOn(fs, "readFileSync").mockReturnValueOnce( + JSON.stringify({ + name: "test-app", + dependencies: { + myDep: "^2.1.4", + }, + devDependencies: { + rollup: "^3.1.4", + }, + }) + ); + + const generatedCode = generateGlobalInjectorCode({ + release: "1.2.3", + injectBuildInformation: true, + }); + + expect(generatedCode).toMatchInlineSnapshot(` + "(function(){ + var _global = + typeof window !== 'undefined' ? + window : + typeof global !== 'undefined' ? + global : + typeof globalThis !== 'undefined' ? + globalThis : + typeof self !== 'undefined' ? + self : + {}; + + _global.SENTRY_RELEASE={id:\\"1.2.3\\"}; + _global.SENTRY_BUILD_INFO={\\"deps\\":[\\"myDep\\",\\"rollup\\"],\\"depsVersions\\":{\\"rollup\\":3},\\"nodeVersion\\":18};})();" + `); + }); +}); + describe("generateModuleMetadataInjectorCode", () => { it("generates code with empty metadata object", () => { const generatedCode = generateModuleMetadataInjectorCode({}); expect(generatedCode).toMatchInlineSnapshot(` - "{ - let _sentryModuleMetadataGlobal = + "(function(){ + var _sentryModuleMetadataGlobal = typeof window !== \\"undefined\\" ? window : typeof global !== \\"undefined\\" @@ -241,7 +306,7 @@ describe("generateModuleMetadataInjectorCode", () => { _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], {} ); - }" + })();" `); }); @@ -255,8 +320,8 @@ describe("generateModuleMetadataInjectorCode", () => { }, }); expect(generatedCode).toMatchInlineSnapshot(` - "{ - let _sentryModuleMetadataGlobal = + "(function(){ + var _sentryModuleMetadataGlobal = typeof window !== \\"undefined\\" ? window : typeof global !== \\"undefined\\" @@ -276,7 +341,7 @@ describe("generateModuleMetadataInjectorCode", () => { _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], {\\"file1.js\\":{\\"foo\\":\\"bar\\"},\\"file2.js\\":{\\"bar\\":\\"baz\\"}} ); - }" + })();" `); }); }); From 223d05496258dfed98c62e1788f999c33aa2bd7b Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 24 Jul 2025 09:27:11 +0200 Subject: [PATCH 507/640] fix: Use `renderChunk` for release injection for Rollup/Rolldown/Vite (#761) * fix: Use `renderChunk` for release injection for Rollup/Rolldown/Vite * Minify injected code * Lint --- packages/bundler-plugin-core/src/index.ts | 113 +++++++----------- packages/bundler-plugin-core/src/utils.ts | 46 ++----- .../test/__snapshots__/utils.test.ts.snap | 9 ++ .../bundler-plugin-core/test/utils.test.ts | 83 +------------ 4 files changed, 65 insertions(+), 186 deletions(-) create mode 100644 packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 9c9e106e54e9..d382ba100554 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -182,63 +182,59 @@ export function sentryCliBinaryExists(): boolean { return fs.existsSync(SentryCli.getPath()); } +// We need to be careful not to inject the snippet before any `"use strict";`s. +// As an additional complication `"use strict";`s may come after any number of comments. +const COMMENT_USE_STRICT_REGEX = + // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. + /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; + +/** + * Simplified `renderChunk` hook type from Rollup. + * We can't reference the type directly because the Vite plugin complains + * about type mismatches + */ +type RenderChunkHook = ( + code: string, + chunk: { + fileName: string; + } +) => { + code: string; + map: SourceMap; +} | null; + export function createRollupReleaseInjectionHooks(injectionCode: string): { - resolveId: UnpluginOptions["resolveId"]; - load: UnpluginOptions["load"]; - transform: UnpluginOptions["transform"]; + renderChunk: RenderChunkHook; } { - const virtualReleaseInjectionFileId = "\0sentry-release-injection-file"; return { - resolveId(id: string) { - if (id === virtualReleaseInjectionFileId) { - return { - id: virtualReleaseInjectionFileId, - external: false, - moduleSideEffects: true, - }; - } else { - return null; - } - }, - - load(id: string) { - if (id === virtualReleaseInjectionFileId) { - return injectionCode; - } else { - return null; - } - }, - - transform(code: string, id: string) { - if (id === virtualReleaseInjectionFileId) { - return null; - } - - // id may contain query and hash which will trip up our file extension logic below - const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); - - if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) { - return null; - } - + renderChunk(code: string, chunk: { fileName: string }) { if ( - ![".js", ".ts", ".jsx", ".tsx", ".mjs"].some((ending) => - idWithoutQueryAndHash.endsWith(ending) + // chunks could be any file (html, md, ...) + [".js", ".mjs", ".cjs"].some((ending) => + stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) ) ) { - return null; - } + const ms = new MagicString(code, { filename: chunk.fileName }); - const ms = new MagicString(code); + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - // Appending instead of prepending has less probability of mucking with user's source maps. - // Luckily import statements get hoisted to the top anyways. - ms.append(`\n\n;import "${virtualReleaseInjectionFileId}";`); + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectionCode); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectionCode); + } - return { - code: ms.toString(), - map: ms.generateMap({ hires: "boundary" }), - }; + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), + }; + } else { + return null; // returning null means not modifying the chunk at all + } }, }; } @@ -253,27 +249,6 @@ export function createRollupBundleSizeOptimizationHooks(replacementValues: Sentr }; } -// We need to be careful not to inject the snippet before any `"use strict";`s. -// As an additional complication `"use strict";`s may come after any number of comments. -const COMMENT_USE_STRICT_REGEX = - // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. - /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; - -/** - * Simplified `renderChunk` hook type from Rollup. - * We can't reference the type directly because the Vite plugin complains - * about type mismatches - */ -type RenderChunkHook = ( - code: string, - chunk: { - fileName: string; - } -) => { - code: string; - map: SourceMap; -} | null; - export function createRollupDebugIdInjectionHooks(): { renderChunk: RenderChunkHook; } { diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 16a8d2e99995..62dc2a5b67da 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -314,28 +314,17 @@ export function generateGlobalInjectorCode({ }): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = `(function(){ - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof globalThis !== 'undefined' ? - globalThis : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; + let code = `!function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; + + code += `e.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; if (injectBuildInformation) { const buildInfo = getBuildInformation(); - code += ` - _global.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; + code += `e.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; } - code += "})();"; + code += "}();"; return code; } @@ -345,28 +334,9 @@ export function generateModuleMetadataInjectorCode(metadata: any): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin - return `(function(){ - var _sentryModuleMetadataGlobal = - typeof window !== "undefined" - ? window - : typeof global !== "undefined" - ? global - : typeof globalThis !== "undefined" - ? globalThis - : typeof self !== "undefined" - ? self - : {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata = - _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = - Object.assign( - {}, - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], - ${JSON.stringify(metadata)} - ); -})();`; + return `!function(){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]=Object.assign({},e._sentryModuleMetadata[(new e.Error).stack],${JSON.stringify( + metadata + )})}();`; } export function getBuildInformation(): { diff --git a/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap b/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap new file mode 100644 index 000000000000..b94f01b6e93c --- /dev/null +++ b/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`generateGlobalInjectorCode generates code with release 1`] = `"!function(){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\\"};}();"`; + +exports[`generateGlobalInjectorCode generates code with release and build information 1`] = `"!function(){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\\":18};}();"`; + +exports[`generateModuleMetadataInjectorCode generates code with empty metadata object 1`] = `"!function(){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]=Object.assign({},e._sentryModuleMetadata[(new e.Error).stack],{})}();"`; + +exports[`generateModuleMetadataInjectorCode generates code with metadata object 1`] = `"!function(){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]=Object.assign({},e._sentryModuleMetadata[(new e.Error).stack],{\\"file1.js\\":{\\"foo\\":\\"bar\\"},\\"file2.js\\":{\\"bar\\":\\"baz\\"}})}();"`; diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index e7787a7f675f..90fe96665765 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -227,21 +227,7 @@ describe("generateGlobalInjectorCode", () => { injectBuildInformation: false, }); - expect(generatedCode).toMatchInlineSnapshot(` - "(function(){ - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof globalThis !== 'undefined' ? - globalThis : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:\\"1.2.3\\"};})();" - `); + expect(generatedCode).toMatchSnapshot(); }); it("generates code with release and build information", () => { @@ -262,52 +248,14 @@ describe("generateGlobalInjectorCode", () => { injectBuildInformation: true, }); - expect(generatedCode).toMatchInlineSnapshot(` - "(function(){ - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof globalThis !== 'undefined' ? - globalThis : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:\\"1.2.3\\"}; - _global.SENTRY_BUILD_INFO={\\"deps\\":[\\"myDep\\",\\"rollup\\"],\\"depsVersions\\":{\\"rollup\\":3},\\"nodeVersion\\":18};})();" - `); + expect(generatedCode).toMatchSnapshot(); }); }); describe("generateModuleMetadataInjectorCode", () => { it("generates code with empty metadata object", () => { const generatedCode = generateModuleMetadataInjectorCode({}); - expect(generatedCode).toMatchInlineSnapshot(` - "(function(){ - var _sentryModuleMetadataGlobal = - typeof window !== \\"undefined\\" - ? window - : typeof global !== \\"undefined\\" - ? global - : typeof globalThis !== \\"undefined\\" - ? globalThis - : typeof self !== \\"undefined\\" - ? self - : {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata = - _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = - Object.assign( - {}, - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], - {} - ); - })();" - `); + expect(generatedCode).toMatchSnapshot(); }); it("generates code with metadata object", () => { @@ -319,29 +267,6 @@ describe("generateModuleMetadataInjectorCode", () => { bar: "baz", }, }); - expect(generatedCode).toMatchInlineSnapshot(` - "(function(){ - var _sentryModuleMetadataGlobal = - typeof window !== \\"undefined\\" - ? window - : typeof global !== \\"undefined\\" - ? global - : typeof globalThis !== \\"undefined\\" - ? globalThis - : typeof self !== \\"undefined\\" - ? self - : {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata = - _sentryModuleMetadataGlobal._sentryModuleMetadata || {}; - - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack] = - Object.assign( - {}, - _sentryModuleMetadataGlobal._sentryModuleMetadata[new _sentryModuleMetadataGlobal.Error().stack], - {\\"file1.js\\":{\\"foo\\":\\"bar\\"},\\"file2.js\\":{\\"bar\\":\\"baz\\"}} - ); - })();" - `); + expect(generatedCode).toMatchSnapshot(); }); }); From 0a956e7f6494889e472f0a7be428bb34b7cbe646 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 24 Jul 2025 10:37:12 +0200 Subject: [PATCH 508/640] meta: Update changelog for 4.0.1 (#771) --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91a6c2260cfa..16e61bbd9826 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.0.1 + - fix(core): Make plugin inject ES5-friendly code ([#770](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/770)) +- fix(core): Use `renderChunk` for release injection for Rollup/Rolldown/Vite ([#761](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/761)) Work in this release was contributed by @grushetsky. Thank you for your contribution! From b8576501adf65ffe4f451096e61e12904d825cc5 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 24 Jul 2025 13:36:36 +0000 Subject: [PATCH 509/640] release: 4.0.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 81386087057d..00f4de347af4 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.0.0", + "version": "4.0.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 341cfa5dd36a..596ae05d0406 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.0.0", + "version": "4.0.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index aae90c5840eb..a503b429339a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.0.0", + "version": "4.0.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.0.0", + "@sentry/babel-plugin-component-annotate": "4.0.1", "@sentry/cli": "^2.49.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 7a3c5bb93c44..061b651f1bd7 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 4ae2e26556f2..095d31ca00e8 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.0.0", - "@sentry/rollup-plugin": "4.0.0", - "@sentry/vite-plugin": "4.0.0", - "@sentry/webpack-plugin": "4.0.0", + "@sentry/esbuild-plugin": "4.0.1", + "@sentry/rollup-plugin": "4.0.1", + "@sentry/vite-plugin": "4.0.1", + "@sentry/webpack-plugin": "4.0.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index e76513fb45bd..416eb9d6b4fc 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.0.0", + "version": "4.0.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index b95915965e9d..cf175137eef5 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 10831aa96f32..3746d5603516 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", - "@sentry/bundler-plugin-core": "4.0.0", - "@sentry/esbuild-plugin": "4.0.0", - "@sentry/rollup-plugin": "4.0.0", - "@sentry/vite-plugin": "4.0.0", - "@sentry/webpack-plugin": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/esbuild-plugin": "4.0.1", + "@sentry/rollup-plugin": "4.0.1", + "@sentry/vite-plugin": "4.0.1", + "@sentry/webpack-plugin": "4.0.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index acaaec24c460..554acb8a5438 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 368eeb1d31af..fcfbc4362b73 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.0.0", + "version": "4.0.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index d47a0912d55f..e4184dd5c072 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 47a01ec5e4a8..248af3aa3e83 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.0.0", + "version": "4.0.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6d44966b6c63..3649298cf0fc 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.0.0", + "version": "4.0.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.0", + "@sentry/bundler-plugin-core": "4.0.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.0", + "@sentry-internal/eslint-config": "4.0.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From f2cdce6eef40366b9e0cc5e345e6e4e7bda378af Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 29 Jul 2025 09:41:01 +0200 Subject: [PATCH 510/640] fix(core): Make `moduleMetadata` injection snippet ES5-compliant (#774) Makes the `moduleMetadata` injection code snippet fully ES5-compliant by replacing `Object.assign` with an ES5-native `assign` "polyfill". --- packages/bundler-plugin-core/src/utils.ts | 2 +- .../bundler-plugin-core/test/__snapshots__/utils.test.ts.snap | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 62dc2a5b67da..138f5b31d8d3 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -334,7 +334,7 @@ export function generateModuleMetadataInjectorCode(metadata: any): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin - return `!function(){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]=Object.assign({},e._sentryModuleMetadata[(new e.Error).stack],${JSON.stringify( + return `!function(){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 Date: Tue, 29 Jul 2025 10:16:06 +0200 Subject: [PATCH 511/640] meta: Add Changelog entry for 4.0.2 (#776) meta: Add changelog for 4.0.2 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16e61bbd9826..8e44bc30e98f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.0.2 + +- fix(core): Make `moduleMetadata` injection snippet ES5-compliant ([#774](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/774)) + ## 4.0.1 - fix(core): Make plugin inject ES5-friendly code ([#770](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/770)) @@ -118,6 +122,10 @@ Work in this release was contributed by @thecodewarrior. Thank you for your cont Work in this release contributed by @jdelStrother. Thank you for your contribution! +## 2.23.1 + +- fix(v2/core): Make `moduleMetadata` injection code ES5-compliant (#773) + ## 2.23.0 - chore(deps): bump nanoid from 3.3.6 to 3.3.8 (#641) From 46da015550ae4cf1594e13e8ec7519740b4ed0e8 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 29 Jul 2025 08:19:04 +0000 Subject: [PATCH 512/640] release: 4.0.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 00f4de347af4..78acca77be68 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.0.1", + "version": "4.0.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 596ae05d0406..953b872947a8 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.0.1", + "version": "4.0.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a503b429339a..df345186e162 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.0.1", + "version": "4.0.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.0.1", + "@sentry/babel-plugin-component-annotate": "4.0.2", "@sentry/cli": "^2.49.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 061b651f1bd7..58877c08307c 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 095d31ca00e8..294e1237a024 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.0.1", - "@sentry/rollup-plugin": "4.0.1", - "@sentry/vite-plugin": "4.0.1", - "@sentry/webpack-plugin": "4.0.1", + "@sentry/esbuild-plugin": "4.0.2", + "@sentry/rollup-plugin": "4.0.2", + "@sentry/vite-plugin": "4.0.2", + "@sentry/webpack-plugin": "4.0.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 416eb9d6b4fc..8dc885c557db 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.0.1", + "version": "4.0.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index cf175137eef5..4727d699b9e3 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3746d5603516..505eaa55f23f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", - "@sentry/bundler-plugin-core": "4.0.1", - "@sentry/esbuild-plugin": "4.0.1", - "@sentry/rollup-plugin": "4.0.1", - "@sentry/vite-plugin": "4.0.1", - "@sentry/webpack-plugin": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/esbuild-plugin": "4.0.2", + "@sentry/rollup-plugin": "4.0.2", + "@sentry/vite-plugin": "4.0.2", + "@sentry/webpack-plugin": "4.0.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 554acb8a5438..e4c6911da1c8 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index fcfbc4362b73..24a40ad689d9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.0.1", + "version": "4.0.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index e4184dd5c072..df4854b4e60b 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 248af3aa3e83..4c21233ae927 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.0.1", + "version": "4.0.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3649298cf0fc..95918fe7db1d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.0.1", + "version": "4.0.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.1", + "@sentry/bundler-plugin-core": "4.0.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.0.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.1", + "@sentry-internal/eslint-config": "4.0.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From bf394f1374699caead8b3f25c5a5ae1e3863a63a Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 7 Aug 2025 14:58:44 +0200 Subject: [PATCH 513/640] feat(core): Expose method for injecting debug Ids from plugin manager (#784) --- .../src/build-plugin-manager.ts | 86 ++++++++++++------- .../test/build-plugin-manager.test.ts | 75 ++++++++++++++++ 2 files changed, 132 insertions(+), 29 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 1cda50c2813a..4f5e5193c8af 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -2,10 +2,9 @@ import SentryCli from "@sentry/cli"; import { closeSession, DEFAULT_ENVIRONMENT, - getDynamicSamplingContextFromSpan, + getTraceData, makeSession, setMeasurement, - spanToTraceHeader, startSpan, } from "@sentry/core"; import * as dotenv from "dotenv"; @@ -23,7 +22,6 @@ import { Options, SentrySDKBuildFlags } from "./types"; import { arrayify, getTurborepoEnvPassthroughWarning, stripQueryAndHashFromPath } from "./utils"; import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; -import { dynamicSamplingContextToSentryBaggageHeader } from "@sentry/utils"; export type SentryBuildPluginManager = { /** @@ -67,6 +65,15 @@ export type SentryBuildPluginManager = { */ createRelease(): Promise; + /** + * Injects debug IDs into the build artifacts. + * + * This is a separate function from `uploadSourcemaps` because that needs to run before the sourcemaps are uploaded. + * Usually the respective bundler-plugin will take care of this before the sourcemaps are uploaded. + * Only use this if you need to manually inject debug IDs into the build artifacts. + */ + injectDebugIds(buildArtifactPaths: string[]): Promise; + /** * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded */ @@ -80,6 +87,20 @@ export type SentryBuildPluginManager = { createDependencyOnBuildArtifacts: () => () => void; }; +function createCliInstance(options: NormalizedOptions): SentryCli { + return new SentryCli(null, { + authToken: options.authToken, + org: options.org, + project: options.project, + silent: options.silent, + url: options.url, + vcsRemote: options.release.vcsRemote, + headers: { + ...getTraceData(), + }, + }); +} + /** * Creates a build plugin manager that exposes primitives for everything that a Sentry JavaScript SDK or build tooling may do during a build. * @@ -153,6 +174,9 @@ export function createSentryBuildPluginManager( createDependencyOnBuildArtifacts: () => () => { /* noop */ }, + injectDebugIds: async () => { + /* noop */ + }, }; } @@ -424,15 +448,7 @@ export function createSentryBuildPluginManager( createDependencyOnBuildArtifacts(); try { - const cliInstance = new SentryCli(null, { - authToken: options.authToken, - org: options.org, - project: options.project, - silent: options.silent, - url: options.url, - vcsRemote: options.release.vcsRemote, - headers: options.headers, - }); + const cliInstance = createCliInstance(options); if (options.release.create) { await cliInstance.releases.new(options.release.name); @@ -502,6 +518,33 @@ export function createSentryBuildPluginManager( } }, + /* + Injects debug IDs into the build artifacts. + + This is a separate function from `uploadSourcemaps` because that needs to run before the sourcemaps are uploaded. + Usually the respective bundler-plugin will take care of this before the sourcemaps are uploaded. + Only use this if you need to manually inject debug IDs into the build artifacts. + */ + async injectDebugIds(buildArtifactPaths: string[]) { + await startSpan( + { name: "inject-debug-ids", scope: sentryScope, forceTransaction: true }, + async () => { + try { + const cliInstance = createCliInstance(options); + await cliInstance.execute( + ["sourcemaps", "inject", ...buildArtifactPaths], + options.debug ?? false + ); + } catch (e) { + sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); + handleRecoverableError(e, false); + } finally { + await safeFlushTelemetry(sentryClient); + } + } + ); + }, + /** * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded */ @@ -617,23 +660,8 @@ export function createSentryBuildPluginManager( setMeasurement("files", files.length, "none", prepBundlesSpan); setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); - await startSpan({ name: "upload", scope: sentryScope }, async (uploadSpan) => { - const cliInstance = new SentryCli(null, { - authToken: options.authToken, - org: options.org, - project: options.project, - silent: options.silent, - url: options.url, - vcsRemote: options.release.vcsRemote, - headers: { - "sentry-trace": spanToTraceHeader(uploadSpan), - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - baggage: dynamicSamplingContextToSentryBaggageHeader( - getDynamicSamplingContextFromSpan(uploadSpan) - )!, - ...options.headers, - }, - }); + await startSpan({ name: "upload", scope: sentryScope }, async () => { + const cliInstance = createCliInstance(options); await cliInstance.releases.uploadSourceMaps( options.release.name ?? "undefined", // unfortunately this needs a value for now but it will not matter since debug IDs overpower releases anyhow 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 c0078fa6b29c..47ec645f669e 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -1,6 +1,30 @@ import { createSentryBuildPluginManager } from "../src/build-plugin-manager"; +const mockCliExecute = jest.fn(); +jest.mock("@sentry/cli", () => { + return jest.fn().mockImplementation(() => ({ + execute: mockCliExecute, + })); +}); + +// eslint-disable-next-line @typescript-eslint/no-unsafe-return +jest.mock("../src/sentry/telemetry", () => ({ + ...jest.requireActual("../src/sentry/telemetry"), + safeFlushTelemetry: jest.fn(), +})); + +// eslint-disable-next-line @typescript-eslint/no-unsafe-return +jest.mock("@sentry/core", () => ({ + ...jest.requireActual("@sentry/core"), + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return + startSpan: jest.fn((options, callback) => callback()), +})); + describe("createSentryBuildPluginManager", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + describe("when disabled", () => { it("initializes a no-op build plugin manager", () => { const buildPluginManager = createSentryBuildPluginManager( @@ -48,4 +72,55 @@ describe("createSentryBuildPluginManager", () => { expect(errorSpy).not.toHaveBeenCalled(); }); }); + + describe("injectDebugIds", () => { + it("should call CLI with correct sourcemaps inject command", async () => { + mockCliExecute.mockResolvedValue(undefined); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + const buildArtifactPaths = ["/path/to/1", "/path/to/2"]; + await buildPluginManager.injectDebugIds(buildArtifactPaths); + + expect(mockCliExecute).toHaveBeenCalledWith( + ["sourcemaps", "inject", "/path/to/1", "/path/to/2"], + false + ); + }); + + it("should pass debug flag when options.debug is true", async () => { + mockCliExecute.mockResolvedValue(undefined); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + const buildArtifactPaths = ["/path/to/bundle"]; + await buildPluginManager.injectDebugIds(buildArtifactPaths); + + expect(mockCliExecute).toHaveBeenCalledWith( + ["sourcemaps", "inject", "/path/to/bundle"], + true + ); + }); + }); }); From 40d1053afd61e1564a56e386353f96d47fe100f6 Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 8 Aug 2025 09:49:00 +0200 Subject: [PATCH 514/640] docs(options): Improve JSDoc for options (#781) * docs(options): Improve JSDoc for options * small doc change * fix formatting --- packages/bundler-plugin-core/src/types.ts | 123 +++++++++++------- .../src/generate-documentation-table.ts | 49 +++---- 2 files changed, 101 insertions(+), 71 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 1c088a4de220..92a5e1c8a5ef 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -18,6 +18,8 @@ export interface Options { * Can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/. * * This value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable. + * + * @see https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens */ authToken?: string; @@ -27,26 +29,27 @@ export interface Options { * * This value can also be set via the `SENTRY_URL` environment variable. * - * Defaults to https://sentry.io/, which is the correct value for SaaS customers. + * @default "https://sentry.io" (correct value for SaaS customers) */ url?: string; /** - * Headers added to every outgoing network request. + * Additional headers to send with every outgoing request to Sentry. */ headers?: Record; /** - * Print useful debug information. + * Enable debug information logs during build-time. + * Enabling this will give you, for example, logs about source maps. * - * Defaults to `false`. + * @default false */ debug?: boolean; /** - * Suppresses all logs. + * Suppresses all build logs (all log levels, including errors). * - * Defaults to `false`. + * @default false */ silent?: boolean; @@ -68,14 +71,15 @@ export interface Options { errorHandler?: (err: Error) => void; /** - * If set to true, internal plugin errors and performance data will be sent to Sentry. + * If this flag is `true`, internal plugin errors and performance data will be sent to Sentry. + * It will not collect any sensitive or user-specific data. * - * At Sentry we like to use Sentry ourselves to deliver faster and more stable products. + * At Sentry, we like to use Sentry ourselves to deliver faster and more stable products. * We're very careful of what we're sending. We won't collect anything other than error * and high-level performance data. We will never collect your code or any details of the * projects in which you're using this plugin. * - * Defaults to `true`. + * @default true */ telemetry?: boolean; @@ -87,35 +91,36 @@ export interface Options { disable?: boolean; /** - * Options for source maps uploading. + * Options related to source maps upload and processing. */ sourcemaps?: { /** - * Disables all functionality related to sourcemaps. + * If this flag is `true`, any functionality related to source maps will be disabled. * - * Defaults to `false`. + * @default false */ disable?: boolean; /** - * A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry. + * A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry. * - * If this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build. + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * If this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build. * * Use the `debug` option to print information about which files end up being uploaded. + * */ assets?: string | string[]; /** * A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry. * - * Default: `[]` - * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer * * Use the `debug` option to print information about which files end up being uploaded. + * + * @default [] */ ignore?: string | string[]; @@ -150,11 +155,11 @@ export interface Options { /** * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed. * - * The globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob) - * - * Note: If you pass in a promise that resolves to a string or array, the plugin will await the promise and use + * Note: If you pass in a Promise that resolves to a string or array, the plugin will await the Promise and use * the resolved value globs. This is useful if you need to dynamically determine the files to delete. Some - * higher-level Sentry SDKs or options use this feature (e.g. SvelteKit). + * higher-level Sentry SDKs or options use this feature (e.g., SvelteKit). + * + * The globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer * * Use the `debug` option to print information about which files end up being deleted. */ @@ -173,10 +178,10 @@ export interface Options { * This value can also be specified via the `SENTRY_RELEASE` environment variable. * * Defaults to automatically detecting a value for your environment. - * This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. - * (the latter requires access to git CLI and for the root directory to be a valid repository) + * This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA + * (the latter requires access to git CLI and for the root directory to be a valid repository). * - * If you didn't provide a value and the plugin can't automatically detect one, no release will be created. + * If no `name` is provided and the plugin can't automatically detect one, no release will be created. */ name?: string; @@ -189,44 +194,48 @@ export interface Options { /** * Whether the plugin should create a release on Sentry during the build. - * Note that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. - * (for example via the `inject` option) * - * Defaults to `true`. + * Note that a release may still appear in Sentry even if this value is `false`. Any Sentry event that has a release value attached + * will automatically create a release (for example, via the `inject` option). + * + * @default true */ create?: boolean; /** - * Whether the Sentry release should be automatically finalized (meaning an end timestamp is added) after the build ends. + * Whether to automatically finalize the release. The release is finalized by adding an end timestamp after the build ends. * - * Defaults to `true`. + * @default true */ finalize?: boolean; /** - * Unique identifier for the distribution, used to further segment your release. + * Unique distribution identifier for the release. Used to further segment the release. + * * Usually your build number. */ dist?: string; /** - * Version control system remote name. + * Version control system (VCS) remote name. * * This value can also be specified via the `SENTRY_VSC_REMOTE` environment variable. * - * Defaults to 'origin'. + * @default "origin" */ vcsRemote?: string; /** - * Associates the release with its commits in Sentry. + * Configuration for associating the release with its commits in Sentry. + * + * Set to `false` to disable commit association. * - * Defaults to `{ auto: true }`. Set to `false` to disable commit association. + * @default { auto: true } */ setCommits?: SetCommitsOptions | false; /** - * Adds deployment information to the release in Sentry. + * Configuration for adding deployment information to the release in Sentry. */ deploy?: DeployOptions; @@ -244,28 +253,34 @@ export interface Options { }; /** - * Options related to bundle size optimizations. + * Options for bundle size optimizations by excluding certain features. */ bundleSizeOptimizations?: { /** - * If set to `true`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Exclude debug statements from the bundle, thus disabling features like the SDK's `debug` option. * - * Setting this option to `true` will disable features like the SDK's `debug` option. + * If set to `true`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK during the build. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. + * + * @default false */ excludeDebugStatements?: boolean; /** + * Exclude tracing functionality from the bundle, thus disabling features like performance monitoring. + * * If set to `true`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. * * **Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. `Sentry.startTransaction()`). + + * @default false */ excludeTracing?: boolean; /** * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Canvas recording functionality. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. * * You can safely do this when you do not want to capture any Canvas activity via Sentry Session Replay. * @@ -274,26 +289,38 @@ export interface Options { excludeReplayCanvas?: boolean; /** + * Exclude Replay Shadow DOM functionality from the bundle. + * * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. * * This option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay. + * + * @default false */ excludeReplayShadowDom?: boolean; /** - * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay `iframe` recording functionality. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Exclude Replay iFrame functionality from the bundle. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay `iframe` recording functionality. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. * * You can safely do this when you do not want to capture any `iframe` activity via Sentry Session Replay. + * + * @default false */ excludeReplayIframe?: boolean; /** - * If set to `true`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker. - * Note that the success of this depends on tree shaking being enabled in your build tooling. + * Exclude Replay worker functionality from the bundle. + * + * If set to `true`, the Sentry SDK will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker. + * Note that the success of this depends on tree-shaking being enabled in your build tooling. * * **Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the `workerUrl` option. + * + * @default false */ excludeReplayWorker?: boolean; }; @@ -573,7 +600,7 @@ type DeployOptions = { time?: number; /** - * Human readable name for the deployment. + * Human-readable name for the deployment. */ name?: string; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 3719d7604a6b..3a4529c4d8c1 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -24,7 +24,7 @@ const options: OptionDocumentation[] = [ name: "authToken", type: "string", fullDescription: - "The authentication token to use for all communication with Sentry. Can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/.\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.", + "The authentication token to use for all communication with Sentry.\nCan be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/.\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.\n\nCheck out the docs on organization tokens: https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens", }, { name: "url", @@ -35,17 +35,19 @@ const options: OptionDocumentation[] = [ { name: "headers", type: "Record", - fullDescription: "Headers added to every outgoing network request.", + fullDescription: "Additional headers to send with every outgoing request to Sentry.", }, { name: "debug", type: "boolean", - fullDescription: "Print useful debug information. Defaults to `false`.", + fullDescription: + "Enable debug information logs during build-time. Enabling this will give you, for example, logs about source maps. Defaults to `false`.", }, { name: "silent", type: "boolean", - fullDescription: "Suppresses all logs. Defaults to `false`.", + fullDescription: + "Suppresses all build logs (all log levels, including errors). Defaults to `false`.", }, { name: "errorHandler", @@ -67,7 +69,7 @@ errorHandler: (err) => { name: "telemetry", type: "boolean", fullDescription: - "If set to true, internal plugin errors and performance data will be sent to Sentry.\n\nAt Sentry we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin.\n\nDefaults to `true`.", + "If this flag is `true`, internal plugin errors and performance data will be sent to Sentry. It will not collect any sensitive or user-specific data.\n\nAt Sentry, we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin.\n\nDefaults to `true`.", }, { name: "disable", @@ -76,19 +78,19 @@ errorHandler: (err) => { }, { name: "sourcemaps", - fullDescription: "Options for uploading source maps.", + fullDescription: "Options related to source maps upload and processing.", children: [ { name: "assets", type: "string | string[]", fullDescription: - "A glob or an array of globs that specifies the build artifacts that should be uploaded to Sentry.\n\nIf this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", + "A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry.\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nIf this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build.\n\nUse the `debug` option to print information about which files end up being uploaded.", }, { name: "ignore", type: "string | string[]", fullDescription: - "A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry.\n\nDefault: `[]`\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being uploaded.", + "A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry.\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nUse the `debug` option to print information about which files end up being uploaded.\n\nDefault: `[]`", }, { name: "rewriteSources", @@ -122,13 +124,13 @@ Use the \`debug\` option to print information about source map resolution. name: "filesToDeleteAfterUpload", type: "string | string[] | Promise", fullDescription: - "A glob, an array of globs or a promise resolving a glob or array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nThe globbing patterns follow the implementation of the `glob` package. (https://www.npmjs.com/package/glob)\n\nUse the `debug` option to print information about which files end up being deleted.", + "A glob, an array of globs or a promise resolving a glob or array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nNote: If you pass in a Promise that resolves to a string or array, the plugin will await the Promise and use the resolved value globs. This is useful if you need to dynamically determine the files to delete. Some higher-level Sentry SDKs or options use this feature (e.g., SvelteKit).\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nUse the `debug` option to print information about which files end up being deleted.", }, { name: "disable", type: "boolean", fullDescription: - "Disables all functionality related to sourcemaps.\n\nDefaults to `false`.", + "If this flag is `true`, any functionality related to source maps will be disabled.\n\nDefaults to `false`.", }, ], }, @@ -142,7 +144,7 @@ Use the \`debug\` option to print information about source map resolution. name: "name", type: "string", fullDescription: - "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA. (the latter requires access to git CLI and for the root directory to be a valid repository)\n\nIf you didn't provide a value and the plugin can't automatically detect one, no release will be created.", + "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA (the latter requires access to git CLI and for the root directory to be a valid repository).\n\nIf no `name` is provided and the plugin can't automatically detect one, no release will be created.", }, { name: "inject", @@ -154,30 +156,30 @@ Use the \`debug\` option to print information about source map resolution. name: "create", type: "boolean", fullDescription: - "Whether the plugin should create a release on Sentry during the build. Note that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. (for example via the `inject` option)\n\nDefaults to `true`.", + "Whether the plugin should create a release on Sentry during the build.\n\nNote that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. (for example via the `inject` option)\n\nDefaults to `true`.", }, { name: "finalize", type: "boolean", fullDescription: - "Whether the Sentry release should be automatically finalized (meaning an end timestamp is added) after the build ends.\n\nDefaults to `true`.", + "Whether to automatically finalize the release. The release is finalized by adding an end timestamp after the build ends.\n\nDefaults to `true`.", }, { name: "dist", type: "string", fullDescription: - "Unique identifier for the distribution, used to further segment your release.", + "Unique distribution identifier for the release. Used to further segment the release.\n\nUsually your build number.", }, { name: "vcsRemote", type: "string", fullDescription: - "Version control system remote name.\n\nThis value can also be specified via the `SENTRY_VSC_REMOTE` environment variable.\n\nDefaults to 'origin'.", + "Version control system (VCS) remote name.\n\nThis value can also be specified via the `SENTRY_VSC_REMOTE` environment variable.\n\nDefaults to 'origin'.", }, { name: "setCommits", fullDescription: - "Option to associate the created release with its commits in Sentry. Defaults to `{ auto: true }`. Set to `false` to disable.", + "Configuration for associating the release with its commits in Sentry.\n\nSet to `false` to disable commit association.\n\nDefaults to `{ auto: true }`.", children: [ { name: "previousCommit", @@ -219,7 +221,8 @@ Use the \`debug\` option to print information about source map resolution. }, { name: "deploy", - fullDescription: "Adds deployment information to the release in Sentry.", + fullDescription: + "Configuration for adding deployment information to the release in Sentry.", children: [ { name: "env", @@ -368,32 +371,32 @@ type IncludeEntry = { }, { name: "bundleSizeOptimizations", - fullDescription: `Options related to bundle size optimizations. These options will allow you to optimize and reduce the bundle size of the Sentry SDK.`, + fullDescription: `Options for bundle size optimizations by excluding certain features.`, children: [ { name: "excludeDebugStatements", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nSetting this option to \`true\` will disable features like the SDK's \`debug\` option.`, + fullDescription: `Exclude debug statements from the bundle, thus disabling features like the SDK's \`debug\` option.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK during the build.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nDefaults to \`false\`.`, }, { name: "excludeTracing", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. \`Sentry.startTransaction()\`).`, + fullDescription: `Exclude tracing functionality from the bundle, thus disabling features like performance monitoring.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\n**Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. \`Sentry.startTransaction()\`).\n\nDefaults to \`false\`.`, }, { name: "excludeReplayShadowDom", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nThis option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay.`, + fullDescription: `Exclude Replay Shadow DOM functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nThis option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay.\n\nDefaults to \`false\`.`, }, { name: "excludeReplayIframe", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay \`iframe\` recording functionality.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\nYou can safely do this when you do not want to capture any \`iframe\` activity via Sentry Session Replay.`, + fullDescription: `Exclude Replay iFrame functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay \`iframe\` recording functionality.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nYou can safely do this when you do not want to capture any \`iframe\` activity via Sentry Session Replay.\n\nDefaults to \`false\`.`, }, { name: "excludeReplayWorker", type: "boolean", - fullDescription: `If set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree shaking being enabled in your build tooling.\n\n**Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.`, + fullDescription: `Exclude Replay worker functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\n**Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.\n\nDefaults to \`false\`.`, }, ], }, From c1441e809b7ce574512652ed1cc0f256a0d86f78 Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 8 Aug 2025 10:24:58 +0200 Subject: [PATCH 515/640] fix(debugId): Add guards for injected code to avoid errors (#783) * fix(debugId): Add guards for injected code to avoid errors * use ternaries * update snapshots --- packages/bundler-plugin-core/src/utils.ts | 9 +++++---- .../test/__snapshots__/utils.test.ts.snap | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 138f5b31d8d3..1162e9f685ef 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -314,7 +314,7 @@ export function generateGlobalInjectorCode({ }): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = `!function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; + let code = `!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; code += `e.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; @@ -324,7 +324,7 @@ export function generateGlobalInjectorCode({ code += `e.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; } - code += "}();"; + code += "}catch(e){}}();"; return code; } @@ -334,9 +334,10 @@ export function generateModuleMetadataInjectorCode(metadata: any): string { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) // We are merging the metadata objects in case modules are bundled twice with the plugin - return `!function(){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 Date: Fri, 8 Aug 2025 10:52:20 +0200 Subject: [PATCH 516/640] feat(core): Add flag for disabling sourcemaps upload (#785) --- packages/bundler-plugin-core/src/index.ts | 36 ++-- .../src/options-mapping.ts | 2 +- packages/bundler-plugin-core/src/types.ts | 7 +- .../bundler-plugin-core/test/index.test.ts | 185 +++++++++++++++++- 4 files changed, 209 insertions(+), 21 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index d382ba100554..12bb0325c081 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -123,25 +123,27 @@ export function sentryUnpluginFactory({ }, }); - if (!options.sourcemaps?.disable) { + if (options.sourcemaps?.disable !== true) { plugins.push(debugIdInjectionPlugin(logger)); - // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins - const webpack_forceExitOnBuildComplete = - typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" - ? options._experiments["forceExitOnBuildCompletion"] - : undefined; - - plugins.push( - debugIdUploadPlugin( - createDebugIdUploadFunction({ - sentryBuildPluginManager, - }), - logger, - sentryBuildPluginManager.createDependencyOnBuildArtifacts, - webpack_forceExitOnBuildComplete - ) - ); + if (options.sourcemaps?.disable !== "disable-upload") { + // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins + const webpack_forceExitOnBuildComplete = + typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" + ? options._experiments["forceExitOnBuildCompletion"] + : undefined; + + plugins.push( + debugIdUploadPlugin( + createDebugIdUploadFunction({ + sentryBuildPluginManager, + }), + logger, + sentryBuildPluginManager.createDependencyOnBuildArtifacts, + webpack_forceExitOnBuildComplete + ) + ); + } } if (options.reactComponentAnnotation) { diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 1ab3a532708d..3057c8af60ea 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -23,7 +23,7 @@ export type NormalizedOptions = { disable: boolean; sourcemaps: | { - disable?: boolean; + disable?: boolean | "disable-upload"; assets?: string | string[]; ignore?: string | string[]; rewriteSources?: RewriteSourcesHook; diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 92a5e1c8a5ef..81862a52a592 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -95,11 +95,14 @@ export interface Options { */ sourcemaps?: { /** - * If this flag is `true`, any functionality related to source maps will be disabled. + * Disables all functionality related to sourcemaps if set to `true`. + * + * If set to `"disable-upload"`, the plugin will not upload sourcemaps to Sentry, but will inject debug IDs into the build artifacts. + * This is useful if you want to manually upload sourcemaps to Sentry at a later point in time. * * @default false */ - disable?: boolean; + disable?: boolean | "disable-upload"; /** * A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry. diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 2608716932f0..f6c60aa056ab 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -1,4 +1,5 @@ -import { getDebugIdSnippet } from "../src"; +import { Compiler } from "webpack"; +import { getDebugIdSnippet, sentryUnpluginFactory } from "../src"; describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { @@ -8,3 +9,185 @@ describe("getDebugIdSnippet", () => { ); }); }); + +describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { + const mockReleaseInjectionPlugin = jest.fn((_injectionCode: string) => ({ + name: "mock-release-injection-plugin", + })); + + const mockComponentNameAnnotatePlugin = jest.fn(() => ({ + name: "mock-component-name-annotate-plugin", + })); + + const mockModuleMetadataInjectionPlugin = jest.fn((_injectionCode: string) => ({ + name: "mock-module-metadata-injection-plugin", + })); + + const mockDebugIdInjectionPlugin = jest.fn(() => ({ + name: "mock-debug-id-injection-plugin", + })); + + const mockDebugIdUploadPlugin = jest.fn(() => ({ + name: "mock-debug-id-upload-plugin", + })); + + const mockBundleSizeOptimizationsPlugin = jest.fn(() => ({ + name: "mock-bundle-size-optimizations-plugin", + })); + + const createUnpluginInstance = (): ReturnType => { + return sentryUnpluginFactory({ + releaseInjectionPlugin: mockReleaseInjectionPlugin, + componentNameAnnotatePlugin: mockComponentNameAnnotatePlugin, + moduleMetadataInjectionPlugin: mockModuleMetadataInjectionPlugin, + debugIdInjectionPlugin: mockDebugIdInjectionPlugin, + debugIdUploadPlugin: mockDebugIdUploadPlugin, + bundleSizeOptimizationsPlugin: mockBundleSizeOptimizationsPlugin, + }); + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe("when sourcemaps.disable is true", () => { + it("should not include debug ID injection or upload plugins", () => { + const unpluginInstance = createUnpluginInstance(); + + const plugins = unpluginInstance.raw( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + sourcemaps: { + disable: true, + }, + }, + { framework: "webpack", webpack: { compiler: {} as Compiler } } + ); + + const pluginNames = plugins.map((plugin) => plugin.name); + + // Should not include debug ID related plugins + expect(pluginNames).not.toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).not.toContain("mock-debug-id-upload-plugin"); + + // Should still include other core plugins + expect(pluginNames).toContain("sentry-telemetry-plugin"); + expect(pluginNames).toContain("sentry-release-management-plugin"); + expect(pluginNames).toContain("sentry-file-deletion-plugin"); + }); + }); + + describe('when sourcemaps.disable is "disable-upload"', () => { + it("should include debug ID injection plugin but not upload plugin", () => { + const unpluginInstance = createUnpluginInstance(); + + const plugins = unpluginInstance.raw( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + sourcemaps: { + disable: "disable-upload", + }, + }, + { framework: "webpack", webpack: { compiler: {} as Compiler } } + ); + + const pluginNames = plugins.map((plugin) => plugin.name); + + // Should include debug ID injection but not upload + expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).not.toContain("mock-debug-id-upload-plugin"); + + // Should still include other core plugins + expect(pluginNames).toContain("sentry-telemetry-plugin"); + expect(pluginNames).toContain("sentry-release-management-plugin"); + expect(pluginNames).toContain("sentry-file-deletion-plugin"); + }); + }); + + describe("when sourcemaps.disable is false", () => { + it("should include both debug ID injection and upload plugins", () => { + const unpluginInstance = createUnpluginInstance(); + + const plugins = unpluginInstance.raw( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + sourcemaps: { + disable: false, + }, + }, + { framework: "webpack", webpack: { compiler: {} as Compiler } } + ); + + const pluginNames = plugins.map((plugin) => plugin.name); + + // Should include both debug ID related plugins + expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-debug-id-upload-plugin"); + + // Should include other core plugins + expect(pluginNames).toContain("sentry-telemetry-plugin"); + expect(pluginNames).toContain("sentry-release-management-plugin"); + expect(pluginNames).toContain("sentry-file-deletion-plugin"); + }); + }); + + describe("when sourcemaps.disable is undefined (default)", () => { + it("should include both debug ID injection and upload plugins", () => { + const unpluginInstance = createUnpluginInstance(); + + const plugins = unpluginInstance.raw( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + // sourcemaps.disable not specified (undefined) + }, + { framework: "webpack", webpack: { compiler: {} as Compiler } } + ); + + const pluginNames = plugins.map((plugin) => plugin.name); + + // Should include both debug ID related plugins by default + expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-debug-id-upload-plugin"); + + // Should include other core plugins + expect(pluginNames).toContain("sentry-telemetry-plugin"); + expect(pluginNames).toContain("sentry-release-management-plugin"); + expect(pluginNames).toContain("sentry-file-deletion-plugin"); + }); + }); + + describe("when entire sourcemaps option is undefined", () => { + it("should include both debug ID injection and upload plugins", () => { + const unpluginInstance = createUnpluginInstance(); + + const plugins = unpluginInstance.raw( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + // sourcemaps option not specified at all + }, + { framework: "webpack", webpack: { compiler: {} as Compiler } } + ); + + const pluginNames = plugins.map((plugin) => plugin.name); + + // Should include both debug ID related plugins by default + expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-debug-id-upload-plugin"); + + // Should include other core plugins + expect(pluginNames).toContain("sentry-telemetry-plugin"); + expect(pluginNames).toContain("sentry-release-management-plugin"); + expect(pluginNames).toContain("sentry-file-deletion-plugin"); + }); + }); +}); From 9323c6549daf5fd22517c0c4f399bddaff284753 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Fri, 8 Aug 2025 11:14:22 +0200 Subject: [PATCH 517/640] feat(deps): Bump @sentry/cli to 2.51.0 (#786) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 104 +++++++++++----------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index df345186e162..1ce9036a1956 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "4.0.2", - "@sentry/cli": "^2.49.0", + "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/yarn.lock b/yarn.lock index 8dd0238df9d7..824188b632c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,50 +2726,50 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.49.0.tgz#290657e5840b360cb8ca25c8a78f8c0f15c66b03" - integrity sha512-bgowyDeFuXbjkGq1ZKqcWhmzgfBe7oKIXYWJOOps4+32QfG+YsrdNnottHS01td3bzrJq0QnHj8H12fA81DqrA== - -"@sentry/cli-linux-arm64@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.49.0.tgz#a732004d7131f7e7b44f6a64abdccc36efb35d52" - integrity sha512-dqxsDUd76aDm03fUwUOs5BR7RHLpSb2EH/B1hlWm0mFvo9uY907XxW9wDFx/qDpCdmpC0aF+lF/lOBOrG9B5Fg== - -"@sentry/cli-linux-arm@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.49.0.tgz#73719561510df3369e05e9a4898b4e43b8753e4c" - integrity sha512-RBDIjIGmNsFw+a6vAt6m3D7ROKsMEB9i3u+UuIRxk0/DyHTcfVWxnK/ScPXGILM6PxQ2XOBfOKad0mmiDHBzZA== - -"@sentry/cli-linux-i686@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.49.0.tgz#8d1bb1378251a3aa995cc4b56bd352fa12a84b66" - integrity sha512-gDAd5/vJbEhd4Waud0Cd8ZRqLEagDlOvWwNH3KB694EiHJUwzRSiTA1YUVMYGI8Z9UyEA1sKxARwm2Trv99BxA== - -"@sentry/cli-linux-x64@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.49.0.tgz#7bf58fb7005c89fdde4e1262d5ed35e23065aceb" - integrity sha512-mbohGvPNhHjUciYNXzkt9TYUebTmxeAp9v9JfLSb/Soz6fubKwEHhpRJuz1zASxVWIR4PuqkePchqN5zhcLC0A== - -"@sentry/cli-win32-arm64@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.49.0.tgz#2bf6dd911acbe3ddb02eec0afb4301bb8fb25b53" - integrity sha512-3zwvsp61EPpSuGpGdXY4JelVJmNEjoj4vn5m6EFoOtk7OUI5/VFqqR4wchjy9Hjm3Eh6MB5K+KTKXs4W2p18ng== - -"@sentry/cli-win32-i686@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.49.0.tgz#32e31472ae6c5f69e538a4061d651937fcb8f14a" - integrity sha512-2oWaNl6z0BaOCAjM1Jxequfgjod3XO6wothxow4kA8e9+43JLhgarSdpwJPgQjcVyxjygwQ3/jKPdUFh0qNOmg== - -"@sentry/cli-win32-x64@2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.49.0.tgz#86aab38cb41f885914d7c99ceaab7b6ce52c72c6" - integrity sha512-dR4ulyrA6ZT7x7cg4Rwm0tcHf4TZz5QO6t1W1jX6uJ9n/U0bOSqSFZHNf/RryiUzQE1g8LBthOYyKGMkET6T8w== - -"@sentry/cli@^2.49.0": - version "2.49.0" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.49.0.tgz#a8332ae38e9f92a0da3d939bdbce119e63450e99" - integrity sha512-99IKax3yjOaPlWJh3rAJC/R6hdmZZJ2B3ACVP8CpOYE+JzGGLyir1fvTzrdFKFLPLOq2lGC3RqWuKqU7PJUTZQ== +"@sentry/cli-darwin@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.51.0.tgz#166d85390a659d3fca9c68cf1f7ea635e5332849" + integrity sha512-8AuC8wCQ+zsx7vqwx0haobumco7B/gk0yeDuf1mr6e4YEOPcVkePCgfVFblZs2/P8CqGy9HzAbvsDrit0IeFLw== + +"@sentry/cli-linux-arm64@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.51.0.tgz#1ddb5f8272f0a5f243bd58a46615ccdb1abe00b2" + integrity sha512-QAcwC+Wns45J8XW8S6sEAdmVscFhn1Bm2qlzNXP1yUxrS7xoRHiHHTwCXtTGBAZ4UHObUc8FFDHbvYmmwJoaYw== + +"@sentry/cli-linux-arm@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.51.0.tgz#3b831e87a74cfa2ec445d7061d65921fc3ade3bd" + integrity sha512-ytomauqP+ifU+LuMFKQe22W2Kn//VwdxGz47DP5yQuItOQ8KcuLHBg4YwSScLWUpoBw1CrK8HTeuRCdrbINTPg== + +"@sentry/cli-linux-i686@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.51.0.tgz#c66fd55614b71effb3dbd5d412f3b5db73570a72" + integrity sha512-uk1hNkvDFK0penLSOdJAO/yGNb0M7bzLx3C+/NUEyfP4biP3x4AGQ8Jnr5wFy3H/YvXziWLfYh+Zh6KKB1doQg== + +"@sentry/cli-linux-x64@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.51.0.tgz#8085f3bc8906e231f98f76f6f2cc224a919d96b2" + integrity sha512-M9bOWwdu0eJEPP75hfAdwXwDKkRq8dP62boWQWSP18ooqXsvmHtXa2qsrH57Ss+JLKvC610Yu2JgRS6o+xx0ug== + +"@sentry/cli-win32-arm64@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.51.0.tgz#30f6bf6b72f049ec93484b357011110867a67d6d" + integrity sha512-kSK29xNzL46npJFt0y/2ztfuIYOvXTQnDGOb1rciUt0rikdVhZLxj+qVMTAEmH6BEUL7gpQb2QWNE7VU9Vsv4A== + +"@sentry/cli-win32-i686@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.51.0.tgz#592e7232ca4849b34db448db8c2e3e6c64ad6233" + integrity sha512-1Ol2FtZ/P4+O/Iu7C/QRYq9lDT0QAUjvtd201M+HzaAPE5W8sFn01GWZpqFnaEcP9JrMB8Hc9mm1Aj5A6zyikQ== + +"@sentry/cli-win32-x64@2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.51.0.tgz#db0742bfd120931a0449f636228ffb2416173de5" + integrity sha512-HEqyhyTZGpw5vaof+gUHNVLRs6fFPycbrLSTbDFRRfbJJGEpmAr6QFJ7IKb4NMMjZ/vB0Mw5SrykD+CiGYI8gw== + +"@sentry/cli@^2.51.0": + version "2.51.0" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.51.0.tgz#58dc7dd734d376a384453d3483b482a10eb88715" + integrity sha512-ISpRhC3dTuA+hM3ksYvSC/1TZOPs+3oOaCNViawX4gve9PZxBvter4/v2FSWrdWBEGvzjZz7CuohU5xm9UM96w== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2777,14 +2777,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.49.0" - "@sentry/cli-linux-arm" "2.49.0" - "@sentry/cli-linux-arm64" "2.49.0" - "@sentry/cli-linux-i686" "2.49.0" - "@sentry/cli-linux-x64" "2.49.0" - "@sentry/cli-win32-arm64" "2.49.0" - "@sentry/cli-win32-i686" "2.49.0" - "@sentry/cli-win32-x64" "2.49.0" + "@sentry/cli-darwin" "2.51.0" + "@sentry/cli-linux-arm" "2.51.0" + "@sentry/cli-linux-arm64" "2.51.0" + "@sentry/cli-linux-i686" "2.51.0" + "@sentry/cli-linux-x64" "2.51.0" + "@sentry/cli-win32-arm64" "2.51.0" + "@sentry/cli-win32-i686" "2.51.0" + "@sentry/cli-win32-x64" "2.51.0" "@sentry/core@7.50.0": version "7.50.0" From bab871bc4787386edcddb7953f7eb8d1697f2e86 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Fri, 8 Aug 2025 13:45:24 +0200 Subject: [PATCH 518/640] meta: Add changelog entry for 4.1.0 (#787) meta: Update changelog for 4.1.0 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e44bc30e98f..62a776ed6d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.1.0 + +- feat(deps): Bump @sentry/cli to 2.51.0 [#786](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/786) +- feat(core): Add flag for disabling sourcemaps upload [#785](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/785) +- fix(debugId): Add guards for injected code to avoid errors [#783](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/783) +- docs(options): Improve JSDoc for options [#781](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/781) +- feat(core): Expose method for injecting debug Ids from plugin manager [#784](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/784) + ## 4.0.2 - fix(core): Make `moduleMetadata` injection snippet ES5-compliant ([#774](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/774)) From d76eb7034cefdbdc50f84ff1f6748007dffd4d67 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 8 Aug 2025 11:47:22 +0000 Subject: [PATCH 519/640] release: 4.1.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 78acca77be68..26068481112d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.0.2", + "version": "4.1.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 953b872947a8..f0bad8910dd2 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.0.2", + "version": "4.1.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 1ce9036a1956..5c1158d374e8 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.0.2", + "version": "4.1.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.0.2", + "@sentry/babel-plugin-component-annotate": "4.1.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 58877c08307c..c4c794889963 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 294e1237a024..33c0332625ed 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.0.2", - "@sentry/rollup-plugin": "4.0.2", - "@sentry/vite-plugin": "4.0.2", - "@sentry/webpack-plugin": "4.0.2", + "@sentry/esbuild-plugin": "4.1.0", + "@sentry/rollup-plugin": "4.1.0", + "@sentry/vite-plugin": "4.1.0", + "@sentry/webpack-plugin": "4.1.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 8dc885c557db..519f84a405e0 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.0.2", + "version": "4.1.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/bundler-plugin-core": "4.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 4727d699b9e3..a3c705f58747 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 505eaa55f23f..a53e08c16854 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", - "@sentry/bundler-plugin-core": "4.0.2", - "@sentry/esbuild-plugin": "4.0.2", - "@sentry/rollup-plugin": "4.0.2", - "@sentry/vite-plugin": "4.0.2", - "@sentry/webpack-plugin": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/esbuild-plugin": "4.1.0", + "@sentry/rollup-plugin": "4.1.0", + "@sentry/vite-plugin": "4.1.0", + "@sentry/webpack-plugin": "4.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index e4c6911da1c8..115e62ea48c7 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/bundler-plugin-core": "4.1.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 24a40ad689d9..ad2cb5e0ef9c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.0.2", + "version": "4.1.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/bundler-plugin-core": "4.1.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index df4854b4e60b..5f79dde4ce26 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.0.2", + "version": "4.1.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 4c21233ae927..1f92ec4ee2c7 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.0.2", + "version": "4.1.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/bundler-plugin-core": "4.1.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 95918fe7db1d..155b041c6992 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.0.2", + "version": "4.1.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.0.2", + "@sentry/bundler-plugin-core": "4.1.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.0.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.0.2", + "@sentry-internal/eslint-config": "4.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1d1b4a0052d4fafa5a26cbd680d5b60dcb0999b9 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 12 Aug 2025 16:45:23 +0300 Subject: [PATCH 520/640] fix(react-native): Enhance fragment detection for indirect references (#767) --- CHANGELOG.md | 1 + .../.eslintrc.js | 3 + .../src/index.ts | 327 +++++++---- .../__snapshots__/test-plugin.test.ts.snap | 191 ++++++- .../test/test-plugin.test.ts | 530 +++++++++++++++++- 5 files changed, 915 insertions(+), 137 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62a776ed6d4b..90c016f825b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +- fix(react-native): Enhance fragment detection for indirect references ([#767](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/767)) ## 4.1.0 diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js index 42b35d843948..01f80fed18eb 100644 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ b/packages/babel-plugin-component-annotate/.eslintrc.js @@ -9,6 +9,9 @@ module.exports = { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], }, + globals: { + Set: "readonly", + }, env: { node: true, }, diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 19f0a5199da9..54163dfd515e 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -51,16 +51,46 @@ interface AnnotationOpts { ignoredComponents?: string[]; } +interface FragmentContext { + fragmentAliases: Set; + reactNamespaceAliases: Set; +} + interface AnnotationPluginPass extends PluginPass { opts: AnnotationOpts; + sentryFragmentContext?: FragmentContext; } type AnnotationPlugin = PluginObj; +// Shared context object for all JSX processing functions +interface JSXProcessingContext { + /** Whether to annotate React fragments */ + annotateFragments: boolean; + /** Babel types object */ + t: typeof Babel.types; + /** Name of the React component */ + componentName: string; + /** Source file name (optional) */ + sourceFileName?: string; + /** Array of attribute names [component, element, sourceFile] */ + attributeNames: string[]; + /** Array of component names to ignore */ + ignoredComponents: string[]; + /** Fragment context for identifying React fragments */ + fragmentContext?: FragmentContext; +} + // We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { return { visitor: { + Program: { + enter(path, state) { + const fragmentContext = collectFragmentContext(path); + state.sentryFragmentContext = fragmentContext; + }, + }, FunctionDeclaration(path, state) { if (!path.node.id || !path.node.id.name) { return; @@ -69,15 +99,8 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return; } - functionBodyPushAttributes( - state.opts["annotate-fragments"] === true, - t, - path, - path.node.id.name, - sourceFileNameFromState(state), - attributeNamesFromState(state), - state.opts.ignoredComponents ?? [] - ); + const context = createJSXProcessingContext(state, t, path.node.id.name); + functionBodyPushAttributes(context, path); }, ArrowFunctionExpression(path, state) { // We're expecting a `VariableDeclarator` like `const MyComponent =` @@ -97,15 +120,8 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return; } - functionBodyPushAttributes( - state.opts["annotate-fragments"] === true, - t, - path, - parent.id.name, - sourceFileNameFromState(state), - attributeNamesFromState(state), - state.opts.ignoredComponents ?? [] - ); + const context = createJSXProcessingContext(state, t, parent.id.name); + functionBodyPushAttributes(context, path); }, ClassDeclaration(path, state) { const name = path.get("id"); @@ -118,7 +134,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return; } - const ignoredComponents = state.opts.ignoredComponents ?? []; + const context = createJSXProcessingContext(state, t, name.node?.name || ""); render.traverse({ ReturnStatement(returnStatement) { @@ -128,15 +144,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return; } - processJSX( - state.opts["annotate-fragments"] === true, - t, - arg, - name.node && name.node.name, - sourceFileNameFromState(state), - attributeNamesFromState(state), - ignoredComponents - ); + processJSX(context, arg); }, }); }, @@ -144,14 +152,33 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): }; } -function functionBodyPushAttributes( - annotateFragments: boolean, +/** + * Creates a JSX processing context from the plugin state + */ +function createJSXProcessingContext( + state: AnnotationPluginPass, t: typeof Babel.types, - path: Babel.NodePath, - componentName: string, - sourceFileName: string | undefined, - attributeNames: string[], - ignoredComponents: string[] + componentName: string +): JSXProcessingContext { + return { + annotateFragments: state.opts["annotate-fragments"] === true, + t, + componentName, + sourceFileName: sourceFileNameFromState(state), + attributeNames: attributeNamesFromState(state), + ignoredComponents: state.opts.ignoredComponents ?? [], + fragmentContext: state.sentryFragmentContext, + }; +} + +/** + * Processes the body of a function to add Sentry tracking attributes to JSX elements. + * Handles various function body structures including direct JSX returns, conditional expressions, + * and nested JSX elements. + */ +function functionBodyPushAttributes( + context: JSXProcessingContext, + path: Babel.NodePath ): void { let jsxNode: Babel.NodePath; @@ -193,27 +220,11 @@ function functionBodyPushAttributes( if (arg.isConditionalExpression()) { const consequent = arg.get("consequent"); if (consequent.isJSXFragment() || consequent.isJSXElement()) { - processJSX( - annotateFragments, - t, - consequent, - componentName, - sourceFileName, - attributeNames, - ignoredComponents - ); + processJSX(context, consequent); } const alternate = arg.get("alternate"); if (alternate.isJSXFragment() || alternate.isJSXElement()) { - processJSX( - annotateFragments, - t, - alternate, - componentName, - sourceFileName, - attributeNames, - ignoredComponents - ); + processJSX(context, alternate); } return; } @@ -229,29 +240,26 @@ function functionBodyPushAttributes( return; } - processJSX( - annotateFragments, - t, - jsxNode, - componentName, - sourceFileName, - attributeNames, - ignoredComponents - ); + processJSX(context, jsxNode); } +/** + * Recursively processes JSX elements to add Sentry tracking attributes. + * Handles both JSX elements and fragments, applying appropriate attributes + * based on configuration and component context. + */ function processJSX( - annotateFragments: boolean, - t: typeof Babel.types, + context: JSXProcessingContext, jsxNode: Babel.NodePath, - componentName: string | null, - sourceFileName: string | undefined, - attributeNames: string[], - ignoredComponents: string[] + componentName?: string ): void { if (!jsxNode) { return; } + + // Use provided componentName or fall back to context componentName + const currentComponentName = componentName ?? context.componentName; + // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate const paths = jsxNode.get("openingElement"); @@ -259,12 +267,9 @@ function processJSX( openingElements.forEach((openingElement) => { applyAttributes( - t, + context, openingElement as Babel.NodePath, - componentName, - sourceFileName, - attributeNames, - ignoredComponents + currentComponentName ); }); @@ -275,7 +280,7 @@ function processJSX( children = [children]; } - let shouldSetComponentName = annotateFragments; + let shouldSetComponentName = context.annotateFragments; children.forEach((child) => { // Happens for some node types like plain text @@ -293,47 +298,37 @@ function processJSX( if (shouldSetComponentName && openingElement && openingElement.node) { shouldSetComponentName = false; - processJSX( - annotateFragments, - t, - child, - componentName, - sourceFileName, - attributeNames, - ignoredComponents - ); + processJSX(context, child, currentComponentName); } else { - processJSX( - annotateFragments, - t, - child, - null, - sourceFileName, - attributeNames, - ignoredComponents - ); + processJSX(context, child, ""); } }); } +/** + * Applies Sentry tracking attributes to a JSX opening element. + * Adds component name, element name, and source file attributes while + * respecting ignore lists and fragment detection. + */ function applyAttributes( - t: typeof Babel.types, + context: JSXProcessingContext, openingElement: Babel.NodePath, - componentName: string | null, - sourceFileName: string | undefined, - attributeNames: string[], - ignoredComponents: string[] + componentName: string ): void { + const { t, attributeNames, ignoredComponents, fragmentContext, sourceFileName } = context; const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; - if (isReactFragment(t, openingElement)) { - return; - } // e.g., Raw JSX text like the `A` in `

a

` if (!openingElement.node) { return; } + // Check if this is a React fragment - if so, skip attribute addition entirely + const isFragment = isReactFragment(t, openingElement, fragmentContext); + if (isFragment) { + return; + } + if (!openingElement.node.attributes) openingElement.node.attributes = []; const elementName = getPathName(t, openingElement); @@ -343,15 +338,11 @@ function applyAttributes( // Add a stable attribute for the element name but only for non-DOM names let isAnIgnoredElement = false; - if ( - !isAnIgnoredComponent && - !hasAttributeWithName(openingElement, componentAttributeName) && - (componentAttributeName !== elementAttributeName || !componentName) - ) { + if (!isAnIgnoredComponent && !hasAttributeWithName(openingElement, elementAttributeName)) { if (DEFAULT_IGNORED_ELEMENTS.includes(elementName)) { isAnIgnoredElement = true; } else { - // TODO: Is it possible to avoid this null check? + // Always add element attribute for non-ignored elements if (elementAttributeName) { openingElement.node.attributes.push( t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)) @@ -366,7 +357,6 @@ function applyAttributes( !isAnIgnoredComponent && !hasAttributeWithName(openingElement, componentAttributeName) ) { - // TODO: Is it possible to avoid this null check? if (componentAttributeName) { openingElement.node.attributes.push( t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) @@ -374,14 +364,16 @@ function applyAttributes( } } - // Add a stable attribute for the source file name (absent for non-root elements) + // Add a stable attribute for the source file name + // Updated condition: add source file for elements that have either: + // 1. A component name (root elements), OR + // 2. An element name that's not ignored (child elements) if ( sourceFileName && !isAnIgnoredComponent && - (componentName || isAnIgnoredElement === false) && + (componentName || !isAnIgnoredElement) && !hasAttributeWithName(openingElement, sourceFileAttributeName) ) { - // TODO: Is it possible to avoid this null check? if (sourceFileAttributeName) { openingElement.node.attributes.push( t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)) @@ -443,18 +435,110 @@ function attributeNamesFromState(state: AnnotationPluginPass): [string, string, return [webComponentName, webElementName, webSourceFileName]; } -function isReactFragment(t: typeof Babel.types, openingElement: Babel.NodePath): boolean { +function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { + const fragmentAliases = new Set(); + const reactNamespaceAliases = new Set(["React"]); // Default React namespace + + programPath.traverse({ + ImportDeclaration(importPath) { + const source = importPath.node.source.value; + + // Handle React imports + if (source === "react" || source === "React") { + importPath.node.specifiers.forEach((spec) => { + if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { + // Detect aliased React.Fragment imports (e.g., `Fragment as F`) + // so we can later identify as a fragment in JSX. + if (spec.imported.name === "Fragment") { + fragmentAliases.add(spec.local.name); + } + } else if ( + spec.type === "ImportDefaultSpecifier" || + spec.type === "ImportNamespaceSpecifier" + ) { + // import React from 'react' -> React OR + // import * as React from 'react' -> React + reactNamespaceAliases.add(spec.local.name); + } + }); + } + }, + + // Handle simple variable assignments only (avoid complex cases) + VariableDeclarator(varPath) { + if (varPath.node.init) { + const init = varPath.node.init; + + // Handle identifier assignments: const MyFragment = Fragment + if (varPath.node.id.type === "Identifier") { + // Handle: const MyFragment = Fragment (only if Fragment is a known alias) + if (init.type === "Identifier" && fragmentAliases.has(init.name)) { + fragmentAliases.add(varPath.node.id.name); + } + + // Handle: const MyFragment = React.Fragment (only for known React namespaces) + if ( + init.type === "MemberExpression" && + init.object.type === "Identifier" && + init.property.type === "Identifier" && + init.property.name === "Fragment" && + reactNamespaceAliases.has(init.object.name) + ) { + fragmentAliases.add(varPath.node.id.name); + } + } + + // Handle destructuring assignments: const { Fragment } = React + if (varPath.node.id.type === "ObjectPattern") { + if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { + const properties = varPath.node.id.properties; + + for (const prop of properties) { + if ( + prop.type === "ObjectProperty" && + prop.key && + prop.key.type === "Identifier" && + prop.value && + prop.value.type === "Identifier" && + prop.key.name === "Fragment" + ) { + fragmentAliases.add(prop.value.name); + } + } + } + } + } + }, + }); + + return { fragmentAliases, reactNamespaceAliases }; +} + +function isReactFragment( + t: typeof Babel.types, + openingElement: Babel.NodePath, + context?: FragmentContext // Add this optional parameter +): boolean { + // Handle JSX fragments (<>) if (openingElement.isJSXFragment()) { return true; } const elementName = getPathName(t, openingElement); + // Direct fragment references if (elementName === "Fragment" || elementName === "React.Fragment") { return true; } // TODO: All these objects are typed as unknown, maybe an oversight in Babel types? + + // Check if the element name is a known fragment alias + if (context && elementName && context.fragmentAliases.has(elementName)) { + return true; + } + + // Handle JSXMemberExpression if ( openingElement.node && "name" in openingElement.node && @@ -463,10 +547,6 @@ function isReactFragment(t: typeof Babel.types, openingElement: Babel.NodePath): "type" in openingElement.node.name && openingElement.node.name.type === "JSXMemberExpression" ) { - if (!("name" in openingElement.node)) { - return false; - } - const nodeName = openingElement.node.name; if (typeof nodeName !== "object" || !nodeName) { return false; @@ -487,9 +567,26 @@ function isReactFragment(t: typeof Babel.types, openingElement: Babel.NodePath): const objectName = "name" in nodeNameObject && nodeNameObject.name; const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + // React.Fragment check if (objectName === "React" && propertyName === "Fragment") { return true; } + + // Enhanced checks using context + if (context) { + // Check React.Fragment pattern with known React namespaces + if ( + context.reactNamespaceAliases.has(objectName as string) && + propertyName === "Fragment" + ) { + return true; + } + + // Check MyFragment.Fragment pattern + if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { + return true; + } + } } } 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 af43b6c00829..8a2951dca0a8 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,5 +1,189 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Fragment Detection combines all fragment patterns correctly 1`] = ` +"import React, { Fragment as ImportedF } from 'react'; +import * as MyReact from 'react'; +const { + Fragment: DestructuredF +} = React; +const { + Fragment +} = MyReact; +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\\"))); +}" +`; + +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)\\")); +} +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)\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +exports[`Fragment Detection handles multiple destructuring patterns in one file 1`] = ` +"import React from 'react'; +import * as MyReact from 'react'; +const { + Fragment +} = React; +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\\"))); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +exports[`Fragment Detection ignores Fragment from mixed destructuring 1`] = ` +"import React from 'react'; +const { + Fragment, + createElement, + useState +} = React; +export default function TestComponent() { + 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`] = ` +"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\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + +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\\"))); +}" +`; + +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\\")); +}" +`; + +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\\")); +}" +`; + exports[`arrow snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { @@ -247,13 +431,6 @@ export default function componentName() { }" `; -exports[`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\\")); -}" -`; - exports[`ignores components with member expressions when in ignoredComponents 1`] = ` "import React from 'react'; import { Tab } from '@headlessui/react'; 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 7d6a73e82edf..a453da779e81 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -1256,27 +1256,527 @@ export default function TestComponent() { expect(result?.code).toMatchSnapshot(); }); -it("ignores React.Fragment with member expression handling", () => { - const result = transform( - `import React from 'react'; +describe("Fragment Detection", () => { + it("ignores React.Fragment with member expression handling", () => { + const result = transform( + `import React from 'react'; + + export default function TestComponent() { + return ( + +
Content
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(React.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores JSX fragments (<>)", () => { + const result = transform( + `export default function TestComponent() { + return ( + <> +
Content in JSX fragment
+ More content + + ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(React.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment imported with alias", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
Content in aliased fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(F"); + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment assigned to variable", () => { + const result = transform( + `import { Fragment } from 'react'; + +const MyFragment = Fragment; + +export default function TestComponent() { + return ( + +
Content in variable fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyFragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment with React namespace alias", () => { + const result = transform( + `import * as MyReact from 'react'; + +export default function TestComponent() { + return ( + +
Content in namespaced fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyReact.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores React default import with Fragment", () => { + const result = transform( + `import MyReact from 'react'; + +export default function TestComponent() { + return ( + +
Content in default import fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyReact.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores multiple fragment patterns in same file", () => { + const result = transform( + `import React, { Fragment } from 'react'; + + const MyFragment = Fragment; + + export default function TestComponent() { + return ( +
+ <> +
JSX Fragment content
+ + + + Direct Fragment content + + + +

Variable Fragment content

+
+ + +

React.Fragment content

+
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("handles complex variable assignment chains", () => { + const result = transform( + `import { Fragment } from 'react'; + + const MyFragment = Fragment; + const AnotherFragment = MyFragment; + + export default function TestComponent() { + return ( + +
Content in chained fragment
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AnotherFragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("works with annotate-fragments option disabled", () => { + const result = transform( + `import { Fragment as F } from 'react'; export default function TestComponent() { return ( - +
Content
-
+
); }`, - { - filename: "/filename-test.js", - configFile: false, - presets: ["@babel/preset-react"], - plugins: [plugin], - } + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": false }]], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("works with annotate-fragments option enabled", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
Content
+
); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { "annotate-fragments": true }]], + } + ); - // React.Fragment should be ignored by default - expect(result?.code).toContain("React.createElement(React.Fragment"); - expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); - expect(result?.code).toMatchSnapshot(); + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment from React destructuring", () => { + const result = transform( + `import React from 'react'; + +const { Fragment } = React; + +export default function TestComponent() { + return ( + +
Content in destructured fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment with destructuring alias", () => { + const result = transform( + `import React from 'react'; + +const { Fragment: MyFragment } = React; + +export default function TestComponent() { + return ( + +
Content in aliased destructured fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("ignores Fragment from mixed destructuring", () => { + const result = transform( + `import React from 'react'; + +const { Fragment, createElement, useState } = React; + +export default function TestComponent() { + return ( + +
Content with other destructured items
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("handles destructuring from aliased React imports", () => { + const result = transform( + `import MyReact from 'react'; + +const { Fragment } = MyReact; + +export default function TestComponent() { + return ( + +
Content from aliased React destructuring
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("handles destructuring from namespace imports", () => { + const result = transform( + `import * as ReactLib from 'react'; + +const { Fragment: F } = ReactLib; + +export default function TestComponent() { + return ( + +
Content from namespace destructuring
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("handles multiple destructuring patterns in one file", () => { + const result = transform( + `import React from 'react'; +import * as MyReact from 'react'; + +const { Fragment } = React; +const { Fragment: AliasedFrag } = MyReact; + +export default function TestComponent() { + return ( +
+ + Regular destructured + + + +

Aliased destructured

+
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AliasedFrag"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("combines all fragment patterns correctly", () => { + const result = transform( + `import React, { Fragment as ImportedF } from 'react'; + import * as MyReact from 'react'; + + const { Fragment: DestructuredF } = React; + const { Fragment } = MyReact; + const AssignedF = Fragment; // ← This uses the destructured Fragment from MyReact + + export default function TestComponent() { + return ( +
+ {/* JSX Fragment */} + <> + JSX Fragment content + + + {/* Imported alias */} + + Imported alias content + + + {/* Destructured */} + + Destructured content + + + {/* Destructured from namespace */} + + Namespace destructured content + + + {/* Variable assigned */} + + Variable assigned content + + + {/* React.Fragment */} + + React.Fragment content + + + {/* Namespace Fragment */} + + Namespace Fragment content + +
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "ImportedF"'); + expect(result?.code).not.toContain('"data-sentry-element": "DestructuredF"'); + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AssignedF"'); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + expect(result?.code).toMatchSnapshot(); + }); + + it("handles Fragment aliased correctly when used by other non-Fragment components in a different scope", () => { + const result = transform( + `import { Fragment as OriginalF } from 'react'; +import { OtherComponent } from 'some-library'; + +function TestComponent() { + const F = OriginalF; + + // Use Fragment alias - should be ignored + return ( + +
This should NOT have data-sentry-element (Fragment)
+
+ ); +} + +function AnotherComponent() { + // Different component with same alias name in different function scope + const F = OtherComponent; + + return ( + +
This SHOULD have data-sentry-element (not Fragment)
+
+ ); +} +`, + { + filename: "/variable-assignment-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchSnapshot(); + }); }); From 36b1baf3c45d4d44c00d546eca38274c8ca718de Mon Sep 17 00:00:00 2001 From: Elliana May Date: Tue, 12 Aug 2025 21:50:43 +0800 Subject: [PATCH 521/640] docs: Fix changelog links (#788) --- CHANGELOG.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90c016f825b2..ea353dc454a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,11 @@ ## 4.1.0 -- feat(deps): Bump @sentry/cli to 2.51.0 [#786](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/786) -- feat(core): Add flag for disabling sourcemaps upload [#785](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/785) -- fix(debugId): Add guards for injected code to avoid errors [#783](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/783) -- docs(options): Improve JSDoc for options [#781](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/781) -- feat(core): Expose method for injecting debug Ids from plugin manager [#784](https://github.com/gestsentry/sentry-javascript-bundler-plugins/pull/784) +- feat(deps): Bump @sentry/cli to 2.51.0 [#786](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/786) +- feat(core): Add flag for disabling sourcemaps upload [#785](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/785) +- fix(debugId): Add guards for injected code to avoid errors [#783](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/783) +- docs(options): Improve JSDoc for options [#781](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/781) +- feat(core): Expose method for injecting debug Ids from plugin manager [#784](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/784) ## 4.0.2 From 80e5ea34df3eb9a73afc03906d7ade4e9ab774d8 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 12 Aug 2025 17:03:44 +0200 Subject: [PATCH 522/640] meta: Changelog entry for 4.1.1 (#790) --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea353dc454a3..bd45a76d67e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ ## Unreleased - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott + +## 4.1.1 + - fix(react-native): Enhance fragment detection for indirect references ([#767](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/767)) ## 4.1.0 From 27dff6603b40540335c6b18f5ece2e4fc9cee6d0 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 12 Aug 2025 15:05:13 +0000 Subject: [PATCH 523/640] release: 4.1.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 26068481112d..5fc9e5376080 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.1.0", + "version": "4.1.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index f0bad8910dd2..a07d81222cbd 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.1.0", + "version": "4.1.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 5c1158d374e8..8f6122d56d72 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.1.0", + "version": "4.1.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.1.0", + "@sentry/babel-plugin-component-annotate": "4.1.1", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c4c794889963..c368d9819bb0 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 33c0332625ed..64e859ce2b3f 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.1.0", - "@sentry/rollup-plugin": "4.1.0", - "@sentry/vite-plugin": "4.1.0", - "@sentry/webpack-plugin": "4.1.0", + "@sentry/esbuild-plugin": "4.1.1", + "@sentry/rollup-plugin": "4.1.1", + "@sentry/vite-plugin": "4.1.1", + "@sentry/webpack-plugin": "4.1.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 519f84a405e0..513ca8ced362 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.1.0", + "version": "4.1.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index a3c705f58747..e1bc963fcf27 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index a53e08c16854..5a0afd23f439 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", - "@sentry/bundler-plugin-core": "4.1.0", - "@sentry/esbuild-plugin": "4.1.0", - "@sentry/rollup-plugin": "4.1.0", - "@sentry/vite-plugin": "4.1.0", - "@sentry/webpack-plugin": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/esbuild-plugin": "4.1.1", + "@sentry/rollup-plugin": "4.1.1", + "@sentry/vite-plugin": "4.1.1", + "@sentry/webpack-plugin": "4.1.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 115e62ea48c7..9110a85749ac 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ad2cb5e0ef9c..733ebd40f495 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.1.0", + "version": "4.1.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5f79dde4ce26..aeebd6c4b050 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 1f92ec4ee2c7..e3f67848f1b9 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.1.0", + "version": "4.1.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 155b041c6992..32dd5faa4d13 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.1.0", + "version": "4.1.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.0", + "@sentry-internal/eslint-config": "4.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From cc4d21dd2033c2840bc597a9ce9773fae3ed6479 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Mon, 25 Aug 2025 12:06:23 +0100 Subject: [PATCH 524/640] perf: use premove for build clean (#792) rimraf has grown rather large these days. We can now use `premove`, a much smaller utility. Alternatively, we can just `fs.rm` in a script if we don't care for a CLI anymore. --- .../package.json | 8 +- packages/bundler-plugin-core/package.json | 8 +- packages/e2e-tests/package.json | 5 +- packages/esbuild-plugin/package.json | 8 +- packages/eslint-configs/package.json | 5 +- packages/integration-tests/package.json | 7 +- packages/playground/package.json | 7 +- packages/rollup-plugin/package.json | 8 +- packages/vite-plugin/package.json | 8 +- packages/webpack-plugin/package.json | 8 +- yarn.lock | 81 +++++++++++++++++-- 11 files changed, 116 insertions(+), 37 deletions(-) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a07d81222cbd..fb488f50f858 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -32,7 +32,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -44,8 +44,8 @@ "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test" }, @@ -65,7 +65,7 @@ "@types/uuid": "^9.0.1", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.75.7", "ts-node": "^10.9.1", "typescript": "^4.7.4" diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8f6122d56d72..d81bd17c60f7 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -33,7 +33,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -45,8 +45,8 @@ "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test", "fix": "eslint ./src ./test --format stylish --fix" @@ -79,7 +79,7 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.75.7", "typescript": "^4.7.4" }, diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 64e859ce2b3f..5cca7016e26c 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -10,8 +10,8 @@ "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./scenarios/*/out", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./scenarios/*/out", + "clean:deps": "premove node_modules", "lint": "eslint ." }, "dependencies": { @@ -33,6 +33,7 @@ "eslint": "^8.18.0", "glob": "8.0.3", "jest": "^28.1.3", + "premove": "^4.0.0", "rollup": "2.77.0", "ts-node": "^10.9.1", "vite": "3.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 513ca8ced362..79fd80ff815d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -29,7 +29,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -41,8 +41,8 @@ "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" @@ -67,7 +67,7 @@ "@types/uuid": "^9.0.1", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.75.7", "ts-node": "^10.9.1", "typescript": "^4.7.4" diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index e1bc963fcf27..53db86f83784 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -15,11 +15,12 @@ "eslint-plugin-react-hooks": "^4.4.0" }, "devDependencies": { - "eslint": "^8.14.0" + "eslint": "^8.14.0", + "premove": "^4.0.0" }, "scripts": { "clean:all": "run-s clean:deps", - "clean:deps": "rimraf node_modules" + "clean:deps": "premove node_modules" }, "volta": { "extends": "../../package.json" diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5a0afd23f439..df2bea1cb339 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -11,8 +11,8 @@ "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./fixtures/*/out", - "clean:deps": "rimraf node_modules" + "clean:build": "premove ./fixtures/*/out", + "clean:deps": "premove node_modules" }, "dependencies": { "@babel/preset-react": "^7.23.3", @@ -44,6 +44,9 @@ "webpack4": "npm:webpack@^4", "webpack5": "npm:webpack@5.74.0" }, + "devDependencies": { + "premove": "^4.0.0" + }, "volta": { "extends": "../../package.json" } diff --git a/packages/playground/package.json b/packages/playground/package.json index 9110a85749ac..743818565060 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -13,8 +13,8 @@ "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js", "clean": "run-s clean:build", "clean:all": "run-p clean:deps", - "clean:build": "rimraf ./out", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./out", + "clean:deps": "premove node_modules", "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { @@ -31,6 +31,9 @@ "webpack4": "npm:webpack@4.46.0", "webpack5": "npm:webpack@5" }, + "devDependencies": { + "premove": "^4.0.0" + }, "volta": { "extends": "../../package.json" } diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 733ebd40f495..cc4283dbbe4f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -30,7 +30,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -42,8 +42,8 @@ "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" @@ -69,7 +69,7 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.75.7", "ts-node": "^10.9.1", "typescript": "^4.7.4" diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e3f67848f1b9..2d3aa56c3a32 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -29,7 +29,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -41,8 +41,8 @@ "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" @@ -65,7 +65,7 @@ "@types/node": "^18.6.3", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.75.7", "ts-node": "^10.9.1", "typescript": "^4.7.4" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 32dd5faa4d13..b081e55c87b3 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -34,7 +34,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "rimraf ./dist && run-p build:rollup build:types", + "build": "premove ./dist && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rollup --config rollup.config.js", "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", @@ -46,8 +46,8 @@ "build:npm": "npm pack", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", - "clean:build": "rimraf ./dist *.tgz", - "clean:deps": "rimraf node_modules", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", "test": "jest", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" @@ -73,7 +73,7 @@ "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", "jest": "^28.1.1", - "rimraf": "^3.0.2", + "premove": "^4.0.0", "rollup": "2.79.2", "ts-node": "^10.9.1", "typescript": "^4.7.4", diff --git a/yarn.lock b/yarn.lock index 824188b632c7..85d0a46bbcc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3334,7 +3334,19 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@npm:@types/webpack@^4": +"@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" integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== @@ -10846,6 +10858,11 @@ prelude-ls@~1.1.2: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +premove@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz#813a87462dca591946e60ebd97c95092f0743aee" + integrity sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ== + prettier@^2.7.1: version "2.8.8" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -12072,7 +12089,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12154,7 +12180,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13086,7 +13119,7 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@npm:webpack@^4": +"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== @@ -13175,6 +13208,35 @@ webpack-virtual-modules@^0.5.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +"webpack@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== + dependencies: + "@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" + 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" + whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13272,7 +13334,16 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 84cbb90e577759aa8105866d7a9502b9ae21c180 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 27 Aug 2025 21:20:44 +0200 Subject: [PATCH 525/640] feat(core): Add `prepareArtifacts` option for uploading sourcemaps (#794) --- .../src/build-plugin-manager.ts | 193 ++++++++++-------- .../test/build-plugin-manager.test.ts | 105 +++++++++- 2 files changed, 214 insertions(+), 84 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 4f5e5193c8af..8aa01e8a96c3 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -77,7 +77,10 @@ export type SentryBuildPluginManager = { /** * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded */ - uploadSourcemaps(buildArtifactPaths: string[]): Promise; + uploadSourcemaps( + buildArtifactPaths: string[], + opts?: { prepareArtifacts?: boolean } + ): Promise; /** * Will delete artifacts based on the passed `sourcemaps.filesToDeleteAfterUpload` option. @@ -546,9 +549,16 @@ export function createSentryBuildPluginManager( }, /** - * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded + * Uploads sourcemaps using the "Debug ID" method. + * + * By default, this prepares bundles in a temporary folder before uploading. You can opt into an + * in-place, direct upload path by setting `prepareArtifacts` to `false`. If `prepareArtifacts` is set to + * `false`, no preparation (e.g. adding `//# debugId=...` and writing adjusted source maps) is performed and no temp folder is used. + * + * @param buildArtifactPaths - The paths of the build artifacts to upload + * @param opts - Optional flags to control temp folder usage and preparation */ - async uploadSourcemaps(buildArtifactPaths: string[]) { + async uploadSourcemaps(buildArtifactPaths: string[], opts?: { prepareArtifacts?: boolean }) { if (!canUploadSourceMaps(options, logger, isDevMode)) { return; } @@ -557,6 +567,9 @@ export function createSentryBuildPluginManager( // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, async () => { + // If we're not using a temp folder, we must not prepare artifacts in-place (to avoid mutating user files) + const shouldPrepare = opts?.prepareArtifacts ?? true; + let folderToCleanUp: string | undefined; // It is possible that this writeBundle hook (which calls this function) is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) @@ -564,19 +577,6 @@ export function createSentryBuildPluginManager( const freeUploadDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); try { - const tmpUploadFolder = await startSpan( - { name: "mkdtemp", scope: sentryScope }, - async () => { - return ( - process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"] || - (await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - )) - ); - } - ); - - folderToCleanUp = tmpUploadFolder; const assets = options.sourcemaps?.assets; let globAssets: string | string[]; @@ -594,14 +594,17 @@ export function createSentryBuildPluginManager( async () => await glob(globAssets, { absolute: true, - nodir: true, + // If we do not use a temp folder, we allow directories and files; CLI will traverse as needed when given paths. + nodir: shouldPrepare, ignore: options.sourcemaps?.ignore, }) ); - const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { - return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); - }); + const debugIdChunkFilePaths = shouldPrepare + ? globResult.filter((debugIdChunkFilePath) => { + return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); + }) + : globResult; // The order of the files output by glob() is not deterministic // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent @@ -616,75 +619,101 @@ export function createSentryBuildPluginManager( "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." ); } else { - const numUploadedFiles = await startSpan( - { name: "prepare-bundles", scope: sentryScope }, - async (prepBundlesSpan) => { - // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so - // instead we do it with a maximum of 16 concurrent workers - const preparationTasks = debugIdChunkFilePaths.map( - (chunkFilePath, chunkIndex) => async () => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - tmpUploadFolder, - chunkIndex, - logger, - options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook, - options.sourcemaps?.resolveSourceMap - ); - } - ); - const workers: Promise[] = []; - const worker = async (): Promise => { - while (preparationTasks.length > 0) { - const task = preparationTasks.shift(); - if (task) { - await task(); + if (!shouldPrepare) { + // Direct CLI upload from existing artifact paths (no preparation or temp copies) + await startSpan({ name: "upload", scope: sentryScope }, async () => { + const cliInstance = createCliInstance(options); + await cliInstance.releases.uploadSourceMaps(options.release.name ?? "undefined", { + include: [ + { + paths: debugIdChunkFilePaths, + rewrite: false, + dist: options.release.dist, + }, + ], + live: "rejectOnError", + }); + }); + + logger.info("Successfully uploaded source maps to Sentry"); + } else { + const tmpUploadFolder = await startSpan( + { name: "mkdtemp", scope: sentryScope }, + async () => { + return ( + process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"] || + (await fs.promises.mkdtemp( + path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") + )) + ); + } + ); + folderToCleanUp = tmpUploadFolder; + + // Prepare into temp folder, then upload + await startSpan( + { name: "prepare-bundles", scope: sentryScope }, + async (prepBundlesSpan) => { + // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so + // instead we do it with a maximum of 16 concurrent workers + const preparationTasks = debugIdChunkFilePaths.map( + (chunkFilePath, chunkIndex) => async () => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + tmpUploadFolder, + chunkIndex, + logger, + options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook, + options.sourcemaps?.resolveSourceMap + ); + } + ); + const workers: Promise[] = []; + const worker = async (): Promise => { + while (preparationTasks.length > 0) { + const task = preparationTasks.shift(); + if (task) { + await task(); + } } + }; + for (let workerIndex = 0; workerIndex < 16; workerIndex++) { + workers.push(worker()); } - }; - for (let workerIndex = 0; workerIndex < 16; workerIndex++) { - workers.push(worker()); - } - await Promise.all(workers); + await Promise.all(workers); - const files = await fs.promises.readdir(tmpUploadFolder); - const stats = files.map((file) => - fs.promises.stat(path.join(tmpUploadFolder, file)) - ); - const uploadSize = (await Promise.all(stats)).reduce( - (accumulator, { size }) => accumulator + size, - 0 - ); - - setMeasurement("files", files.length, "none", prepBundlesSpan); - setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); - - await startSpan({ name: "upload", scope: sentryScope }, async () => { - const cliInstance = createCliInstance(options); - - await cliInstance.releases.uploadSourceMaps( - options.release.name ?? "undefined", // unfortunately this needs a value for now but it will not matter since debug IDs overpower releases anyhow - { - include: [ - { - paths: [tmpUploadFolder], - rewrite: false, - dist: options.release.dist, - }, - ], - // We want this promise to throw if the sourcemaps fail to upload so that we know about it. - // see: https://github.com/getsentry/sentry-cli/pull/2605 - live: "rejectOnError", - } + const files = await fs.promises.readdir(tmpUploadFolder); + const stats = files.map((file) => + fs.promises.stat(path.join(tmpUploadFolder, file)) + ); + const uploadSize = (await Promise.all(stats)).reduce( + (accumulator, { size }) => accumulator + size, + 0 ); - }); - return files.length; - } - ); + setMeasurement("files", files.length, "none", prepBundlesSpan); + setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); + + await startSpan({ name: "upload", scope: sentryScope }, async () => { + const cliInstance = createCliInstance(options); + await cliInstance.releases.uploadSourceMaps( + options.release.name ?? "undefined", + { + include: [ + { + paths: [tmpUploadFolder], + rewrite: false, + dist: options.release.dist, + }, + ], + live: "rejectOnError", + } + ); + }); + } + ); - if (numUploadedFiles > 0) { logger.info("Successfully uploaded source maps to Sentry"); } } 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 47ec645f669e..0a9bcedf5dd2 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -1,25 +1,46 @@ import { createSentryBuildPluginManager } from "../src/build-plugin-manager"; +import fs from "fs"; +import { glob } from "glob"; +import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; const mockCliExecute = jest.fn(); +const mockCliUploadSourceMaps = jest.fn(); + jest.mock("@sentry/cli", () => { return jest.fn().mockImplementation(() => ({ execute: mockCliExecute, + releases: { + uploadSourceMaps: mockCliUploadSourceMaps, + new: jest.fn(), + finalize: jest.fn(), + setCommits: jest.fn(), + newDeploy: jest.fn(), + }, })); }); // 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(), })); // 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"), - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return - startSpan: jest.fn((options, callback) => callback()), + startSpan: jest.fn((options: unknown, callback: () => unknown) => callback()), })); +jest.mock("glob"); +jest.mock("../src/debug-id-upload"); + +const mockGlob = glob as jest.MockedFunction; +const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as jest.MockedFunction< + typeof prepareBundleForDebugIdUpload +>; + describe("createSentryBuildPluginManager", () => { beforeEach(() => { jest.clearAllMocks(); @@ -73,6 +94,86 @@ describe("createSentryBuildPluginManager", () => { }); }); + describe("uploadSourcemaps", () => { + it("uploads in-place when prepareArtifacts is false", async () => { + mockCliUploadSourceMaps.mockResolvedValue(undefined); + + // Return a mixture of files/dirs; in-place path should pass through as-is + mockGlob.mockResolvedValue(["/app/dist/a.js", "/app/dist/dir", "/app/dist/a.js.map"]); + + const manager = createSentryBuildPluginManager( + { + authToken: "t", + org: "o", + project: "p", + release: { name: "some-release-name", dist: "1" }, + sourcemaps: { assets: ["/app/dist/**/*"] }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.uploadSourcemaps(["/unused"], { prepareArtifacts: false }); + + expect(mockCliUploadSourceMaps).toHaveBeenCalledTimes(1); + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith( + "some-release-name", + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.objectContaining({ + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + include: expect.arrayContaining([ + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.objectContaining({ + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + paths: expect.arrayContaining([ + "/app/dist/a.js", + "/app/dist/dir", + "/app/dist/a.js.map", + ]), + rewrite: false, + dist: "1", + }), + ]), + live: "rejectOnError", + }) + ); + expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); + }); + + it("prepares into temp folder and uploads when prepareArtifacts is true (default)", async () => { + mockCliUploadSourceMaps.mockResolvedValue(undefined); + + 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); + + mockPrepareBundleForDebugIdUpload.mockResolvedValue(undefined); + + const manager = createSentryBuildPluginManager( + { + authToken: "t", + org: "o", + project: "p", + release: { name: "some-release-name", dist: "1" }, + sourcemaps: { assets: ["/app/dist/**/*"] }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.uploadSourcemaps(["/unused"]); + + // Should call prepare for each JS chunk discovered by glob + expect(mockPrepareBundleForDebugIdUpload).toHaveBeenCalled(); + // Should upload from temp folder + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith("some-release-name", { + include: [{ paths: ["/tmp/sentry-upload-xyz"], rewrite: false, dist: "1" }], + live: "rejectOnError", + }); + }); + }); + describe("injectDebugIds", () => { it("should call CLI with correct sourcemaps inject command", async () => { mockCliExecute.mockResolvedValue(undefined); From da6d1437d2d2543114376c69b8b3e30a1170c037 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 28 Aug 2025 14:08:17 +0200 Subject: [PATCH 526/640] meta: Add Changelog entry for 4.2.0 (#795) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd45a76d67e3..5783feec5941 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.2.0 + +- feat(core): Add `prepareArtifacts` option for uploading sourcemaps ([#794](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/794)) +- perf: use premove for build clean ([#792](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/792)) + ## 4.1.1 - fix(react-native): Enhance fragment detection for indirect references ([#767](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/767)) From 00ae21f72b49d6d3a0cc8a16bda636fd06e414de Mon Sep 17 00:00:00 2001 From: Amirali Lotfi Date: Thu, 28 Aug 2025 17:07:34 +0330 Subject: [PATCH 527/640] fix(core): Forward headers option to sentry-cli (#797) --- packages/bundler-plugin-core/src/build-plugin-manager.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 8aa01e8a96c3..65b395f08b05 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -100,6 +100,7 @@ function createCliInstance(options: NormalizedOptions): SentryCli { vcsRemote: options.release.vcsRemote, headers: { ...getTraceData(), + ...options.headers, }, }); } From 6e04682dcf22ffd7ad0368cd63bcffb355c18aa1 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 28 Aug 2025 16:57:22 +0200 Subject: [PATCH 528/640] meta: Update changelog entry for 4.2.0 (#798) --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5783feec5941..1181fc40abe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ - feat(core): Add `prepareArtifacts` option for uploading sourcemaps ([#794](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/794)) - perf: use premove for build clean ([#792](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/792)) +- fix(core): Forward headers option to sentry-cli ([#797](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/797)) + +Work in this release contributed by @liAmirali. Thank you for your contribution! ## 4.1.1 From 5d36df95fafd16f34e372255a9c858204f5578e5 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 28 Aug 2025 15:53:26 +0000 Subject: [PATCH 529/640] release: 4.2.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 5fc9e5376080..fdac95f6a611 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.1.1", + "version": "4.2.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index fb488f50f858..b1685337734b 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.1.1", + "version": "4.2.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index d81bd17c60f7..9b84e4fc8c1b 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.1.1", + "version": "4.2.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.1.1", + "@sentry/babel-plugin-component-annotate": "4.2.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c368d9819bb0..2a4d2fa0157e 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5cca7016e26c..5d553f297b3e 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.1.1", - "@sentry/rollup-plugin": "4.1.1", - "@sentry/vite-plugin": "4.1.1", - "@sentry/webpack-plugin": "4.1.1", + "@sentry/esbuild-plugin": "4.2.0", + "@sentry/rollup-plugin": "4.2.0", + "@sentry/vite-plugin": "4.2.0", + "@sentry/webpack-plugin": "4.2.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 79fd80ff815d..abb30e97013b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.1.1", + "version": "4.2.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/bundler-plugin-core": "4.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 53db86f83784..03b53588e7ed 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index df2bea1cb339..522f08713015 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", - "@sentry/bundler-plugin-core": "4.1.1", - "@sentry/esbuild-plugin": "4.1.1", - "@sentry/rollup-plugin": "4.1.1", - "@sentry/vite-plugin": "4.1.1", - "@sentry/webpack-plugin": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/esbuild-plugin": "4.2.0", + "@sentry/rollup-plugin": "4.2.0", + "@sentry/vite-plugin": "4.2.0", + "@sentry/webpack-plugin": "4.2.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 743818565060..5bd08ebca083 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/bundler-plugin-core": "4.2.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index cc4283dbbe4f..424e2d587d70 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.1.1", + "version": "4.2.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/bundler-plugin-core": "4.2.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index aeebd6c4b050..e414cae0b228 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 2d3aa56c3a32..767e696d1345 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.1.1", + "version": "4.2.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/bundler-plugin-core": "4.2.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b081e55c87b3..e545d0bbf0a6 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.1.1", + "version": "4.2.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.1.1", + "@sentry/bundler-plugin-core": "4.2.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.1.1", + "@sentry-internal/eslint-config": "4.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 07c25ceb80233abe024595e9546f73315b047611 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 2 Sep 2025 16:45:13 +0200 Subject: [PATCH 530/640] feat(core): No asset globbing for direct upload (#800) --- .../src/build-plugin-manager.ts | 127 ++++++++++-------- .../test/build-plugin-manager.test.ts | 91 +++++++++++-- 2 files changed, 155 insertions(+), 63 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 65b395f08b05..31f5a2eb72c2 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -564,6 +564,15 @@ export function createSentryBuildPluginManager( return; } + // Early exit if assets is explicitly set to an empty array + const assets = options.sourcemaps?.assets; + if (Array.isArray(assets) && assets.length === 0) { + logger.debug( + "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." + ); + return; + } + await startSpan( // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, @@ -578,65 +587,77 @@ export function createSentryBuildPluginManager( const freeUploadDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); try { - const assets = options.sourcemaps?.assets; - - let globAssets: string | string[]; - if (assets) { - globAssets = assets; - } else { - logger.debug( - "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." - ); - globAssets = buildArtifactPaths; - } + if (!shouldPrepare) { + // Direct CLI upload from existing artifact paths (no globbing, no preparation) + let pathsToUpload: string[]; - const globResult = await startSpan( - { name: "glob", scope: sentryScope }, - async () => - await glob(globAssets, { - absolute: true, - // If we do not use a temp folder, we allow directories and files; CLI will traverse as needed when given paths. - nodir: shouldPrepare, - ignore: options.sourcemaps?.ignore, - }) - ); + if (assets) { + pathsToUpload = Array.isArray(assets) ? assets : [assets]; + logger.debug( + `Direct upload mode: passing user-provided assets directly to CLI: ${pathsToUpload.join( + ", " + )}` + ); + } else { + // Use original paths e.g. like ['.next/server'] directly –> preferred way when no globbing is done + pathsToUpload = buildArtifactPaths; + } - const debugIdChunkFilePaths = shouldPrepare - ? globResult.filter((debugIdChunkFilePath) => { - return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); - }) - : globResult; + const ignorePaths = options.sourcemaps?.ignore + ? Array.isArray(options.sourcemaps?.ignore) + ? options.sourcemaps?.ignore + : [options.sourcemaps?.ignore] + : []; + await startSpan({ name: "upload", scope: sentryScope }, async () => { + const cliInstance = createCliInstance(options); + await cliInstance.releases.uploadSourceMaps(options.release.name ?? "undefined", { + include: [ + { + paths: pathsToUpload, + rewrite: true, + dist: options.release.dist, + }, + ], + ignore: ignorePaths, + live: "rejectOnError", + }); + }); - // The order of the files output by glob() is not deterministic - // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent - debugIdChunkFilePaths.sort(); + logger.info("Successfully uploaded source maps to Sentry"); + } else { + // Prepare artifacts in temp folder before uploading + let globAssets: string | string[]; + if (assets) { + globAssets = assets; + } else { + logger.debug( + "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." + ); + globAssets = buildArtifactPaths; + } - if (Array.isArray(assets) && assets.length === 0) { - logger.debug( - "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." - ); - } else if (debugIdChunkFilePaths.length === 0) { - logger.warn( - "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + const globResult = await startSpan( + { name: "glob", scope: sentryScope }, + async () => + await glob(globAssets, { + absolute: true, + nodir: true, // We need individual files for preparation + ignore: options.sourcemaps?.ignore, + }) ); - } else { - if (!shouldPrepare) { - // Direct CLI upload from existing artifact paths (no preparation or temp copies) - await startSpan({ name: "upload", scope: sentryScope }, async () => { - const cliInstance = createCliInstance(options); - await cliInstance.releases.uploadSourceMaps(options.release.name ?? "undefined", { - include: [ - { - paths: debugIdChunkFilePaths, - rewrite: false, - dist: options.release.dist, - }, - ], - live: "rejectOnError", - }); - }); - logger.info("Successfully uploaded source maps to Sentry"); + const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { + return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); + }); + + // The order of the files output by glob() is not deterministic + // Ensure order within the files so that {debug-id}-{chunkIndex} coupling is consistent + debugIdChunkFilePaths.sort(); + + if (debugIdChunkFilePaths.length === 0) { + logger.warn( + "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + ); } else { const tmpUploadFolder = await startSpan( { name: "mkdtemp", scope: sentryScope }, 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 0a9bcedf5dd2..d9886ede7a5a 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -98,9 +98,6 @@ describe("createSentryBuildPluginManager", () => { it("uploads in-place when prepareArtifacts is false", async () => { mockCliUploadSourceMaps.mockResolvedValue(undefined); - // Return a mixture of files/dirs; in-place path should pass through as-is - mockGlob.mockResolvedValue(["/app/dist/a.js", "/app/dist/dir", "/app/dist/a.js.map"]); - const manager = createSentryBuildPluginManager( { authToken: "t", @@ -123,19 +120,93 @@ describe("createSentryBuildPluginManager", () => { include: expect.arrayContaining([ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment expect.objectContaining({ - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - paths: expect.arrayContaining([ - "/app/dist/a.js", - "/app/dist/dir", - "/app/dist/a.js.map", - ]), - rewrite: false, + // User-provided assets should be passed directly to CLI (no globbing) + paths: ["/app/dist/**/*"], + rewrite: true, + dist: "1", + }), + ]), + live: "rejectOnError", + }) + ); + // Should not glob when prepareArtifacts is false + expect(mockGlob).not.toHaveBeenCalled(); + expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); + }); + + it("uploads build artifact paths when prepareArtifacts is false and no assets provided", async () => { + mockCliUploadSourceMaps.mockResolvedValue(undefined); + + const manager = createSentryBuildPluginManager( + { + authToken: "t", + org: "o", + project: "p", + release: { name: "some-release-name", dist: "1" }, + // No assets provided + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.uploadSourcemaps([".next", "dist"], { prepareArtifacts: false }); + + expect(mockCliUploadSourceMaps).toHaveBeenCalledTimes(1); + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith( + "some-release-name", + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.objectContaining({ + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + include: expect.arrayContaining([ + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.objectContaining({ + // Should use buildArtifactPaths directly + paths: [".next", "dist"], + rewrite: true, dist: "1", }), ]), live: "rejectOnError", }) ); + expect(mockGlob).not.toHaveBeenCalled(); + expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); + }); + + it("exits early when assets is an empty array", async () => { + const manager = createSentryBuildPluginManager( + { + authToken: "t", + org: "o", + project: "p", + release: { name: "some-release-name", dist: "1" }, + sourcemaps: { assets: [] }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.uploadSourcemaps([".next"], { prepareArtifacts: false }); + + expect(mockCliUploadSourceMaps).not.toHaveBeenCalled(); + expect(mockGlob).not.toHaveBeenCalled(); + expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); + }); + + it("exits early when assets is an empty array even for default mode", async () => { + const manager = createSentryBuildPluginManager( + { + authToken: "t", + org: "o", + project: "p", + release: { name: "some-release-name", dist: "1" }, + sourcemaps: { assets: [] }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.uploadSourcemaps([".next"]); + + expect(mockCliUploadSourceMaps).not.toHaveBeenCalled(); + expect(mockGlob).not.toHaveBeenCalled(); expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); }); From ed990c9a5e596399c75b50bb5b56162759f46405 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 2 Sep 2025 17:16:31 +0200 Subject: [PATCH 531/640] feat(core): Extend deploy option to allow opting out of automatic deploy creation (#801) --- .../src/options-mapping.ts | 24 +++-- packages/bundler-plugin-core/src/types.ts | 4 +- .../test/option-mappings.test.ts | 89 ++++++++++++++++++- .../src/generate-documentation-table.ts | 3 +- 4 files changed, 108 insertions(+), 12 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 3057c8af60ea..0c79a5ae8d51 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -44,14 +44,16 @@ export type NormalizedOptions = { | false | undefined; dist?: string; - deploy?: { - env: string; - started?: number | string; - finished?: number | string; - time?: number; - name?: string; - url?: string; - }; + deploy?: + | { + env: string; + started?: number | string; + finished?: number | string; + time?: number; + name?: string; + url?: string; + } + | false; uploadLegacySourcemaps?: string | IncludeEntry | Array; }; bundleSizeOptimizations: @@ -195,7 +197,11 @@ export function validateOptions(options: NormalizedOptions, logger: Logger): boo } } - if (options.release?.deploy && !options.release?.deploy.env) { + if ( + options.release?.deploy && + typeof options.release.deploy === "object" && + !options.release.deploy.env + ) { logger.error( "The `deploy` option was specified but is missing the required `env` property.", "Please set the `env` property." diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 81862a52a592..accceee56a88 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -239,8 +239,10 @@ export interface Options { /** * Configuration for adding deployment information to the release in Sentry. + * + * Set to `false` to disable automatic deployment detection and creation. */ - deploy?: DeployOptions; + deploy?: DeployOptions | false; /** * Legacy method of uploading source maps. (not recommended unless necessary) diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index f233e1e7356c..76bceb3d1552 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -110,6 +110,86 @@ describe("normalizeUserOptions()", () => { expect(normalizeUserOptions(options).telemetry).toBe(true); } ); + + describe("Vercel deploy detection", () => { + const originalEnv = process.env; + + beforeEach(() => { + process.env = { ...originalEnv }; + }); + + afterEach(() => { + process.env = originalEnv; + }); + + test("should automatically create deploy config when Vercel env vars are present", () => { + process.env["VERCEL"] = "1"; + process.env["VERCEL_TARGET_ENV"] = "production"; + process.env["VERCEL_URL"] = "my-app.vercel.app"; + + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: { name: "my-release" }, + }; + + const normalizedOptions = normalizeUserOptions(userOptions); + + expect(normalizedOptions.release.deploy).toEqual({ + env: "vercel-production", + url: "https://my-app.vercel.app", + }); + }); + + test("should not create deploy config when deploy is explicitly set to false", () => { + process.env["VERCEL"] = "1"; + process.env["VERCEL_TARGET_ENV"] = "production"; + process.env["VERCEL_URL"] = "my-app.vercel.app"; + + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: { name: "my-release", deploy: false }, + }; + + const normalizedOptions = normalizeUserOptions(userOptions); + + expect(normalizedOptions.release.deploy).toBe(false); + }); + + test("should not override manually provided deploy config", () => { + process.env["VERCEL"] = "1"; + process.env["VERCEL_TARGET_ENV"] = "production"; + process.env["VERCEL_URL"] = "my-app.vercel.app"; + + const manualDeployConfig = { env: "custom-env", name: "custom-deploy" }; + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: { name: "my-release", deploy: manualDeployConfig }, + }; + + const normalizedOptions = normalizeUserOptions(userOptions); + + expect(normalizedOptions.release.deploy).toEqual(manualDeployConfig); + }); + + test("should not create deploy config when Vercel env vars are missing", () => { + const userOptions: Options = { + org: "my-org", + project: "my-project", + authToken: "my-auth-token", + release: { name: "my-release" }, + }; + + const normalizedOptions = normalizeUserOptions(userOptions); + + expect(normalizedOptions.release.deploy).toBeUndefined(); + }); + }); }); describe("validateOptions", () => { @@ -164,7 +244,14 @@ describe("validateOptions", () => { }); it("should return `true` if `deploy`is set and `env` is provided", () => { - const options = { deploy: { env: "my-env" } } as Partial; + const options = { release: { deploy: { env: "my-env" } } } as Partial; + + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); + + it("should return `true` if `deploy` is set to `false`", () => { + const options = { release: { deploy: false } } as Partial; expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 3a4529c4d8c1..1757ffe91430 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -221,8 +221,9 @@ Use the \`debug\` option to print information about source map resolution. }, { name: "deploy", + type: "DeployOptions | false", fullDescription: - "Configuration for adding deployment information to the release in Sentry.", + "Configuration for adding deployment information to the release in Sentry.\n\nSet to `false` to disable automatic deployment detection and creation (e.g., when deploying on Vercel).", children: [ { name: "env", From 442d7c40720bc57d51f5493bd486b3a4ad21b6a3 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 2 Sep 2025 17:23:40 +0200 Subject: [PATCH 532/640] meta: Add changelog entry for 4.3.0 (#802) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1181fc40abe8..f1a367842fdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.3.0 + +- feat(core): Extend deploy option to allow opting out of automatic deploy creation ([#801](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/801)) +- feat(core): No asset globbing for direct upload ([#800](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/800)) + ## 4.2.0 - feat(core): Add `prepareArtifacts` option for uploading sourcemaps ([#794](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/794)) From 7c9ffdf45f64db3abe150b47486a893652902727 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 2 Sep 2025 15:24:45 +0000 Subject: [PATCH 533/640] release: 4.3.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index fdac95f6a611..35f0ba2d25bb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.2.0", + "version": "4.3.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index b1685337734b..c4eca79d78ca 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.2.0", + "version": "4.3.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9b84e4fc8c1b..8deab5bba48d 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.2.0", + "version": "4.3.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.2.0", + "@sentry/babel-plugin-component-annotate": "4.3.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 2a4d2fa0157e..a5cde6db0e95 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5d553f297b3e..370b75b0c050 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.2.0", - "@sentry/rollup-plugin": "4.2.0", - "@sentry/vite-plugin": "4.2.0", - "@sentry/webpack-plugin": "4.2.0", + "@sentry/esbuild-plugin": "4.3.0", + "@sentry/rollup-plugin": "4.3.0", + "@sentry/vite-plugin": "4.3.0", + "@sentry/webpack-plugin": "4.3.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index abb30e97013b..df107ad75b6e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.2.0", + "version": "4.3.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/bundler-plugin-core": "4.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 03b53588e7ed..e884926e4fff 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 522f08713015..1026b8527e72 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", - "@sentry/bundler-plugin-core": "4.2.0", - "@sentry/esbuild-plugin": "4.2.0", - "@sentry/rollup-plugin": "4.2.0", - "@sentry/vite-plugin": "4.2.0", - "@sentry/webpack-plugin": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/esbuild-plugin": "4.3.0", + "@sentry/rollup-plugin": "4.3.0", + "@sentry/vite-plugin": "4.3.0", + "@sentry/webpack-plugin": "4.3.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 5bd08ebca083..2a6451f2e7e9 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/bundler-plugin-core": "4.3.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 424e2d587d70..294c468b1d5e 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.2.0", + "version": "4.3.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/bundler-plugin-core": "4.3.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index e414cae0b228..54a59afe5004 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 767e696d1345..88f60763ed10 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.2.0", + "version": "4.3.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/bundler-plugin-core": "4.3.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index e545d0bbf0a6..24a85e4dcbc3 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.2.0", + "version": "4.3.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.2.0", + "@sentry/bundler-plugin-core": "4.3.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.2.0", + "@sentry-internal/eslint-config": "4.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 73787df4521e747b5665c4d9ae7bd00fc3db72b4 Mon Sep 17 00:00:00 2001 From: Jaguar Zhou Date: Thu, 9 Oct 2025 16:32:02 +0800 Subject: [PATCH 534/640] feat(core): Explicitly allow `undefined` as value for `authToken` option (#805) Updates type definition for optional property to include explicit undefined, improving clarity and consistency in type annotations. --- packages/bundler-plugin-core/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index accceee56a88..064cd89b8aa7 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -21,7 +21,7 @@ export interface Options { * * @see https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens */ - authToken?: string; + authToken?: string | undefined; /** * The base URL of your Sentry instance. Use this if you are using a self-hosted From 298fb1265752a23b0e50f152e46f35a99e0fdff4 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 9 Oct 2025 13:04:02 +0200 Subject: [PATCH 535/640] fix(core): Strip query strings from asset paths (#806) * fix: Strip query strings from asset paths * PR review --- packages/bundler-plugin-core/src/debug-id-upload.ts | 6 +++++- packages/integration-tests/utils/create-cjs-bundles.ts | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 2bca52c207ce..4de1aaa6a79e 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -6,6 +6,7 @@ import { promisify } from "util"; import { SentryBuildPluginManager } from "./build-plugin-manager"; import { Logger } from "./logger"; import { ResolveSourceMapHook, RewriteSourcesHook } from "./types"; +import { stripQueryAndHashFromPath } from "./utils"; interface DebugIdUploadPluginOptions { sentryBuildPluginManager: SentryBuildPluginManager; @@ -15,7 +16,10 @@ export function createDebugIdUploadFunction({ sentryBuildPluginManager, }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { - await sentryBuildPluginManager.uploadSourcemaps(buildArtifactPaths); + // Webpack and perhaps other bundlers allow you to append query strings to + // filenames for cache busting purposes. We should strip these before upload. + const cleanedPaths = buildArtifactPaths.map(stripQueryAndHashFromPath); + await sentryBuildPluginManager.uploadSourcemaps(cleanedPaths); }; } diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index b230ccab41ce..bc60ce2b788e 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -77,6 +77,7 @@ export function createCjsBundles( 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(sentryUnpluginOptions)], From 6be097ced53344fbed07b2f308b96fb69df6367e Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 10 Oct 2025 09:05:52 +0200 Subject: [PATCH 536/640] test: Fix failing integration tests on Windows (#807) * Revert "feat(core): Explicitly allow `undefined` as value for `authToken` option (#805)" This reverts commit 73787df4521e747b5665c4d9ae7bd00fc3db72b4. * Revert "Revert "feat(core): Explicitly allow `undefined` as value for `authToken` option (#805)"" This reverts commit 4ac2dc2e0ed6edc7162cd1f16c2388a2888939a0. * some debug logging * . * .. * ... * .... * use posix? * try rollup w/ posix * move input file into rollup dir * check and add * wtf * more logging * so __dirname is the problem? * try w/o __dirname * fileURLToPath * simplify * avoid posix * use move bundle.js into webpack dir * use basename * dirname, not basename * start ci? * delete per-dir bundle.js, use fileUrlToPath everywhere --- .../debug-ids-already-injected.test.ts | 12 ++++++------ .../input/rollup4/rollup.config.js | 5 +++-- .../input/vite6/vite.config.js | 5 ++++- .../input/webpack5/webpack.config.js | 5 +++-- 4 files changed, 16 insertions(+), 11 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 f0c77f6768bc..8d6feca8b6f4 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 @@ -56,13 +56,13 @@ describeNode18Plus("vite 6 bundle", () => { }); describeNode18Plus("webpack 5 bundle", () => { - const viteRoot = path.join(__dirname, "input", "webpack5"); + const webpackRoot = path.join(__dirname, "input", "webpack5"); const tempDir = createTempDir(); beforeEach(() => { - execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); + execSync("yarn install", { cwd: webpackRoot, stdio: "inherit" }); execSync("yarn webpack build", { - cwd: viteRoot, + cwd: webpackRoot, stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); @@ -81,13 +81,13 @@ describeNode18Plus("webpack 5 bundle", () => { }); describeNode18Plus("rollup bundle", () => { - const viteRoot = path.join(__dirname, "input", "rollup4"); + const rollupRoot = path.join(__dirname, "input", "rollup4"); const tempDir = createTempDir(); beforeEach(() => { - execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); + execSync("yarn install", { cwd: rollupRoot, stdio: "inherit" }); execSync("yarn rollup --config rollup.config.js", { - cwd: viteRoot, + cwd: rollupRoot, stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js index 2a43368b551e..1a5285669d4f 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js @@ -1,8 +1,9 @@ import { defineConfig } from "rollup"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -import { join } from "path"; +import { join, dirname } from "path"; +import { fileURLToPath } from "url"; -const __dirname = new URL(".", import.meta.url).pathname; +const __dirname = dirname(fileURLToPath(import.meta.url)); export default defineConfig({ input: { index: join(__dirname, "..", "bundle.js") }, diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js index 0d763cdb4ac6..bb319442bcca 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js @@ -1,6 +1,9 @@ import { defineConfig } from "vite"; import { sentryVitePlugin } from "@sentry/vite-plugin"; -import { join } from "path"; +import { join, dirname } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); export default defineConfig({ clearScreen: false, 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/webpack5/webpack.config.js index fa294910524f..ae1d088210d8 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/webpack5/webpack.config.js @@ -1,7 +1,8 @@ import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import { join } from "path"; +import { join, dirname } from "path"; +import { fileURLToPath } from "url"; -const __dirname = new URL(".", import.meta.url).pathname; +const __dirname = dirname(fileURLToPath(import.meta.url)); export default { devtool: "source-map-debugids", From cf6528f9ce7b2a2e4c8476146967caf1452cf6a7 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 10 Oct 2025 10:11:32 +0200 Subject: [PATCH 537/640] meta: Add Changelog entry for 4.4.0 (#809) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1a367842fdc..046ef96f3bf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.4.0 + +- feat(core): Explicitly allow `undefined` as value for `authToken` option ([#805](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/805)) +- fix(core): Strip query strings from asset paths ([#806](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/806)) + +Work in this release was contributed by @aiktb. Thank you for your contribution! + ## 4.3.0 - feat(core): Extend deploy option to allow opting out of automatic deploy creation ([#801](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/801)) From dfb0a9b9598cca5c93d19393535d3bf1600cc9fb Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 10 Oct 2025 08:12:42 +0000 Subject: [PATCH 538/640] release: 4.4.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 35f0ba2d25bb..f15e9c7d7696 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.3.0", + "version": "4.4.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index c4eca79d78ca..6ce745949aa1 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.3.0", + "version": "4.4.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 8deab5bba48d..9d0ead6ed531 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.3.0", + "version": "4.4.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.3.0", + "@sentry/babel-plugin-component-annotate": "4.4.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index a5cde6db0e95..d66a9fe3bb74 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 370b75b0c050..046952cd0369 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.3.0", - "@sentry/rollup-plugin": "4.3.0", - "@sentry/vite-plugin": "4.3.0", - "@sentry/webpack-plugin": "4.3.0", + "@sentry/esbuild-plugin": "4.4.0", + "@sentry/rollup-plugin": "4.4.0", + "@sentry/vite-plugin": "4.4.0", + "@sentry/webpack-plugin": "4.4.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index df107ad75b6e..db9a65f111a0 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.3.0", + "version": "4.4.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/bundler-plugin-core": "4.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index e884926e4fff..05301524a976 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1026b8527e72..c01ebc9e0253 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", - "@sentry/bundler-plugin-core": "4.3.0", - "@sentry/esbuild-plugin": "4.3.0", - "@sentry/rollup-plugin": "4.3.0", - "@sentry/vite-plugin": "4.3.0", - "@sentry/webpack-plugin": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/esbuild-plugin": "4.4.0", + "@sentry/rollup-plugin": "4.4.0", + "@sentry/vite-plugin": "4.4.0", + "@sentry/webpack-plugin": "4.4.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 2a6451f2e7e9..7d1f5e8c18f1 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/bundler-plugin-core": "4.4.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 294c468b1d5e..552d5a382037 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.3.0", + "version": "4.4.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/bundler-plugin-core": "4.4.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 54a59afe5004..3e09343215bc 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 88f60763ed10..2715f280ff37 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.3.0", + "version": "4.4.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/bundler-plugin-core": "4.4.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 24a85e4dcbc3..523ba4318b20 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.3.0", + "version": "4.4.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.3.0", + "@sentry/bundler-plugin-core": "4.4.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.3.0", + "@sentry-internal/eslint-config": "4.4.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From b56403a3120a30c95c26365fc5320f9ff23655ec Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Fri, 10 Oct 2025 16:41:53 +0300 Subject: [PATCH 539/640] fix: propagate the debug option to the cli (#810) * fix: propagate the debug option to the cli * fix: only set the variable if not already set --- .../src/build-plugin-manager.ts | 6 + .../test/build-plugin-manager.test.ts | 168 ++++++++++++++++++ 2 files changed, 174 insertions(+) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 31f5a2eb72c2..f0716178d721 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -220,6 +220,12 @@ export function createSentryBuildPluginManager( "SENTRY_PIPELINE" ] = `${bundlerPluginMetaContext.buildTool}-plugin/${__PACKAGE_VERSION__}`; + // Propagate debug flag to Sentry CLI via environment variable + // Only set if not already defined to respect user's explicit configuration + if (options.debug && !process.env["SENTRY_LOG_LEVEL"]) { + process.env["SENTRY_LOG_LEVEL"] = "debug"; + } + // Not a bulletproof check but should be good enough to at least sometimes determine // if the plugin is called in dev/watch mode or for a prod build. The important part // here is to avoid a false positive. False negatives are okay. 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 d9886ede7a5a..be6a2f209b98 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -44,6 +44,174 @@ const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as jest. describe("createSentryBuildPluginManager", () => { beforeEach(() => { jest.clearAllMocks(); + // Clean up environment variables + delete process.env["SENTRY_LOG_LEVEL"]; + }); + + describe("debug option", () => { + it("should set SENTRY_LOG_LEVEL environment variable when debug is true", () => { + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + }); + + it("should NOT override existing SENTRY_LOG_LEVEL even when debug is true", () => { + // User explicitly set SENTRY_LOG_LEVEL to "info" + process.env["SENTRY_LOG_LEVEL"] = "info"; + + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + // Should respect the user's explicit setting + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("info"); + }); + + it("should not set SENTRY_LOG_LEVEL environment variable when debug is false", () => { + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: false, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(process.env["SENTRY_LOG_LEVEL"]).toBeUndefined(); + }); + + it("should not set SENTRY_LOG_LEVEL environment variable when debug is not specified", () => { + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(process.env["SENTRY_LOG_LEVEL"]).toBeUndefined(); + }); + + it("should have SENTRY_LOG_LEVEL set when CLI operations are performed with debug enabled", async () => { + mockCliExecute.mockImplementation(() => { + // Verify the environment variable is set at the time the CLI is called + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + return Promise.resolve(undefined); + }); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + // Verify it's set immediately after creation + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + + // Perform a CLI operation and verify the env var is still set + await buildPluginManager.injectDebugIds(["/path/to/bundle"]); + + expect(mockCliExecute).toHaveBeenCalled(); + }); + + it("should have SENTRY_LOG_LEVEL set during error scenarios with debug enabled", async () => { + // Simulate CLI error + mockCliExecute.mockImplementation(() => { + // Verify the environment variable is set even when CLI encounters an error + // This ensures the CLI won't emit the "Add --log-level=debug" warning + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + return Promise.reject(new Error("CLI error")); + }); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: true, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + // Verify it's set before the error + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + + // Perform a CLI operation that will fail + await buildPluginManager.injectDebugIds(["/path/to/bundle"]); + + // The error should have been caught, but env var should still be set + expect(process.env["SENTRY_LOG_LEVEL"]).toBe("debug"); + }); + + it("should NOT have SENTRY_LOG_LEVEL set during error scenarios when debug is disabled", async () => { + // Simulate CLI error + mockCliExecute.mockImplementation(() => { + // Verify the environment variable is NOT set + // In this case, the CLI WOULD emit the "Add --log-level=debug" warning + expect(process.env["SENTRY_LOG_LEVEL"]).toBeUndefined(); + return Promise.reject(new Error("CLI error")); + }); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + debug: false, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + // Verify it's not set + expect(process.env["SENTRY_LOG_LEVEL"]).toBeUndefined(); + + // Perform a CLI operation that will fail + await buildPluginManager.injectDebugIds(["/path/to/bundle"]); + + // The error should have been caught, and env var should still not be set + expect(process.env["SENTRY_LOG_LEVEL"]).toBeUndefined(); + }); }); describe("when disabled", () => { From 995067b81b1982bc953ccb303d6d45b0e34b5164 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 13 Oct 2025 11:37:25 +0300 Subject: [PATCH 540/640] docs: added info on debug flag value precedence (#811) * docs: added info on debug flag value precedence * fix: formatting --- packages/bundler-plugin-core/src/types.ts | 4 ++++ packages/dev-utils/src/generate-documentation-table.ts | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 064cd89b8aa7..1f8539ef29f5 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -42,6 +42,10 @@ export interface Options { * Enable debug information logs during build-time. * Enabling this will give you, for example, logs about source maps. * + * This option also propagates the debug flag to the Sentry CLI by setting + * the `SENTRY_LOG_LEVEL` environment variable to `"debug"` if it's not already set. + * If you have explicitly set `SENTRY_LOG_LEVEL`, this option will be ignored. + * * @default false */ debug?: boolean; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 1757ffe91430..073ba305b509 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -41,7 +41,7 @@ const options: OptionDocumentation[] = [ name: "debug", type: "boolean", fullDescription: - "Enable debug information logs during build-time. Enabling this will give you, for example, logs about source maps. Defaults to `false`.", + 'Enable debug information logs during build-time. Enabling this will give you, for example, logs about source maps. This option also propagates the debug flag to the Sentry CLI by setting the `SENTRY_LOG_LEVEL` environment variable to `"debug"` if it\'s not already set. If you have explicitly set `SENTRY_LOG_LEVEL`, this option will be ignored. Defaults to `false`.', }, { name: "silent", @@ -114,7 +114,7 @@ urls and absolute/relative paths). If that path doesn't exist, it then looks for Note: This is mostly helpful for complex builds with custom source map generation. For example, if you put source maps into a separate directory and rewrite the \`//# sourceMappingURL=\` comment to something other than a relative -directory, sentry will be unable to locate the source maps for a given build artifact. This hook allows you to +directory, sentry will be unable to locate the source maps for a given build artifact. This hook allows you to implement the resolution process yourself. Use the \`debug\` option to print information about source map resolution. From 3ed5631cff019c018aa78345b382747a3ae29e73 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Tue, 14 Oct 2025 19:22:12 +0300 Subject: [PATCH 541/640] feat: add debug statements after sourcemap uploads (#812) chore: added debug statements after sourcemap uploads --- packages/bundler-plugin-core/src/build-plugin-manager.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index f0716178d721..e41b65d4ed26 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -750,14 +750,19 @@ export function createSentryBuildPluginManager( handleRecoverableError(e, false); } finally { if (folderToCleanUp && !process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"]) { + logger.debug("Cleaning up temporary files..."); void startSpan({ name: "cleanup", scope: sentryScope }, async () => { if (folderToCleanUp) { await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); + logger.debug(`Temporary folder deleted: ${folderToCleanUp}`); } }); } + logger.debug("Freeing upload dependencies..."); freeUploadDependencyOnBuildArtifacts(); + logger.debug("Flushing telemetry data..."); await safeFlushTelemetry(sentryClient); + logger.debug("Telemetry flushed. Plugin upload process complete."); } } ); From 76a9745cdb4dbe465137e70618ec481fff2243aa Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:10:05 +0200 Subject: [PATCH 542/640] feat(core): Allow multi-project sourcemaps upload (#813) * feat(core): Allow multi-project sourcemaps upload The `project` option now allows specifiying multiple projects via a string array. Source maps will be uploaded to all specified projects. --- .../src/build-plugin-manager.ts | 29 ++- .../src/options-mapping.ts | 27 ++- .../src/sentry/telemetry.ts | 5 +- packages/bundler-plugin-core/src/types.ts | 10 +- packages/bundler-plugin-core/src/utils.ts | 15 ++ .../test/build-plugin-manager.test.ts | 170 ++++++++++++++++++ .../test/option-mappings.test.ts | 98 ++++++++++ .../src/generate-documentation-table.ts | 3 +- packages/esbuild-plugin/README_TEMPLATE.md | 26 +++ packages/rollup-plugin/README_TEMPLATE.md | 28 +++ packages/vite-plugin/README_TEMPLATE.md | 29 +++ packages/webpack-plugin/README_TEMPLATE.md | 28 +++ 12 files changed, 456 insertions(+), 12 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index e41b65d4ed26..77c517f071fa 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -19,7 +19,12 @@ import { safeFlushTelemetry, } from "./sentry/telemetry"; import { Options, SentrySDKBuildFlags } from "./types"; -import { arrayify, getTurborepoEnvPassthroughWarning, stripQueryAndHashFromPath } from "./utils"; +import { + arrayify, + getProjects, + getTurborepoEnvPassthroughWarning, + stripQueryAndHashFromPath, +} from "./utils"; import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; @@ -94,7 +99,8 @@ function createCliInstance(options: NormalizedOptions): SentryCli { return new SentryCli(null, { authToken: options.authToken, org: options.org, - project: options.project, + // Default to the first project if multiple projects are specified + project: getProjects(options.project)?.[0], silent: options.silent, url: options.url, vcsRemote: options.release.vcsRemote, @@ -360,7 +366,8 @@ export function createSentryBuildPluginManager( if (typeof options.moduleMetadata === "function") { const args = { org: options.org, - project: options.project, + project: getProjects(options.project)?.[0], + projects: getProjects(options.project), release: options.release.name, }; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment @@ -444,7 +451,10 @@ export function createSentryBuildPluginManager( getTurborepoEnvPassthroughWarning("SENTRY_ORG") ); return; - } else if (!options.project) { + } else if ( + !options.project || + (Array.isArray(options.project) && options.project.length === 0) + ) { logger.warn( "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") @@ -481,6 +491,9 @@ export function createSentryBuildPluginManager( await cliInstance.releases.uploadSourceMaps(options.release.name, { include: normalizedInclude, dist: options.release.dist, + // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI + // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released + projects: getProjects(options.project), // We want this promise to throw if the sourcemaps fail to upload so that we know about it. // see: https://github.com/getsentry/sentry-cli/pull/2605 live: "rejectOnError", @@ -625,6 +638,9 @@ export function createSentryBuildPluginManager( }, ], ignore: ignorePaths, + // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI + // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released + projects: getProjects(options.project), live: "rejectOnError", }); }); @@ -735,6 +751,9 @@ export function createSentryBuildPluginManager( dist: options.release.dist, }, ], + // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI + // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released + projects: getProjects(options.project), live: "rejectOnError", } ); @@ -843,7 +862,7 @@ function canUploadSourceMaps( ); return false; } - if (!options.project) { + if (!getProjects(options.project)?.[0]) { logger.warn( "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 0c79a5ae8d51..b017a9d8920a 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -12,7 +12,7 @@ import { determineReleaseName } from "./utils"; export type NormalizedOptions = { org: string | undefined; - project: string | undefined; + project: string | string[] | undefined; authToken: string | undefined; url: string; headers: Record | undefined; @@ -89,7 +89,11 @@ export const SENTRY_SAAS_URL = "https://sentry.io"; export function normalizeUserOptions(userOptions: UserOptions): NormalizedOptions { const options = { org: userOptions.org ?? process.env["SENTRY_ORG"], - project: userOptions.project ?? process.env["SENTRY_PROJECT"], + project: + userOptions.project ?? + (process.env["SENTRY_PROJECT"]?.includes(",") + ? process.env["SENTRY_PROJECT"].split(",").map((p) => p.trim()) + : process.env["SENTRY_PROJECT"]), authToken: userOptions.authToken ?? process.env["SENTRY_AUTH_TOKEN"], url: userOptions.url ?? process.env["SENTRY_URL"] ?? SENTRY_SAAS_URL, headers: userOptions.headers, @@ -209,5 +213,24 @@ export function validateOptions(options: NormalizedOptions, logger: Logger): boo return false; } + if (options.project && Array.isArray(options.project)) { + if (options.project.length === 0) { + logger.error( + "The `project` option was specified as an array but is empty.", + "Please provide at least one project slug." + ); + return false; + } + // Check each project is a non-empty string + const invalidProjects = options.project.filter((p) => typeof p !== "string" || p.trim() === ""); + if (invalidProjects.length > 0) { + logger.error( + "The `project` option contains invalid project slugs.", + "All projects must be non-empty strings." + ); + return false; + } + } + return true; } diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 48c93fb7b811..70c17b3e8801 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -5,6 +5,7 @@ import { NormalizedOptions, SENTRY_SAAS_URL } from "../options-mapping"; import { Scope } from "@sentry/core"; import { createStackParser, nodeStackLineParser } from "@sentry/utils"; import { makeOptionallyEnabledNodeTransport } from "./transports"; +import { getProjects } from "../utils"; const SENTRY_SAAS_HOSTNAME = "sentry.io"; @@ -106,7 +107,7 @@ export function setTelemetryDataOnScope( scope.setTags({ organization: org, - project, + project: Array.isArray(project) ? project.join(", ") : project ?? "undefined", bundler: buildTool, }); @@ -129,7 +130,7 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis url, authToken, org, - project, + project: getProjects(project)?.[0], vcsRemote: release.vcsRemote, silent, headers, diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 1f8539ef29f5..f86aca5ebe66 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -9,9 +9,13 @@ export interface Options { /** * The slug of the Sentry project associated with the app. * + * When uploading source maps, you can specify multiple projects (as an array) to upload + * the same source maps to multiple projects. This is useful in monorepo environments + * where multiple projects share the same release. + * * This value can also be specified via the `SENTRY_PROJECT` environment variable. */ - project?: string; + project?: string | string[]; /** * The authentication token to use for all communication with Sentry. @@ -361,7 +365,8 @@ export interface Options { * Metadata can either be passed directly or alternatively a callback can be provided that will be * called with the following parameters: * - `org`: The organization slug. - * - `project`: The project slug. + * - `project`: The project slug (when multiple projects are configured, this is the first project). + * - `projects`: An array of all project slugs (available when multiple projects are configured). * - `release`: The release name. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -428,6 +433,7 @@ export interface ModuleMetadata { export interface ModuleMetadataCallbackArgs { org?: string; project?: string; + projects?: string[]; release?: string; } diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 1162e9f685ef..a1aebf1184b6 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -393,3 +393,18 @@ export function getTurborepoEnvPassthroughWarning(envVarName: string): string { ? `\nYou seem to be using Turborepo, did you forget to put ${envVarName} in \`passThroughEnv\`? https://turbo.build/repo/docs/reference/configuration#passthroughenv` : ""; } + +/** + * Gets the projects from the project option. This might be a single project or an array of projects. + */ +export function getProjects(project: string | string[] | undefined): string[] | undefined { + if (Array.isArray(project)) { + return project; + } + + if (project) { + return [project]; + } + + return undefined; +} 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 be6a2f209b98..1003d57c096f 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -408,6 +408,7 @@ describe("createSentryBuildPluginManager", () => { // Should upload from temp folder expect(mockCliUploadSourceMaps).toHaveBeenCalledWith("some-release-name", { include: [{ paths: ["/tmp/sentry-upload-xyz"], rewrite: false, dist: "1" }], + projects: ["p"], live: "rejectOnError", }); }); @@ -463,4 +464,173 @@ describe("createSentryBuildPluginManager", () => { ); }); }); + + describe("uploadSourcemaps with multiple projects", () => { + beforeEach(() => { + jest.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); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it("should pass projects array to uploadSourceMaps when multiple projects configured", async () => { + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: ["proj-a", "proj-b", "proj-c"], + release: { name: "test-release" }, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + await buildPluginManager.uploadSourcemaps(["/path/to/bundle.js"]); + + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith( + "test-release", + expect.objectContaining({ + projects: ["proj-a", "proj-b", "proj-c"], + }) + ); + }); + + it("should pass single project as array to uploadSourceMaps", async () => { + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "single-project", + release: { name: "test-release" }, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + await buildPluginManager.uploadSourcemaps(["/path/to/bundle.js"]); + + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith( + "test-release", + expect.objectContaining({ + projects: ["single-project"], + }) + ); + }); + + it("should pass projects array in direct upload mode", async () => { + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: ["proj-a", "proj-b"], + release: { name: "test-release" }, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + await buildPluginManager.uploadSourcemaps(["/path/to/bundle.js"], { + prepareArtifacts: false, + }); + + expect(mockCliUploadSourceMaps).toHaveBeenCalledWith( + "test-release", + expect.objectContaining({ + projects: ["proj-a", "proj-b"], + }) + ); + }); + }); + + 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" }); + + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: ["proj-a", "proj-b", "proj-c"], + release: { name: "test-release" }, + moduleMetadata: moduleMetadataCallback, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(moduleMetadataCallback).toHaveBeenCalledWith({ + org: "test-org", + project: "proj-a", + projects: ["proj-a", "proj-b", "proj-c"], + release: "test-release", + }); + }); + + it("should pass project as string and projects as array with single project", () => { + const moduleMetadataCallback = jest.fn().mockReturnValue({ custom: "metadata" }); + + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "single-project", + release: { name: "test-release" }, + moduleMetadata: moduleMetadataCallback, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(moduleMetadataCallback).toHaveBeenCalledWith({ + org: "test-org", + project: "single-project", + projects: ["single-project"], + release: "test-release", + }); + }); + + it("should pass undefined for projects when no project configured", () => { + const moduleMetadataCallback = jest.fn().mockReturnValue({ custom: "metadata" }); + + createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + release: { name: "test-release" }, + moduleMetadata: moduleMetadataCallback, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + expect(moduleMetadataCallback).toHaveBeenCalledWith({ + org: "test-org", + project: undefined, + projects: undefined, + release: "test-release", + }); + }); + }); }); diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 76bceb3d1552..921bcd1e366e 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -190,6 +190,68 @@ describe("normalizeUserOptions()", () => { expect(normalizedOptions.release.deploy).toBeUndefined(); }); }); + + describe("multi-project support", () => { + test("should accept project as a string array", () => { + const userOptions: Options = { + org: "my-org", + project: ["project-a", "project-b", "project-c"], + authToken: "my-auth-token", + release: { name: "my-release" }, + }; + + const normalized = normalizeUserOptions(userOptions); + expect(normalized.project).toEqual(["project-a", "project-b", "project-c"]); + }); + + test("should parse comma-separated SENTRY_PROJECT env var", () => { + const originalEnv = process.env; + process.env = { ...originalEnv }; + process.env["SENTRY_PROJECT"] = "proj1,proj2,proj3"; + + const userOptions: Options = { + org: "my-org", + authToken: "my-auth-token", + }; + + const normalized = normalizeUserOptions(userOptions); + expect(normalized.project).toEqual(["proj1", "proj2", "proj3"]); + + process.env = originalEnv; + }); + + test("should trim whitespace from comma-separated projects", () => { + const originalEnv = process.env; + process.env = { ...originalEnv }; + process.env["SENTRY_PROJECT"] = "proj1 , proj2 , proj3"; + + const userOptions: Options = { + org: "my-org", + authToken: "my-auth-token", + }; + + const normalized = normalizeUserOptions(userOptions); + expect(normalized.project).toEqual(["proj1", "proj2", "proj3"]); + + process.env = originalEnv; + }); + + test("should keep single project as string (no comma)", () => { + const originalEnv = process.env; + process.env = { ...originalEnv }; + process.env["SENTRY_PROJECT"] = "single-project"; + + const userOptions: Options = { + org: "my-org", + authToken: "my-auth-token", + }; + + const normalized = normalizeUserOptions(userOptions); + expect(normalized.project).toBe("single-project"); + + process.env = originalEnv; + }); + }); }); describe("validateOptions", () => { @@ -269,4 +331,40 @@ describe("validateOptions", () => { expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); expect(mockedLogger.error).not.toHaveBeenCalled(); }); + + describe("multi-project validation", () => { + it("should return `false` if project array is empty", () => { + const options = { project: [] } as Partial; + + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); + expect(mockedLogger.error).toHaveBeenCalledWith( + expect.stringMatching(/project.*array.*empty/i), + expect.stringMatching(/at least one/i) + ); + }); + + it("should return `false` if project array contains invalid strings", () => { + const options = { project: ["valid", "", " ", "also-valid"] } as Partial; + + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(false); + expect(mockedLogger.error).toHaveBeenCalledWith( + expect.stringMatching(/invalid.*project/i), + expect.stringMatching(/non-empty strings/i) + ); + }); + + it("should return `true` for valid project array", () => { + const options = { project: ["proj-a", "proj-b"] } as Partial; + + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); + + it("should return `true` for valid single project string", () => { + const options = { project: "single-project" } as Partial; + + expect(validateOptions(options as unknown as NormalizedOptions, mockedLogger)).toBe(true); + expect(mockedLogger.error).not.toHaveBeenCalled(); + }); + }); }); diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 073ba305b509..6e97771b9ad4 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -17,8 +17,9 @@ const options: OptionDocumentation[] = [ }, { name: "project", + type: "string | string[]", fullDescription: - "The slug of the Sentry project associated with the app.\n\nThis value can also be specified via the `SENTRY_PROJECT` environment variable.", + "The slug of the Sentry project associated with the app. You can also provide an array of project slugs to upload source maps to multiple projects with the same release.\n\nThis value can also be specified via the `SENTRY_PROJECT` environment variable. To specify multiple projects via the environment variable, separate them with commas: `SENTRY_PROJECT=project1,project2,project3`.", }, { name: "authToken", diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md index ca35df295a80..5e1e3e0c3beb 100644 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ b/packages/esbuild-plugin/README_TEMPLATE.md @@ -53,6 +53,32 @@ require("esbuild").build({ }); ``` +### Multi-Project Configuration + +If you want to upload the same source maps to multiple Sentry projects: + +```js +// esbuild.config.js +const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); + +require("esbuild").build({ + sourcemap: true, + plugins: [ + sentryEsbuildPlugin({ + org: process.env.SENTRY_ORG, + project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}); +``` + +Or via environment variable: + +```bash +SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c +``` + #OPTIONS_SECTION_INSERT# ### Configuration File diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md index 53ebf7c823e9..05e88416852b 100644 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ b/packages/rollup-plugin/README_TEMPLATE.md @@ -55,6 +55,34 @@ export default { }; ``` +### Multi-Project Configuration + +If you want to upload the same source maps to multiple Sentry projects: + +```js +// rollup.config.js +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; + +export default { + plugins: [ + sentryRollupPlugin({ + org: process.env.SENTRY_ORG, + project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], + output: { + sourcemap: true, + }, +}; +``` + +Or via environment variable: + +```bash +SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c +``` + #OPTIONS_SECTION_INSERT# ### Configuration File diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md index ad8d3cbc6c89..0f34d0176cd5 100644 --- a/packages/vite-plugin/README_TEMPLATE.md +++ b/packages/vite-plugin/README_TEMPLATE.md @@ -60,6 +60,35 @@ export default defineConfig({ }); ``` +### Multi-Project Configuration + +If you want to upload the same source maps to multiple Sentry projects: + +```ts +// vite.config.ts +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; + +export default defineConfig({ + build: { + sourcemap: true, + }, + plugins: [ + sentryVitePlugin({ + org: process.env.SENTRY_ORG, + project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}); +``` + +Or via environment variable: + +```bash +SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c +``` + #OPTIONS_SECTION_INSERT# ### Configuration File diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md index 2b25c4a24dec..c02dc89783a4 100644 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ b/packages/webpack-plugin/README_TEMPLATE.md @@ -56,6 +56,34 @@ module.exports = { }; ``` +### Multi-Project Configuration + +If you want to upload the same source maps to multiple Sentry projects: + +```js +// webpack.config.js +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); + +module.exports = { + // ... other config above ... + + devtool: "source-map", + plugins: [ + sentryWebpackPlugin({ + org: process.env.SENTRY_ORG, + project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +Or via environment variable: + +```bash +SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c +``` + #OPTIONS_SECTION_INSERT# ### Configuration File From b61b0863154c9699990f5952c826f7963b84ba2e Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:27:30 +0200 Subject: [PATCH 543/640] meta(changelog): Update changelog for 4.5.0 (#814) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 046ef96f3bf9..2c46ed91e99c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.5.0 + +- docs: added info on debug flag value precedence ([#811](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/811)) +- feat: add debug statements after sourcemap uploads ([#812](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/812)) +- feat(core): Allow multi-project sourcemaps upload ([#813](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/813)) +- fix: propagate the debug option to the cli ([#810](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/810)) + ## 4.4.0 - feat(core): Explicitly allow `undefined` as value for `authToken` option ([#805](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/805)) From 7c255364bf3dc034eb5dee9b9e2107b49efd72ac Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 20 Oct 2025 13:28:49 +0000 Subject: [PATCH 544/640] release: 4.5.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index f15e9c7d7696..2403b6e2f0ed 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.4.0", + "version": "4.5.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 6ce745949aa1..8c3f2d112bc0 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.4.0", + "version": "4.5.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 9d0ead6ed531..71c427aa0914 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.4.0", + "version": "4.5.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.4.0", + "@sentry/babel-plugin-component-annotate": "4.5.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index d66a9fe3bb74..3f3e7fdb0695 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 046952cd0369..3255d3962c13 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.4.0", - "@sentry/rollup-plugin": "4.4.0", - "@sentry/vite-plugin": "4.4.0", - "@sentry/webpack-plugin": "4.4.0", + "@sentry/esbuild-plugin": "4.5.0", + "@sentry/rollup-plugin": "4.5.0", + "@sentry/vite-plugin": "4.5.0", + "@sentry/webpack-plugin": "4.5.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index db9a65f111a0..62dd4b8d747d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.4.0", + "version": "4.5.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/bundler-plugin-core": "4.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 05301524a976..1939a2e16539 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index c01ebc9e0253..0ad5ef82e19a 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", - "@sentry/bundler-plugin-core": "4.4.0", - "@sentry/esbuild-plugin": "4.4.0", - "@sentry/rollup-plugin": "4.4.0", - "@sentry/vite-plugin": "4.4.0", - "@sentry/webpack-plugin": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/esbuild-plugin": "4.5.0", + "@sentry/rollup-plugin": "4.5.0", + "@sentry/vite-plugin": "4.5.0", + "@sentry/webpack-plugin": "4.5.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 7d1f5e8c18f1..56592677b010 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/bundler-plugin-core": "4.5.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 552d5a382037..d23610ec0a46 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.4.0", + "version": "4.5.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/bundler-plugin-core": "4.5.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 3e09343215bc..666c02bb3d1e 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.4.0", + "version": "4.5.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 2715f280ff37..8aa43346164f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.4.0", + "version": "4.5.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/bundler-plugin-core": "4.5.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 523ba4318b20..92ac2a30b50e 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.4.0", + "version": "4.5.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.4.0", + "@sentry/bundler-plugin-core": "4.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.4.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.4.0", + "@sentry-internal/eslint-config": "4.5.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 87c8e14b7c242eebd8cc68bcdb23319e99a9e7ca Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:23:57 +0200 Subject: [PATCH 545/640] fix(core): Stop awaiting build start telemetry to avoid breaking module federation builds (#818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(core): Stop awaiting build start telemetry to avoid breaking module federation builds Prior to this fix, we would create a span when the build starts and await flushing it before proceeding with the build. This breaks when using module federation builds as outlined in #816. This fix removes the blocking await and optimistically fires off the span. This **should** be fine as we definitely care more about not breaking user builds than telemetry arriving. It could lead to us potentially missing this span sometimes when builds run very fast and finish before the span flushes out, however given that the build process usually takes longer (especially when sourcemaps and uploading sourcemaps is involved) it should be fine most of the time. Closes: #816 * Update packages/bundler-plugin-core/src/index.ts Co-authored-by: Jan Peer Stöcklmair --------- Co-authored-by: Jan Peer Stöcklmair --- packages/bundler-plugin-core/src/index.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 12bb0325c081..2c38cac7a5b6 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -77,8 +77,15 @@ export function sentryUnpluginFactory({ // Add plugin to emit a telemetry signal when the build starts plugins.push({ name: "sentry-telemetry-plugin", - async buildStart() { - await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal(); + buildStart() { + // Technically, for very fast builds we might miss the telemetry signal + // but it's okay because telemetry is not critical for us. + // We cannot await the flush here because it would block the build start + // which in turn would break module federation builds, see + // https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/816 + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Nothing for the users to do here. If telemetry fails it's acceptable. + }); }, }); From 20936b2afe3180c8cdbc365bb196cc0b6a255059 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 28 Oct 2025 10:49:31 +0100 Subject: [PATCH 546/640] feat(core): Bump @sentry/cli from 2.51.0 to 2.57.0 (#819) --- packages/bundler-plugin-core/package.json | 2 +- .../src/build-plugin-manager.ts | 6 - yarn.lock | 180 ++++++------------ 3 files changed, 58 insertions(+), 130 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 71c427aa0914..7d33ac20ed9f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "4.5.0", - "@sentry/cli": "^2.51.0", + "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 77c517f071fa..d876acfceda9 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -491,8 +491,6 @@ export function createSentryBuildPluginManager( await cliInstance.releases.uploadSourceMaps(options.release.name, { include: normalizedInclude, dist: options.release.dist, - // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI - // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released projects: getProjects(options.project), // We want this promise to throw if the sourcemaps fail to upload so that we know about it. // see: https://github.com/getsentry/sentry-cli/pull/2605 @@ -638,8 +636,6 @@ export function createSentryBuildPluginManager( }, ], ignore: ignorePaths, - // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI - // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released projects: getProjects(options.project), live: "rejectOnError", }); @@ -751,8 +747,6 @@ export function createSentryBuildPluginManager( dist: options.release.dist, }, ], - // @ts-expect-error - projects is not a valid option for uploadSourceMaps but is implemented in the CLI - // Remove once https://github.com/getsentry/sentry-cli/pull/2856 is released projects: getProjects(options.project), live: "rejectOnError", } diff --git a/yarn.lock b/yarn.lock index 85d0a46bbcc5..5329a0a5359e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,50 +2726,50 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.51.0.tgz#166d85390a659d3fca9c68cf1f7ea635e5332849" - integrity sha512-8AuC8wCQ+zsx7vqwx0haobumco7B/gk0yeDuf1mr6e4YEOPcVkePCgfVFblZs2/P8CqGy9HzAbvsDrit0IeFLw== - -"@sentry/cli-linux-arm64@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.51.0.tgz#1ddb5f8272f0a5f243bd58a46615ccdb1abe00b2" - integrity sha512-QAcwC+Wns45J8XW8S6sEAdmVscFhn1Bm2qlzNXP1yUxrS7xoRHiHHTwCXtTGBAZ4UHObUc8FFDHbvYmmwJoaYw== - -"@sentry/cli-linux-arm@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.51.0.tgz#3b831e87a74cfa2ec445d7061d65921fc3ade3bd" - integrity sha512-ytomauqP+ifU+LuMFKQe22W2Kn//VwdxGz47DP5yQuItOQ8KcuLHBg4YwSScLWUpoBw1CrK8HTeuRCdrbINTPg== - -"@sentry/cli-linux-i686@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.51.0.tgz#c66fd55614b71effb3dbd5d412f3b5db73570a72" - integrity sha512-uk1hNkvDFK0penLSOdJAO/yGNb0M7bzLx3C+/NUEyfP4biP3x4AGQ8Jnr5wFy3H/YvXziWLfYh+Zh6KKB1doQg== - -"@sentry/cli-linux-x64@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.51.0.tgz#8085f3bc8906e231f98f76f6f2cc224a919d96b2" - integrity sha512-M9bOWwdu0eJEPP75hfAdwXwDKkRq8dP62boWQWSP18ooqXsvmHtXa2qsrH57Ss+JLKvC610Yu2JgRS6o+xx0ug== - -"@sentry/cli-win32-arm64@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.51.0.tgz#30f6bf6b72f049ec93484b357011110867a67d6d" - integrity sha512-kSK29xNzL46npJFt0y/2ztfuIYOvXTQnDGOb1rciUt0rikdVhZLxj+qVMTAEmH6BEUL7gpQb2QWNE7VU9Vsv4A== - -"@sentry/cli-win32-i686@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.51.0.tgz#592e7232ca4849b34db448db8c2e3e6c64ad6233" - integrity sha512-1Ol2FtZ/P4+O/Iu7C/QRYq9lDT0QAUjvtd201M+HzaAPE5W8sFn01GWZpqFnaEcP9JrMB8Hc9mm1Aj5A6zyikQ== - -"@sentry/cli-win32-x64@2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.51.0.tgz#db0742bfd120931a0449f636228ffb2416173de5" - integrity sha512-HEqyhyTZGpw5vaof+gUHNVLRs6fFPycbrLSTbDFRRfbJJGEpmAr6QFJ7IKb4NMMjZ/vB0Mw5SrykD+CiGYI8gw== - -"@sentry/cli@^2.51.0": - version "2.51.0" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.51.0.tgz#58dc7dd734d376a384453d3483b482a10eb88715" - integrity sha512-ISpRhC3dTuA+hM3ksYvSC/1TZOPs+3oOaCNViawX4gve9PZxBvter4/v2FSWrdWBEGvzjZz7CuohU5xm9UM96w== +"@sentry/cli-darwin@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.57.0.tgz#1aaf0c72573926082ed281aef1d42edc40a1baca" + integrity sha512-v1wYQU3BcCO+Z3OVxxO+EnaW4oQhuOza6CXeYZ0z5ftza9r0QQBLz3bcZKTVta86xraNm0z8GDlREwinyddOxQ== + +"@sentry/cli-linux-arm64@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.57.0.tgz#9d923b92e86597d03f0fa52c9b3f71faca810390" + integrity sha512-Kh1jTsMV5Fy/RvB381N/woXe1qclRMqsG6kM3Gq6m6afEF/+k3PyQdNW3HXAola6d63EptokLtxPG2xjWQ+w9Q== + +"@sentry/cli-linux-arm@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.57.0.tgz#98ec9ef22a18bc42eb903c46ca05190cad993597" + integrity sha512-uNHB8xyygqfMd1/6tFzl9NUkuVefg7jdZtM/vVCQVaF/rJLWZ++Wms+LLhYyKXKN8yd7J9wy7kTEl4Qu4jWbGQ== + +"@sentry/cli-linux-i686@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.57.0.tgz#d374072ccfcffb1d75f35b2dfb32279c33f6ccf6" + integrity sha512-EYXghoK/tKd0zqz+KD/ewXXE3u1HLCwG89krweveytBy/qw7M5z58eFvw+iGb1Vnbl1f/fRD0G4E0AbEsPfmpg== + +"@sentry/cli-linux-x64@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.57.0.tgz#6c46d95f0eb86f9dd154c05df3edfc129df354ee" + integrity sha512-CyZrP/ssHmAPLSzfd4ydy7icDnwmDD6o3QjhkWwVFmCd+9slSBMQxpIqpamZmrWE6X4R+xBRbSUjmdoJoZ5yMw== + +"@sentry/cli-win32-arm64@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.57.0.tgz#4c9019c6cdab327e4f7cf4382f13fd770cc17a11" + integrity sha512-wji/GGE4Lh5I/dNCsuVbg6fRvttvZRG6db1yPW1BSvQRh8DdnVy1CVp+HMqSq0SRy/S4z60j2u+m4yXMoCL+5g== + +"@sentry/cli-win32-i686@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.57.0.tgz#e01b0021f8ee6cb59b34cfd04cc74b13110d2e48" + integrity sha512-hWvzyD7bTPh3b55qvJ1Okg3Wbl0Km8xcL6KvS7gfBl6uss+I6RldmQTP0gJKdHSdf/QlJN1FK0b7bLnCB3wHsg== + +"@sentry/cli-win32-x64@2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.57.0.tgz#ed4f0f8563507e503553fe84796dcb9323332814" + integrity sha512-QWYV/Y0sbpDSTyA4XQBOTaid4a6H2Iwa1Z8UI+qNxFlk0ADSEgIqo2NrRHDU8iRnghTkecQNX1NTt/7mXN3f/A== + +"@sentry/cli@^2.57.0": + version "2.57.0" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.57.0.tgz#55c7c826bcc1f6c67cb2fc087bdf4e6facb523b5" + integrity sha512-oC4HPrVIX06GvUTgK0i+WbNgIA9Zl5YEcwf9N4eWFJJmjonr2j4SML9Hn2yNENbUWDgwepy4MLod3P8rM4bk/w== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2777,14 +2777,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.51.0" - "@sentry/cli-linux-arm" "2.51.0" - "@sentry/cli-linux-arm64" "2.51.0" - "@sentry/cli-linux-i686" "2.51.0" - "@sentry/cli-linux-x64" "2.51.0" - "@sentry/cli-win32-arm64" "2.51.0" - "@sentry/cli-win32-i686" "2.51.0" - "@sentry/cli-win32-x64" "2.51.0" + "@sentry/cli-darwin" "2.57.0" + "@sentry/cli-linux-arm" "2.57.0" + "@sentry/cli-linux-arm64" "2.57.0" + "@sentry/cli-linux-i686" "2.57.0" + "@sentry/cli-linux-x64" "2.57.0" + "@sentry/cli-win32-arm64" "2.57.0" + "@sentry/cli-win32-i686" "2.57.0" + "@sentry/cli-win32-x64" "2.57.0" "@sentry/core@7.50.0": version "7.50.0" @@ -3334,19 +3334,7 @@ "@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": +"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@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== @@ -12089,16 +12077,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12180,14 +12159,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13119,7 +13091,7 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4": +"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@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== @@ -13208,35 +13180,6 @@ webpack-virtual-modules@^0.5.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -"webpack@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== - dependencies: - "@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" - 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" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13334,16 +13277,7 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From d7fb379144808569a759f1c50fe9ac443c67acc7 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 28 Oct 2025 11:49:58 +0100 Subject: [PATCH 547/640] meta(changelog): Update changelog for 4.6.0 (#820) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c46ed91e99c..85fdc9b68bee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.6.0 + +- fix(core): Stop awaiting build start telemetry to avoid breaking module federation builds ([#818](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/818)) +- feat(core): Bump @sentry/cli from 2.51.0 to 2.57.0 ([#819](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/819)) + ## 4.5.0 - docs: added info on debug flag value precedence ([#811](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/811)) From 2ad20ebe61eeb4d1c46eee2d8f9e36375749c3b8 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 28 Oct 2025 12:42:58 +0000 Subject: [PATCH 548/640] release: 4.6.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 2403b6e2f0ed..c3d006676acb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.5.0", + "version": "4.6.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 8c3f2d112bc0..b5e6c804a4cf 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.5.0", + "version": "4.6.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 7d33ac20ed9f..bda33c91f90a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.5.0", + "version": "4.6.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.5.0", + "@sentry/babel-plugin-component-annotate": "4.6.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 3f3e7fdb0695..27f16907fbc1 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 3255d3962c13..174bc2846923 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.5.0", - "@sentry/rollup-plugin": "4.5.0", - "@sentry/vite-plugin": "4.5.0", - "@sentry/webpack-plugin": "4.5.0", + "@sentry/esbuild-plugin": "4.6.0", + "@sentry/rollup-plugin": "4.6.0", + "@sentry/vite-plugin": "4.6.0", + "@sentry/webpack-plugin": "4.6.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 62dd4b8d747d..d77b15b99842 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.5.0", + "version": "4.6.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/bundler-plugin-core": "4.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 1939a2e16539..982e795e93cd 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 0ad5ef82e19a..80fab5c880a9 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", - "@sentry/bundler-plugin-core": "4.5.0", - "@sentry/esbuild-plugin": "4.5.0", - "@sentry/rollup-plugin": "4.5.0", - "@sentry/vite-plugin": "4.5.0", - "@sentry/webpack-plugin": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/esbuild-plugin": "4.6.0", + "@sentry/rollup-plugin": "4.6.0", + "@sentry/vite-plugin": "4.6.0", + "@sentry/webpack-plugin": "4.6.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 56592677b010..b548994bacca 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/bundler-plugin-core": "4.6.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d23610ec0a46..a36f94ea0646 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.5.0", + "version": "4.6.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/bundler-plugin-core": "4.6.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 666c02bb3d1e..6e8c117a5bd9 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.5.0", + "version": "4.6.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 8aa43346164f..a0bf3bb8a045 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.5.0", + "version": "4.6.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/bundler-plugin-core": "4.6.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 92ac2a30b50e..f69150acd066 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.5.0", + "version": "4.6.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.5.0", + "@sentry/bundler-plugin-core": "4.6.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.5.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.5.0", + "@sentry-internal/eslint-config": "4.6.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 31d9b6782fb9990c31405e577133640240cefa0f Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 5 Nov 2025 13:40:16 +0100 Subject: [PATCH 549/640] chore(core): Log release output (#821) --- packages/bundler-plugin-core/src/build-plugin-manager.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index d876acfceda9..f130179ecf6a 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -471,7 +471,8 @@ export function createSentryBuildPluginManager( const cliInstance = createCliInstance(options); if (options.release.create) { - await cliInstance.releases.new(options.release.name); + const releaseOutput = await cliInstance.releases.new(options.release.name); + logger.debug("Release created:", releaseOutput); } if (options.release.uploadLegacySourcemaps) { From c98c833e6306231d387377d1888065be34b25ccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Peer=20St=C3=B6cklmair?= Date: Thu, 20 Nov 2025 09:55:47 +0000 Subject: [PATCH 550/640] chore(deps): Update glob to 10.5.0 (#823) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 58 +++++++++++++++++++---- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bda33c91f90a..07af966e6c3f 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -57,7 +57,7 @@ "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", - "glob": "^9.3.2", + "glob": "^10.5.0", "magic-string": "0.30.8", "unplugin": "1.0.1" }, diff --git a/yarn.lock b/yarn.lock index 5329a0a5359e..11b47c9369da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7152,16 +7152,17 @@ glob@8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@^10.2.2: - version "10.2.6" - resolved "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1" - integrity sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA== +glob@^10.2.2, glob@^10.5.0: + version "10.5.0" + resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2" - path-scurry "^1.7.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" @@ -7186,7 +7187,7 @@ glob@^8.0.1, glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@^9.2.0, glob@^9.3.2: +glob@^9.2.0: version "9.3.5" resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== @@ -8117,6 +8118,15 @@ jackspeak@^2.0.3: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.6" resolved "https://registry.npmjs.org/jake/-/jake-10.8.6.tgz#227a96786a1e035214e0ba84b482d6223d41ef04" @@ -9272,6 +9282,11 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -9600,6 +9615,13 @@ minimatch@^9.0.0, minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -9694,6 +9716,11 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -10548,6 +10575,11 @@ p-waterfall@2.1.1: dependencies: p-reduce "^2.0.0" +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + pacote@15.1.1: version "15.1.1" resolved "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" @@ -10724,6 +10756,14 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry@^1.6.1, path-scurry@^1.7.0: version "1.9.2" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" From a6ef800582a86ad34870f39faf20a5fdee2111b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Peer=20St=C3=B6cklmair?= Date: Thu, 20 Nov 2025 10:22:14 +0000 Subject: [PATCH 551/640] meta(changelog): Update changelog for 4.6.1 (#824) --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85fdc9b68bee..b48835708a43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.6.1 + +- chore(deps): Update glob to 10.5.0 ([#823](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/823)) + +
+ Internal Changes + +- chore(core): Log release output ([#821](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/821)) +
+ ## 4.6.0 - fix(core): Stop awaiting build start telemetry to avoid breaking module federation builds ([#818](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/818)) From 467f987ae0251062a410aa1d8c74c9e2d7a0e8e1 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 20 Nov 2025 10:23:42 +0000 Subject: [PATCH 552/640] release: 4.6.1 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index c3d006676acb..ad4287a4501f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.6.0", + "version": "4.6.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index b5e6c804a4cf..e6d3d67a6414 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.6.0", + "version": "4.6.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 07af966e6c3f..09ac578658f8 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.6.0", + "version": "4.6.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.0", + "@sentry/babel-plugin-component-annotate": "4.6.1", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 27f16907fbc1..e7d6c7dff764 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 174bc2846923..119bc58bffb9 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.6.0", - "@sentry/rollup-plugin": "4.6.0", - "@sentry/vite-plugin": "4.6.0", - "@sentry/webpack-plugin": "4.6.0", + "@sentry/esbuild-plugin": "4.6.1", + "@sentry/rollup-plugin": "4.6.1", + "@sentry/vite-plugin": "4.6.1", + "@sentry/webpack-plugin": "4.6.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d77b15b99842..5c76a288bb3c 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.6.0", + "version": "4.6.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 982e795e93cd..6e14fe991200 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 80fab5c880a9..8c7412376d47 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", - "@sentry/bundler-plugin-core": "4.6.0", - "@sentry/esbuild-plugin": "4.6.0", - "@sentry/rollup-plugin": "4.6.0", - "@sentry/vite-plugin": "4.6.0", - "@sentry/webpack-plugin": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/esbuild-plugin": "4.6.1", + "@sentry/rollup-plugin": "4.6.1", + "@sentry/vite-plugin": "4.6.1", + "@sentry/webpack-plugin": "4.6.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index b548994bacca..79a498b8fd72 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index a36f94ea0646..66754f4a9937 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.6.0", + "version": "4.6.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6e8c117a5bd9..6ea53646350a 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.6.0", + "version": "4.6.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a0bf3bb8a045..65be48fdd0ea 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.6.0", + "version": "4.6.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index f69150acd066..9bbe4ad7853a 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.6.0", + "version": "4.6.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.0", + "@sentry/bundler-plugin-core": "4.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.6.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.0", + "@sentry-internal/eslint-config": "4.6.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 777850f5fa4d9844b5ef1bf3ad93940324bc75ff Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 29 Dec 2025 11:21:54 +0200 Subject: [PATCH 553/640] fix(esbuild): fix debug ID injection when `moduleMetadata` or `applicationKey` is set (#828) * tests: added tests to confirm bug * fix(esbuild): ensure debug IDs are injected alongside moduleMetadata * fix: linting and enable es6 * chore: comments * test: added applicationKey setting tests * fix(esbuild): strip query strings from importer paths in metadata proxy check * fix(esbuild): clear state from previous builds for watch mode and tests * fix(esbuild): clear stale metadata entries during build state reset --- packages/esbuild-plugin/.eslintrc.js | 1 + packages/esbuild-plugin/src/index.ts | 103 +++++++++++++----- .../application-key-with-debug-id.test.ts | 57 ++++++++++ .../input/bundle.js | 9 ++ .../application-key-with-debug-id/setup.ts | 18 +++ .../metadata-with-debug-id/input/bundle.js | 9 ++ .../metadata-with-debug-id.test.ts | 56 ++++++++++ .../fixtures/metadata-with-debug-id/setup.ts | 18 +++ 8 files changed, 246 insertions(+), 25 deletions(-) create mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts create mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js create mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts create mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js create mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts create mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js index 42b35d843948..66fc5593fe11 100644 --- a/packages/esbuild-plugin/.eslintrc.js +++ b/packages/esbuild-plugin/.eslintrc.js @@ -11,6 +11,7 @@ module.exports = { }, env: { node: true, + es6: true, }, settings: { jest: { diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 4e8373f6cb12..29918afaa41c 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -42,6 +42,18 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; } +/** + * Shared set to track entry points that have been wrapped by the metadata plugin + * This allows the debug ID plugin to know when an import is coming from a metadata proxy + */ +const metadataProxyEntryPoints = new Set(); + +/** + * Set to track which paths have already been wrapped with debug ID injection + * This prevents the debug ID plugin from wrapping the same module multiple times + */ +const debugIdWrappedPaths = new Set(); + function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { const pluginName = "sentry-esbuild-debug-id-injection-plugin"; const stubNamespace = "sentry-debug-id-stub"; @@ -51,6 +63,13 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { esbuild: { setup({ initialOptions, onLoad, onResolve }) { + // Clear state from previous builds (important for watch mode and test suites) + debugIdWrappedPaths.clear(); + // Also clear metadataProxyEntryPoints here because if moduleMetadataInjectionPlugin + // is not instantiated in this build (e.g., moduleMetadata was disabled), we don't + // want stale entries from a previous build to affect the current one. + metadataProxyEntryPoints.clear(); + if (!initialOptions.bundle) { logger.warn( "The Sentry esbuild plugin only supports esbuild with `bundle: true` being set in the esbuild build options. Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps without `bundle: true`, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" @@ -58,33 +77,56 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { } onResolve({ filter: /.*/ }, (args) => { - if (args.kind !== "entry-point") { + // Inject debug IDs into entry points and into imports from metadata proxy modules + const isEntryPoint = args.kind === "entry-point"; + + // Check if this import is coming from a metadata proxy module + // The metadata plugin registers entry points it wraps in the shared Set + // We need to strip the query string suffix because esbuild includes the suffix + // (e.g., ?sentryMetadataProxyModule=true) in args.importer + const importerPath = args.importer?.split("?")[0]; + const isImportFromMetadataProxy = + args.kind === "import-statement" && + importerPath !== undefined && + metadataProxyEntryPoints.has(importerPath); + + if (!isEntryPoint && !isImportFromMetadataProxy) { return; - } else { - // Injected modules via the esbuild `inject` option do also have `kind == "entry-point"`. - // We do not want to inject debug IDs into those files because they are already bundled into the entrypoints - if (initialOptions.inject?.includes(args.path)) { - return; - } + } - return { - pluginName, - // needs to be an abs path, otherwise esbuild will complain - path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), - pluginData: { - isProxyResolver: true, - originalPath: args.path, - originalResolveDir: args.resolveDir, - }, - // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse - // the module tree any further down past the proxy module because we're essentially creating a dependency - // loop back to the proxy module. - // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, - // making it re-resolve the entrypoint when it is imported from the proxy module. - // Super confusing? Yes. Works? Apparently... Let's see. - suffix: "?sentryProxyModule=true", - }; + // Skip injecting debug IDs into modules specified in the esbuild `inject` option + // since they're already part of the entry points + if (initialOptions.inject?.includes(args.path)) { + return; + } + + const resolvedPath = path.isAbsolute(args.path) + ? args.path + : path.join(args.resolveDir, args.path); + + // Skip injecting debug IDs into paths that have already been wrapped + if (debugIdWrappedPaths.has(resolvedPath)) { + return; } + debugIdWrappedPaths.add(resolvedPath); + + return { + pluginName, + // needs to be an abs path, otherwise esbuild will complain + path: resolvedPath, + pluginData: { + isProxyResolver: true, + originalPath: args.path, + originalResolveDir: args.resolveDir, + }, + // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse + // the module tree any further down past the proxy module because we're essentially creating a dependency + // loop back to the proxy module. + // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, + // making it re-resolve the entrypoint when it is imported from the proxy module. + // Super confusing? Yes. Works? Apparently... Let's see. + suffix: "?sentryProxyModule=true", + }; }); onLoad({ filter: /.*/ }, (args) => { @@ -142,6 +184,9 @@ function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp esbuild: { setup({ initialOptions, onLoad, onResolve }) { + // Clear state from previous builds (important for watch mode and test suites) + metadataProxyEntryPoints.clear(); + onResolve({ filter: /.*/ }, (args) => { if (args.kind !== "entry-point") { return; @@ -152,10 +197,18 @@ function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOp return; } + const resolvedPath = path.isAbsolute(args.path) + ? args.path + : path.join(args.resolveDir, args.path); + + // Register this entry point so the debug ID plugin knows to wrap imports from + // this proxy module, this because the debug ID may run after the metadata plugin + metadataProxyEntryPoints.add(resolvedPath); + return { pluginName, // needs to be an abs path, otherwise esbuild will complain - path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), + path: resolvedPath, pluginData: { isMetadataProxyResolver: true, originalPath: args.path, 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 new file mode 100644 index 000000000000..57eb798a7dc3 --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts @@ -0,0 +1,57 @@ +/* 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"; + +interface BundleOutput { + debugIds: Record | undefined; + metadata: Record | undefined; +} + +function checkBundle(bundlePath: string): void { + const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + const result = JSON.parse(output) as BundleOutput; + + // Check that debug IDs are present + expect(result.debugIds).toBeDefined(); + const debugIds = Object.values(result.debugIds ?? {}); + expect(debugIds.length).toBeGreaterThan(0); + // Verify debug ID format (UUID v4) + expect(debugIds).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + // The key should be a stack trace + expect(Object.keys(result.debugIds ?? {})[0]).toContain("Error"); + + // Check that applicationKey metadata is present + expect(result.metadata).toBeDefined(); + const metadataValues = Object.values(result.metadata ?? {}); + expect(metadataValues).toHaveLength(1); + // applicationKey sets a special key in the metadata + expect(metadataValues[0]).toEqual({ "_sentryBundlerPluginAppKey:my-app-key": true }); + // The key should be a stack trace + expect(Object.keys(result.metadata ?? {})[0]).toContain("Error"); +} + +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("esbuild bundle", () => { + checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); + }); + + test("rollup bundle", () => { + checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); + }); + + test("vite bundle", () => { + checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); + }); +}); diff --git a/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js b/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js new file mode 100644 index 000000000000..b419f9d0f52a --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js @@ -0,0 +1,9 @@ +/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ +// Output both debug IDs and metadata to verify applicationKey works with debug ID injection +// eslint-disable-next-line no-console +console.log( + JSON.stringify({ + debugIds: global._sentryDebugIds, + metadata: global._sentryModuleMetadata, + }) +); 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 new file mode 100644 index 000000000000..8b33efecfc08 --- /dev/null +++ b/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts @@ -0,0 +1,18 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + // Enable applicationKey AND debug ID injection (sourcemaps enabled by default) + applicationKey: "my-app-key", + telemetry: false, + release: { name: "test-release", create: false }, + }, + ["webpack4", "webpack5", "esbuild", "rollup", "vite"] +); diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js b/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js new file mode 100644 index 000000000000..13a0b516a3a7 --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js @@ -0,0 +1,9 @@ +/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ +// Output both debug IDs and metadata to verify both features work together +// eslint-disable-next-line no-console +console.log( + JSON.stringify({ + debugIds: global._sentryDebugIds, + metadata: global._sentryModuleMetadata, + }) +); 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 new file mode 100644 index 000000000000..534397a9422b --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts @@ -0,0 +1,56 @@ +/* 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"; + +interface BundleOutput { + debugIds: Record | undefined; + metadata: Record | undefined; +} + +function checkBundle(bundlePath: string): void { + const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + const result = JSON.parse(output) as BundleOutput; + + // Check that debug IDs are present + expect(result.debugIds).toBeDefined(); + const debugIds = Object.values(result.debugIds ?? {}); + expect(debugIds.length).toBeGreaterThan(0); + // Verify debug ID format (UUID v4) + expect(debugIds).toContainEqual( + expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) + ); + // The key should be a stack trace + expect(Object.keys(result.debugIds ?? {})[0]).toContain("Error"); + + // Check that metadata is present + expect(result.metadata).toBeDefined(); + const metadataValues = Object.values(result.metadata ?? {}); + expect(metadataValues).toHaveLength(1); + expect(metadataValues).toEqual([{ team: "frontend" }]); + // The key should be a stack trace + expect(Object.keys(result.metadata ?? {})[0]).toContain("Error"); +} + +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("esbuild bundle", () => { + checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); + }); + + test("rollup bundle", () => { + checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); + }); + + test("vite bundle", () => { + checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); + }); +}); diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts b/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts new file mode 100644 index 000000000000..75d1fc4bf451 --- /dev/null +++ b/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts @@ -0,0 +1,18 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles"; + +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles( + { + bundle: path.resolve(__dirname, "input", "bundle.js"), + }, + outputDir, + { + // Enable both moduleMetadata AND debug ID injection (sourcemaps enabled by default) + moduleMetadata: { team: "frontend" }, + telemetry: false, + release: { name: "test-release", create: false }, + }, + ["webpack4", "webpack5", "esbuild", "rollup", "vite"] +); From ef6f4bb6eadd503ce769305782eed2f01e286aa3 Mon Sep 17 00:00:00 2001 From: Sigrid <32902192+s1gr1d@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:18:58 +0100 Subject: [PATCH 554/640] fix(rollup): Prevent double-injection of debug ID (#827) * fix(rollup): Prevent double-injection of debug ID * prettier * fix linting issues * use matchInlineSnapshot fn * increase boundary to 6000 chars --- packages/bundler-plugin-core/src/index.ts | 11 +++ .../bundler-plugin-core/test/index.test.ts | 94 ++++++++++++++++++- 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 2c38cac7a5b6..a59eeca0065c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -269,6 +269,17 @@ export function createRollupDebugIdInjectionHooks(): { stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) ) ) { + // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) + const chunkStartSnippet = code.slice(0, 6000); + const chunkEndSnippet = code.slice(-500); + + if ( + chunkStartSnippet.includes("_sentryDebugIdIdentifier") || + chunkEndSnippet.includes("//# debugId=") + ) { + return null; // Debug ID already present, skip injection + } + const debugId = stringToUUID(code); // generate a deterministic debug ID const codeToInject = getDebugIdSnippet(debugId); diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index f6c60aa056ab..9c69694e71a6 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -1,5 +1,9 @@ import { Compiler } from "webpack"; -import { getDebugIdSnippet, sentryUnpluginFactory } from "../src"; +import { + getDebugIdSnippet, + sentryUnpluginFactory, + createRollupDebugIdInjectionHooks, +} from "../src"; describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { @@ -10,6 +14,94 @@ describe("getDebugIdSnippet", () => { }); }); +describe("createRollupDebugIdInjectionHooks", () => { + const hooks = createRollupDebugIdInjectionHooks(); + + describe("renderChunk", () => { + it("should inject debug ID into clean JavaScript files", () => { + const code = 'console.log("Hello world");'; + const result = hooks.renderChunk(code, { fileName: "bundle.js" }); + + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot( + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");"` + ); + }); + + it("should inject debug ID after 'use strict'", () => { + const code = '"use strict";\nconsole.log("Hello world");'; + const result = hooks.renderChunk(code, { fileName: "bundle.js" }); + + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot(` + "\\"use strict\\";;{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");" + `); + }); + + it.each([ + ["bundle.js"], + ["bundle.mjs"], + ["bundle.cjs"], + ["bundle.js?foo=bar"], + ["bundle.js#hash"], + ])("should process file '%s': %s", (fileName) => { + const code = 'console.log("test");'; + const result = hooks.renderChunk(code, { fileName }); + + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot( + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");"` + ); + }); + + it.each([["index.html"], ["styles.css"]])("should NOT process file '%s': %s", (fileName) => { + const code = 'console.log("test");'; + const result = hooks.renderChunk(code, { fileName }); + + expect(result).toBeNull(); + }); + + it.each([ + [ + "inline format at start", + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};console.log("test");', + ], + [ + "comment format at end", + 'console.log("test");\n//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n//# sourceMappingURL=bundle.js.map', + ], + [ + "inline format with large file", + '"use strict";\n' + + "// comment\n".repeat(10) + + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};' + + '\nconsole.log("line");\n'.repeat(100), + ], + ])("should NOT inject when debug ID already exists (%s)", (_description, code) => { + const result = hooks.renderChunk(code, { fileName: "bundle.js" }); + expect(result).toBeNull(); + }); + + it("should only check boundaries for performance (not entire file)", () => { + // Inline format beyond first 6KB boundary + const codeWithInlineBeyond6KB = + "a".repeat(6100) + + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};'; + + expect(hooks.renderChunk(codeWithInlineBeyond6KB, { fileName: "bundle.js" })).not.toBeNull(); + + // Comment format beyond last 500 bytes boundary + const codeWithCommentBeyond500B = + "//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n" + "a".repeat(600); + + expect( + hooks.renderChunk(codeWithCommentBeyond500B, { fileName: "bundle.js" }) + ).not.toBeNull(); + }); + }); +}); + describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const mockReleaseInjectionPlugin = jest.fn((_injectionCode: string) => ({ name: "mock-release-injection-plugin", From 4728fc19a7a6e789b38d7d37f7abc225a01d0e12 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Wed, 7 Jan 2026 14:03:25 +0200 Subject: [PATCH 555/640] fix(vite): Skip code injection for HTML facade chunks (#830) * test: added testing fixtures * fix: skip code injection in facade and empty code chunks * refactor(tests): tighten assertions and remove unused console.log * refactor: extract file type check * style: format fixture code --- packages/bundler-plugin-core/src/index.ts | 196 +++++++++++------- .../build-vite-with-plugin.ts | 28 +++ .../build-vite-without-plugin.ts | 22 ++ .../vite-mpa-extra-modules/input/index.html | 11 + .../vite-mpa-extra-modules/input/page1.html | 11 + .../vite-mpa-extra-modules/input/page2.html | 11 + .../input/shared-module.js | 10 + .../vite-mpa-extra-modules.test.ts | 103 +++++++++ 8 files changed, 312 insertions(+), 80 deletions(-) create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js create mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a59eeca0065c..bc350184754a 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -206,44 +206,80 @@ type RenderChunkHook = ( code: string, chunk: { fileName: string; + facadeModuleId?: string | null; } ) => { code: string; map: SourceMap; } | null; +/** + * Checks if a file is a JavaScript file based on its extension. + * Handles query strings and hashes in the filename. + */ +function isJsFile(fileName: string): boolean { + const cleanFileName = stripQueryAndHashFromPath(fileName); + return [".js", ".mjs", ".cjs"].some((ext) => cleanFileName.endsWith(ext)); +} + +/** + * Checks if a chunk should be skipped for code injection + * + * This is necessary to handle Vite's MPA (multi-page application) mode where + * HTML entry points create "facade" chunks that should not contain injected code. + * See: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/829 + * + * @param code - The chunk's code content + * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks + * @returns true if the chunk should be skipped + */ +function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | undefined): boolean { + // Skip empty chunks - these are placeholder chunks that should be optimized away + if (code.trim().length === 0) { + return true; + } + + // Skip HTML facade chunks + // They only contain import statements and should not have Sentry code injected + if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith(".html")) { + return true; + } + + return false; +} + export function createRollupReleaseInjectionHooks(injectionCode: string): { renderChunk: RenderChunkHook; } { return { - renderChunk(code: string, chunk: { fileName: string }) { - if ( - // chunks could be any file (html, md, ...) - [".js", ".mjs", ".cjs"].some((ending) => - stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) - ) - ) { - const ms = new MagicString(code, { filename: chunk.fileName }); + renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { + if (!isJsFile(chunk.fileName)) { + return null; // returning null means not modifying the chunk at all + } - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + // Skip empty chunks and HTML facade chunks (Vite MPA) + if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { + return null; + } - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, injectionCode); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(injectionCode); - } + const ms = new MagicString(code, { filename: chunk.fileName }); - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), - }; + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectionCode); } else { - return null; // returning null means not modifying the chunk at all + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectionCode); } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), + }; }, }; } @@ -262,48 +298,48 @@ export function createRollupDebugIdInjectionHooks(): { renderChunk: RenderChunkHook; } { return { - renderChunk(code: string, chunk: { fileName: string }) { + renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { + if (!isJsFile(chunk.fileName)) { + return null; // returning null means not modifying the chunk at all + } + + // Skip empty chunks and HTML facade chunks (Vite MPA) + if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { + return null; + } + + // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) + const chunkStartSnippet = code.slice(0, 6000); + const chunkEndSnippet = code.slice(-500); + if ( - // chunks could be any file (html, md, ...) - [".js", ".mjs", ".cjs"].some((ending) => - stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) - ) + chunkStartSnippet.includes("_sentryDebugIdIdentifier") || + chunkEndSnippet.includes("//# debugId=") ) { - // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) - const chunkStartSnippet = code.slice(0, 6000); - const chunkEndSnippet = code.slice(-500); - - if ( - chunkStartSnippet.includes("_sentryDebugIdIdentifier") || - chunkEndSnippet.includes("//# debugId=") - ) { - return null; // Debug ID already present, skip injection - } - - const debugId = stringToUUID(code); // generate a deterministic debug ID - const codeToInject = getDebugIdSnippet(debugId); + return null; // Debug ID already present, skip injection + } - const ms = new MagicString(code, { filename: chunk.fileName }); + const debugId = stringToUUID(code); // generate a deterministic debug ID + const codeToInject = getDebugIdSnippet(debugId); - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + const ms = new MagicString(code, { filename: chunk.fileName }); - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, codeToInject); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(codeToInject); - } + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), - }; + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, codeToInject); } else { - return null; // returning null means not modifying the chunk at all + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(codeToInject); } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), + }; }, }; } @@ -312,34 +348,34 @@ export function createRollupModuleMetadataInjectionHooks(injectionCode: string): renderChunk: RenderChunkHook; } { return { - renderChunk(code: string, chunk: { fileName: string }) { - if ( - // chunks could be any file (html, md, ...) - [".js", ".mjs", ".cjs"].some((ending) => - stripQueryAndHashFromPath(chunk.fileName).endsWith(ending) - ) - ) { - const ms = new MagicString(code, { filename: chunk.fileName }); + renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { + if (!isJsFile(chunk.fileName)) { + return null; // returning null means not modifying the chunk at all + } - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + // Skip empty chunks and HTML facade chunks (Vite MPA) + if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { + return null; + } - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, injectionCode); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(injectionCode); - } + const ms = new MagicString(code, { filename: chunk.fileName }); - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), - }; + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectionCode); } else { - return null; // returning null means not modifying the chunk at all + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectionCode); } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), + }; }, }; } 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 new file mode 100644 index 000000000000..fc9b426d933b --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts @@ -0,0 +1,28 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import * as path from "path"; +import * as vite from "vite"; + +const inputDir = path.join(__dirname, "input"); + +void vite.build({ + clearScreen: false, + root: inputDir, + build: { + sourcemap: true, + outDir: path.join(__dirname, "out", "with-plugin"), + emptyOutDir: true, + rollupOptions: { + input: { + index: path.join(inputDir, "index.html"), + page1: path.join(inputDir, "page1.html"), + page2: path.join(inputDir, "page2.html"), + }, + }, + }, + plugins: [ + sentryVitePlugin({ + telemetry: false, + // Empty options - the issue says options don't affect the results + }), + ], +}); diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts new file mode 100644 index 000000000000..85112284e9f0 --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts @@ -0,0 +1,22 @@ +import * as path from "path"; +import * as vite from "vite"; + +const inputDir = path.join(__dirname, "input"); + +void vite.build({ + clearScreen: false, + root: inputDir, + build: { + sourcemap: true, + outDir: path.join(__dirname, "out", "without-plugin"), + emptyOutDir: true, + rollupOptions: { + input: { + index: path.join(inputDir, "index.html"), + page1: path.join(inputDir, "page1.html"), + page2: path.join(inputDir, "page2.html"), + }, + }, + }, + plugins: [], +}); diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html new file mode 100644 index 000000000000..ae984747be10 --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html @@ -0,0 +1,11 @@ + + + + + Index Page + + +

Index Page - No Scripts

+ + + diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html new file mode 100644 index 000000000000..7c8bbff00d70 --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html @@ -0,0 +1,11 @@ + + + + + Page 1 + + +

Page 1 - With Shared Module

+ + + diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html new file mode 100644 index 000000000000..d37e99087eb0 --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html @@ -0,0 +1,11 @@ + + + + + Page 2 + + +

Page 2 - With Shared Module

+ + + diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js new file mode 100644 index 000000000000..07182654d2da --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js @@ -0,0 +1,10 @@ +// This is a shared module that is used by multiple HTML pages +export function greet(name) { + // eslint-disable-next-line no-console + console.log(`Hello, ${String(name)}!`); +} + +export const VERSION = "1.0.0"; + +// Side effect: greet on load +greet("World"); 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 new file mode 100644 index 000000000000..6e6bbc56ed32 --- /dev/null +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts @@ -0,0 +1,103 @@ +/** + * Test for GitHub Issue #829: + * sentryVitePlugin creates unnecessary JS modules for each index page + * + * In a Vite multi-page app (MPA), sentryVitePlugin causes "vite build" to emit + * a separate, unique, unexpected JS module for each index page. + * + * Expected: The plugin should add metadata to generated modules but should NOT + * rework the import graph, create new modules, or add script tags to pages + * that didn't have them in the first place. + * + * Actual: A unique module is generated for every HTML page in rollup.options.input. + * Pages that had been sharing modules will instead load a page-specific module + * that imports the shared code. Pages that didn't contain ANY scripts will now have one. + */ +import childProcess from "child_process"; +import fs from "fs"; +import path from "path"; + +function getAssetFiles(outDir: string): string[] { + const assetsDir = path.join(outDir, "assets"); + if (!fs.existsSync(assetsDir)) { + return []; + } + return fs.readdirSync(assetsDir).filter((file) => file.endsWith(".js")); +} + +function getScriptTagsFromHtml(htmlPath: string): string[] { + if (!fs.existsSync(htmlPath)) { + return []; + } + const content = fs.readFileSync(htmlPath, "utf-8"); + const scriptMatches = content.match(/]*>/g) || []; + return scriptMatches; +} + +describe("Vite MPA Extra Modules Issue (#829)", () => { + const outWithoutPlugin = path.join(__dirname, "out", "without-plugin"); + const outWithPlugin = path.join(__dirname, "out", "with-plugin"); + + beforeAll(() => { + // Clean output directories + if (fs.existsSync(outWithoutPlugin)) { + fs.rmSync(outWithoutPlugin, { recursive: true }); + } + if (fs.existsSync(outWithPlugin)) { + fs.rmSync(outWithPlugin, { recursive: true }); + } + + // Build without plugin + childProcess.execSync(`yarn ts-node ${path.join(__dirname, "build-vite-without-plugin.ts")}`, { + encoding: "utf-8", + stdio: "inherit", + }); + + // Build with plugin + childProcess.execSync(`yarn ts-node ${path.join(__dirname, "build-vite-with-plugin.ts")}`, { + encoding: "utf-8", + stdio: "inherit", + }); + }, 60_000); + + it("should not create extra JS modules when sentry plugin is enabled", () => { + const assetsWithoutPlugin = getAssetFiles(outWithoutPlugin); + const assetsWithPlugin = getAssetFiles(outWithPlugin); + + // The number of JS files should be the same (or very close) + // With the bug, the plugin creates extra modules like index.js, page1.js, page2.js + // for each HTML entry point + expect(assetsWithPlugin).toHaveLength(assetsWithoutPlugin.length); + }); + + it("should not add script tags to HTML pages that had none", () => { + // index.html originally has no scripts + const indexWithoutPlugin = getScriptTagsFromHtml(path.join(outWithoutPlugin, "index.html")); + const indexWithPlugin = getScriptTagsFromHtml(path.join(outWithPlugin, "index.html")); + + // The number of script tags should be the same + // With the bug, index.html gets a script tag added even though it had none + expect(indexWithPlugin).toHaveLength(indexWithoutPlugin.length); + }); + + it("should preserve shared module imports without creating page-specific wrappers", () => { + // page1.html and page2.html should both reference the same shared module + // not page-specific modules + const page1WithPlugin = fs.readFileSync(path.join(outWithPlugin, "page1.html"), "utf-8"); + const page2WithPlugin = fs.readFileSync(path.join(outWithPlugin, "page2.html"), "utf-8"); + + // Extract the JS file references + const page1ScriptMatch = page1WithPlugin.match(/src="([^"]+\.js)"/); + const page2ScriptMatch = page2WithPlugin.match(/src="([^"]+\.js)"/); + + // Both pages should reference the same shared module, not page-specific ones + // With the bug, page1.html references page1-xxx.js and page2.html references page2-xxx.js + // instead of both referencing shared-module-xxx.js + const page1Script = page1ScriptMatch?.[1]; + const page2Script = page2ScriptMatch?.[1]; + + // They should NOT be page-specific (named after the page) + expect(page1Script).not.toMatch(/page1/i); + expect(page2Script).not.toMatch(/page2/i); + }); +}); From 0ed84146c24e93af0a8ebb5416709ceaa589a8eb Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 14 Jan 2026 16:45:03 +0100 Subject: [PATCH 556/640] fix(vite): Ensure sentryVitePlugin always returns an array of plugins (#832) Normalizes the vite plugin to always return an array of plugins. --- packages/vite-plugin/src/index.ts | 6 +++++- packages/vite-plugin/test/public-api.test.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 9a31e2878cdf..2c460f8b1c01 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -73,7 +73,11 @@ const sentryUnplugin = sentryUnpluginFactory({ bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, }); -export const sentryVitePlugin: (options?: Options) => VitePlugin[] = sentryUnplugin.vite; +export const sentryVitePlugin = (options?: Options): VitePlugin[] => { + const result = sentryUnplugin.vite(options); + // unplugin returns a single plugin instead of an array when only one plugin is created, so we normalize this here. + return Array.isArray(result) ? result : [result]; +}; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index 22bec8eac08c..8c311783b4c9 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -32,4 +32,17 @@ describe("sentryVitePlugin", () => { ]) ); }); + + it("returns an array of Vite pluginswhen unplugin returns a single plugin", () => { + const plugins = sentryVitePlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + disable: true, // This causes unplugin to return only the noop plugin + }); + + expect(Array.isArray(plugins)).toBe(true); + expect(plugins.length).toBeGreaterThanOrEqual(1); + expect(plugins[0]).toHaveProperty("name"); + }); }); From 328c9ef782af67554c98d0dba09b878b49abf98f Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 14 Jan 2026 17:23:26 +0100 Subject: [PATCH 557/640] meta(changelog): Update changelog for 4.6.2 (#833) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b48835708a43..5f7afdc3f1c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.6.2 + +- fix(vite): Ensure sentryVitePlugin always returns an array of plugins ([#832](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/832)) +- fix(vite): Skip code injection for HTML facade chunks ([#830](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/830)) +- fix(rollup): Prevent double-injection of debug ID ([#827](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/827)) +- fix(esbuild): fix debug ID injection when moduleMetadata or applicationKey is set ([#828](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/828)) + ## 4.6.1 - chore(deps): Update glob to 10.5.0 ([#823](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/823)) From 770c8c5c6107da500d0fd6d2d6d504b535968973 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 14 Jan 2026 16:25:30 +0000 Subject: [PATCH 558/640] release: 4.6.2 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index ad4287a4501f..7e1f97c1e86a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.6.1", + "version": "4.6.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e6d3d67a6414..fe4d3e35acda 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.6.1", + "version": "4.6.2", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 09ac578658f8..cb07c69d243c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.6.1", + "version": "4.6.2", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.1", + "@sentry/babel-plugin-component-annotate": "4.6.2", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index e7d6c7dff764..905fa1d77c55 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 119bc58bffb9..c349db873b3f 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.6.1", - "@sentry/rollup-plugin": "4.6.1", - "@sentry/vite-plugin": "4.6.1", - "@sentry/webpack-plugin": "4.6.1", + "@sentry/esbuild-plugin": "4.6.2", + "@sentry/rollup-plugin": "4.6.2", + "@sentry/vite-plugin": "4.6.2", + "@sentry/webpack-plugin": "4.6.2", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5c76a288bb3c..2369fe5ee74b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.6.1", + "version": "4.6.2", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 6e14fe991200..6e2ac414d97a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8c7412376d47..24099b20849f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", - "@sentry/bundler-plugin-core": "4.6.1", - "@sentry/esbuild-plugin": "4.6.1", - "@sentry/rollup-plugin": "4.6.1", - "@sentry/vite-plugin": "4.6.1", - "@sentry/webpack-plugin": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/esbuild-plugin": "4.6.2", + "@sentry/rollup-plugin": "4.6.2", + "@sentry/vite-plugin": "4.6.2", + "@sentry/webpack-plugin": "4.6.2", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 79a498b8fd72..9568daabf834 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 66754f4a9937..e4dbff514da4 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.6.1", + "version": "4.6.2", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 6ea53646350a..057d3d402f0e 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 65be48fdd0ea..260430a781d1 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.6.1", + "version": "4.6.2", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 9bbe4ad7853a..ef2ec4956659 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.6.1", + "version": "4.6.2", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.6.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.1", + "@sentry-internal/eslint-config": "4.6.2", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 36b714b9a8224ce9263c533e881f5ad4c6ea8997 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 14 Jan 2026 17:56:53 +0100 Subject: [PATCH 559/640] docs: Add RELEASE.md to document release process (#834) --- RELEASE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 RELEASE.md diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 000000000000..59100d9166f1 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,5 @@ +# Release Process + +1. Open a PR to update the changelog on `main` +2. After the changelog PR is merged, go to the **Actions** tab and manually trigger the **"Prepare Release"** workflow, entering the version you want to release +3. After the workflow completes, go to [getsentry/publish](https://github.com/getsentry/publish), find the corresponding issue created by the workflow, and add the `accepted` label to finalize the release From f7bcee9206da330e60e9e9deeb19f9f15c6f354e Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Thu, 15 Jan 2026 13:20:20 +0000 Subject: [PATCH 560/640] ci(release): Switch from action-prepare-release to Craft (#831) This PR migrates from the deprecated action-prepare-release to the new Craft GitHub Actions (reusable workflow or composite action). Changes: - Migrate .github/workflows/release.yml to Craft reusable workflow --- .github/workflows/changelog-preview.yml | 18 ++++++++++++++++++ .github/workflows/release.yml | 10 +++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/changelog-preview.yml diff --git a/.github/workflows/changelog-preview.yml b/.github/workflows/changelog-preview.yml new file mode 100644 index 000000000000..8c86731f3f9b --- /dev/null +++ b/.github/workflows/changelog-preview.yml @@ -0,0 +1,18 @@ +name: Changelog Preview +on: + pull_request: + types: + - opened + - synchronize + - reopened + - edited + - labeled + - unlabeled +permissions: + contents: write + pull-requests: write + +jobs: + changelog-preview: + uses: getsentry/craft/.github/workflows/changelog-preview.yml@v2 + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c331bbc26a0c..70c40083ee9f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,14 +3,18 @@ on: workflow_dispatch: inputs: version: - description: Version to release - required: true + description: Version to release (or "auto") + required: false force: description: Force a release even when there are release-blockers (optional) required: false merge_target: description: Target branch to merge into. Uses the default branch as a fallback (optional) required: false +permissions: + contents: write + pull-requests: write + jobs: release: runs-on: ubuntu-latest @@ -27,7 +31,7 @@ jobs: token: ${{ steps.token.outputs.token }} fetch-depth: 0 - name: Prepare release - uses: getsentry/action-prepare-release@v1 + uses: getsentry/craft@c6e2f04939b6ee67030588afbb5af76b127d8203 # v2 env: GITHUB_TOKEN: ${{ steps.token.outputs.token }} with: From 8b93465b9b0ba5fa49977d7222a98db90d812d2b Mon Sep 17 00:00:00 2001 From: Sigrid <32902192+s1gr1d@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:33:48 +0100 Subject: [PATCH 561/640] fix(plugin-manager): Enable "rejectOnError" in debug (#837) * fix(plugin-manager): Enable "rejectOnError" in debug * fix ci fails --- .../bundler-plugin-core/src/build-plugin-manager.ts | 2 +- .../test/build-plugin-manager.test.ts | 4 ++-- yarn.lock | 13 ++----------- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index f130179ecf6a..af9b243d022d 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -555,7 +555,7 @@ export function createSentryBuildPluginManager( const cliInstance = createCliInstance(options); await cliInstance.execute( ["sourcemaps", "inject", ...buildArtifactPaths], - options.debug ?? false + options.debug ? "rejectOnError" : false ); } catch (e) { sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); 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 1003d57c096f..e3c87c631158 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -439,7 +439,7 @@ describe("createSentryBuildPluginManager", () => { ); }); - it("should pass debug flag when options.debug is true", async () => { + it('should pass "rejectOnError" flag when options.debug is true', async () => { mockCliExecute.mockResolvedValue(undefined); const buildPluginManager = createSentryBuildPluginManager( @@ -460,7 +460,7 @@ describe("createSentryBuildPluginManager", () => { expect(mockCliExecute).toHaveBeenCalledWith( ["sourcemaps", "inject", "/path/to/bundle"], - true + "rejectOnError" ); }); }); diff --git a/yarn.lock b/yarn.lock index 11b47c9369da..5f7ab0c9c0d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8109,15 +8109,6 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" @@ -9608,7 +9599,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: +minimatch@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== @@ -10764,7 +10755,7 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-scurry@^1.6.1, path-scurry@^1.7.0: +path-scurry@^1.6.1: version "1.9.2" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== From 8e5301987d14b4e237d01cbc9fc4a46f4e8a783d Mon Sep 17 00:00:00 2001 From: Sigrid <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 16 Jan 2026 10:52:39 +0100 Subject: [PATCH 562/640] fix(plugin-manager): Respect `sourcemap.ignore` values for injecting debugIDs (#836) * fix(plugin-manager): Respect `sourcemap.ignore` values for injecting debugIDs * fix order * fix tests --- .../src/build-plugin-manager.ts | 8 ++++++- packages/bundler-plugin-core/src/utils.ts | 20 ++++++++++++++++ .../test/build-plugin-manager.test.ts | 4 ++-- .../bundler-plugin-core/test/utils.test.ts | 23 +++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index af9b243d022d..4ae624195599 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -23,6 +23,7 @@ import { arrayify, getProjects, getTurborepoEnvPassthroughWarning, + serializeIgnoreOptions, stripQueryAndHashFromPath, } from "./utils"; import { glob } from "glob"; @@ -554,7 +555,12 @@ export function createSentryBuildPluginManager( try { const cliInstance = createCliInstance(options); await cliInstance.execute( - ["sourcemaps", "inject", ...buildArtifactPaths], + [ + "sourcemaps", + "inject", + ...serializeIgnoreOptions(options.sourcemaps?.ignore), + ...buildArtifactPaths, + ], options.debug ? "rejectOnError" : false ); } catch (e) { diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index a1aebf1184b6..64400a292417 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -408,3 +408,23 @@ export function getProjects(project: string | string[] | undefined): string[] | return undefined; } + +/** + * Inlined functionality from @sentry/cli helper code to add `--ignore` options. + * + * Temporary workaround until we expose a function for injecting debug IDs. Currently, we directly call `execute` with CLI args to inject them. + */ +export function serializeIgnoreOptions(ignoreValue: string | string[] | undefined): string[] { + const DEFAULT_IGNORE = ["node_modules"]; + + const ignoreOptions: string[] = Array.isArray(ignoreValue) + ? ignoreValue + : typeof ignoreValue === "string" + ? [ignoreValue] + : DEFAULT_IGNORE; + + return ignoreOptions.reduce( + (acc, value) => acc.concat(["--ignore", String(value)]), + [] as string[] + ); +} 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 e3c87c631158..9f3968ebd38f 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -434,7 +434,7 @@ describe("createSentryBuildPluginManager", () => { await buildPluginManager.injectDebugIds(buildArtifactPaths); expect(mockCliExecute).toHaveBeenCalledWith( - ["sourcemaps", "inject", "/path/to/1", "/path/to/2"], + ["sourcemaps", "inject", "--ignore", "node_modules", "/path/to/1", "/path/to/2"], false ); }); @@ -459,7 +459,7 @@ describe("createSentryBuildPluginManager", () => { await buildPluginManager.injectDebugIds(buildArtifactPaths); expect(mockCliExecute).toHaveBeenCalledWith( - ["sourcemaps", "inject", "/path/to/bundle"], + ["sourcemaps", "inject", "--ignore", "node_modules", "/path/to/bundle"], "rejectOnError" ); }); diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 90fe96665765..bcb5e4ccab9a 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -5,6 +5,7 @@ import { getPackageJson, parseMajorVersion, replaceBooleanFlagsInCode, + serializeIgnoreOptions, stringToUUID, } from "../src/utils"; @@ -270,3 +271,25 @@ describe("generateModuleMetadataInjectorCode", () => { expect(generatedCode).toMatchSnapshot(); }); }); + +describe("serializeIgnoreOptions", () => { + it("returns default ignore options when undefined", () => { + const result = serializeIgnoreOptions(undefined); + expect(result).toEqual(["--ignore", "node_modules"]); + }); + + it("handles array of ignore patterns", () => { + const result = serializeIgnoreOptions(["dist", "**/build/**", "*.log"]); + expect(result).toEqual(["--ignore", "dist", "--ignore", "**/build/**", "--ignore", "*.log"]); + }); + + it("handles single string pattern", () => { + const result = serializeIgnoreOptions("dist"); + expect(result).toEqual(["--ignore", "dist"]); + }); + + it("handles empty array", () => { + const result = serializeIgnoreOptions([]); + expect(result).toEqual([]); + }); +}); From e6eaeceaff1d64fa2eae6da925b955620ef0f7a1 Mon Sep 17 00:00:00 2001 From: Sigrid <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:18:54 +0100 Subject: [PATCH 563/640] fix(vite): Skip HTML injection for MPA but keep it for SPA (#843) * fix(vite): Skip HTML injection for MPA but keep it for SPA * fix Polynomial regular expression used on uncontrolled data --- packages/bundler-plugin-core/src/index.ts | 9 +- packages/bundler-plugin-core/src/utils.ts | 31 +++ .../bundler-plugin-core/test/index.test.ts | 233 ++++++++++++++++++ 3 files changed, 270 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index bc350184754a..76daf20e3e9d 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -12,6 +12,7 @@ import { createDebugIdUploadFunction } from "./debug-id-upload"; import { Logger } from "./logger"; import { Options, SentrySDKBuildFlags } from "./types"; import { + containsOnlyImports, generateGlobalInjectorCode, generateModuleMetadataInjectorCode, replaceBooleanFlagsInCode, @@ -229,6 +230,9 @@ function isJsFile(fileName: string): boolean { * HTML entry points create "facade" chunks that should not contain injected code. * See: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/829 * + * However, in SPA mode, the main bundle also has an HTML facade but contains + * substantial application code. We should NOT skip injection for these bundles. + * * @param code - The chunk's code content * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks * @returns true if the chunk should be skipped @@ -239,10 +243,9 @@ function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | u return true; } - // Skip HTML facade chunks - // They only contain import statements and should not have Sentry code injected + // For HTML facade chunks, only skip if they contain only import statements if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith(".html")) { - return true; + return containsOnlyImports(code); } return false; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 64400a292417..925d83f6655b 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -428,3 +428,34 @@ export function serializeIgnoreOptions(ignoreValue: string | string[] | undefine [] as string[] ); } + +/** + * Checks if a chunk contains only import/export statements and no substantial code. + * + * In Vite MPA (multi-page application) mode, HTML entry points create "facade" chunks + * that only contain import statements to load shared modules. These should not have + * Sentry code injected. However, in SPA mode, the main bundle also has an HTML facade + * but contains substantial application code that SHOULD have debug IDs injected. + * + * @ref https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/829 + * @ref https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/839 + */ +export function containsOnlyImports(code: string): boolean { + const codeWithoutImports = code + // Remove side effect imports: import '/path'; or import "./path"; + // Using explicit negated character classes to avoid polynomial backtracking + .replace(/^\s*import\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "") + // Remove named/default imports: import x from '/path'; import { x } from '/path'; + .replace(/^\s*import\b[^'"`\n]*\bfrom\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "") + // Remove re-exports: export * from '/path'; export { x } from '/path'; + .replace(/^\s*export\b[^'"`\n]*\bfrom\s+(?:'[^'\n]*'|"[^"\n]*"|`[^`\n]*`)[\s;]*$/gm, "") + // Remove block comments + .replace(/\/\*[\s\S]*?\*\//g, "") + // Remove line comments + .replace(/\/\/.*$/gm, "") + // Remove "use strict" directives + .replace(/["']use strict["']\s*;?/g, "") + .trim(); + + return codeWithoutImports.length === 0; +} diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 9c69694e71a6..83b6e1ad3676 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -4,6 +4,7 @@ import { sentryUnpluginFactory, createRollupDebugIdInjectionHooks, } from "../src"; +import { containsOnlyImports } from "../src/utils"; describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { @@ -14,6 +15,137 @@ describe("getDebugIdSnippet", () => { }); }); +describe("containsOnlyImports", () => { + describe("should return true (import-only code)", () => { + it.each([ + ["empty string", ""], + ["whitespace only", " \n\t "], + ["side effect import with single quotes", "import './module.js';"], + ["side effect import with double quotes", 'import "./module.js";'], + ["side effect import with backticks", "import `./module.js`;"], + ["side effect import without semicolon", "import './module.js'"], + ["default import", "import foo from './module.js';"], + ["named import", "import { foo } from './module.js';"], + ["named import with alias", "import { foo as bar } from './module.js';"], + ["multiple named imports", "import { foo, bar, baz } from './module.js';"], + ["namespace import", "import * as utils from './utils.js';"], + ["default and named imports", "import React, { useState } from 'react';"], + ["re-export all", "export * from './module.js';"], + ["re-export named", "export { foo, bar } from './module.js';"], + ["re-export with alias", "export { foo as default } from './module.js';"], + ])("%s", (_, code) => { + expect(containsOnlyImports(code)).toBe(true); + }); + + it.each([ + [ + "multiple imports", + ` +import './polyfill.js'; +import { helper } from './utils.js'; +import config from './config.js'; +`, + ], + [ + "imports with line comments", + ` +// This is a comment +import './module.js'; +// Another comment +`, + ], + [ + "imports with block comments", + ` +/* Block comment */ +import './module.js'; +/* Multi + line + comment */ +`, + ], + ["'use strict' with imports", `"use strict";\nimport './module.js';`], + ["'use strict' with single quotes", `'use strict';\nimport './module.js';`], + [ + "mixed imports, re-exports, and comments", + ` +"use strict"; +// Entry point facade +import './polyfills.js'; +import { init } from './app.js'; +/* Re-export for external use */ +export * from './types.js'; +export { config } from './config.js'; +`, + ], + ])("%s", (_, code) => { + expect(containsOnlyImports(code)).toBe(true); + }); + }); + + describe("should return false (contains substantial code)", () => { + it.each([ + ["variable declaration", "const x = 1;"], + ["let declaration", "let y = 2;"], + ["var declaration", "var z = 3;"], + ["function declaration", "function foo() {}"], + ["arrow function", "const fn = () => {};"], + ["class declaration", "class MyClass {}"], + ["function call", "console.log('hello');"], + ["IIFE", "(function() {})();"], + ["expression statement", "1 + 1;"], + ["object literal", "({ foo: 'bar' });"], + ["export declaration (not re-export)", "export const foo = 1;"], + ["export default expression", "export default {};"], + ["export function", "export function foo() {}"], + ["minified bundle code", `import{a as e}from"./chunk.js";var t=function(){return e()};t();`], + ])("%s", (_, code) => { + expect(containsOnlyImports(code)).toBe(false); + }); + + // Multi-line code snippets + it.each([ + [ + "import followed by code", + ` +import { init } from './app.js'; +init(); +`, + ], + [ + "import with variable declaration", + ` +import './module.js'; +const config = { debug: true }; +`, + ], + [ + "import with function declaration", + ` +import { helper } from './utils.js'; +function main() { + helper(); +} +`, + ], + [ + "real-world SPA bundle snippet", + ` +import { createApp } from 'vue'; +import App from './App.vue'; +import router from './router'; + +const app = createApp(App); +app.use(router); +app.mount('#app'); +`, + ], + ])("%s", (_, code) => { + expect(containsOnlyImports(code)).toBe(false); + }); + }); +}); + describe("createRollupDebugIdInjectionHooks", () => { const hooks = createRollupDebugIdInjectionHooks(); @@ -99,6 +231,107 @@ describe("createRollupDebugIdInjectionHooks", () => { hooks.renderChunk(codeWithCommentBeyond500B, { fileName: "bundle.js" }) ).not.toBeNull(); }); + + describe("HTML facade chunks (MPA vs SPA)", () => { + // Issue #829: MPA facades should be skipped + // Regression fix: SPA main bundles with HTML facades should NOT be skipped + + it.each([ + ["empty", ""], + ["only side-effect imports", `import './shared-module.js';`], + ["only named imports", `import { foo, bar } from './shared-module.js';`], + ["only re-exports", `export * from './shared-module.js';`], + [ + "multiple imports and comments", + `// This is a facade module +import './moduleA.js'; +import { x } from './moduleB.js'; +/* block comment */ +export * from './moduleC.js';`, + ], + ["'use strict' and imports only", `"use strict";\nimport './shared-module.js';`], + ["query string in facadeModuleId", `import './shared.js';`, "?query=param"], + ["hash in facadeModuleId", `import './shared.js';`, "#hash"], + ])("should SKIP HTML facade chunks: %s", (_, code, suffix = "") => { + const result = hooks.renderChunk(code, { + fileName: "page1.js", + facadeModuleId: `/path/to/page1.html${suffix}`, + }); + expect(result).toBeNull(); + }); + + it("should inject into HTML facade with function declarations", () => { + const result = hooks.renderChunk(`function main() { console.log("hello"); }`, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot( + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\"); }"` + ); + }); + + it("should inject into HTML facade with variable declarations", () => { + const result = hooks.renderChunk(`const x = 42;`, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot( + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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;"` + ); + }); + + it("should inject into HTML facade with substantial code (SPA main bundle)", () => { + const code = `import { initApp } from './app.js'; + +const config = { debug: true }; + +function bootstrap() { + initApp(config); +} + +bootstrap();`; + const result = hooks.renderChunk(code, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot(` + ";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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 }; + + function bootstrap() { + initApp(config); + } + + bootstrap();" + `); + }); + + it("should inject into HTML facade with mixed imports and code", () => { + const result = hooks.renderChunk( + `import './polyfills.js';\nimport { init } from './app.js';\n\ninit();`, + { fileName: "index.js", facadeModuleId: "/path/to/index.html" } + ); + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot(` + ";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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();" + `); + }); + + it("should inject into regular JS chunks (no HTML facade)", () => { + const result = hooks.renderChunk(`console.log("Hello");`, { fileName: "bundle.js" }); + expect(result).not.toBeNull(); + expect(result?.code).toMatchInlineSnapshot( + `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");"` + ); + }); + }); }); }); From 5f3448e17bd97bb2dcafda079a24244fba5b11cb Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Fri, 16 Jan 2026 15:48:05 +0000 Subject: [PATCH 564/640] chore: Use pull_request_target for changelog preview (#842) --- .github/workflows/changelog-preview.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog-preview.yml b/.github/workflows/changelog-preview.yml index 8c86731f3f9b..6bf04492a445 100644 --- a/.github/workflows/changelog-preview.yml +++ b/.github/workflows/changelog-preview.yml @@ -1,6 +1,6 @@ name: Changelog Preview on: - pull_request: + pull_request_target: types: - opened - synchronize From 7baa78cd20883ccc32e7f0cd40a3ddf838b98a85 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 16 Jan 2026 16:52:32 +0100 Subject: [PATCH 565/640] test: Ensure Debug IDs match (#840) --- .../debug-ids-already-injected.test.ts | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 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 8d6feca8b6f4..c88b05be9400 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,3 +1,4 @@ +/* eslint-disable jest/expect-expect */ import * as path from "path"; import * as fs from "fs"; import * as os from "os"; @@ -11,23 +12,35 @@ function createTempDir() { const SPEC_DEBUG_ID_REGEX = /\/\/# debugId=([a-fA-F0-9-]+)/g; function countDebugIdComments(source: string): number { - const matches = source.match(SPEC_DEBUG_ID_REGEX); - if (matches) { - return matches.length; + return source.match(SPEC_DEBUG_ID_REGEX)?.length || 0; +} + +function getDebugIdFromComment(source: string): string | undefined { + const match = SPEC_DEBUG_ID_REGEX.exec(source); + if (match && match[1]) { + return match[1]; } - return 0; + return undefined; } -function getSingleJavaScriptSourceFileFromDirectory( - dir: string, - fileExtension = ".js" -): string | undefined { +function getSingleJavaScriptSourceFileFromDirectory(dir: string, fileExtension = ".js"): string { const files = fs.readdirSync(dir); const jsFiles = files.filter((file) => file.endsWith(fileExtension)); if (jsFiles.length === 1) { return fs.readFileSync(path.join(dir, jsFiles[0] as string), "utf-8"); } - return undefined; + return ""; +} + +function expected(tempDir: string) { + const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); + expect(source).toBeDefined(); + const debugIds = countDebugIdComments(source); + expect(debugIds).toBe(1); + const debugId = getDebugIdFromComment(source); + expect(debugId).toBeDefined(); + // Check the JavaScript contains a matching id + expect(source).toContain(`="${debugId || "fail"}"`); } describeNode18Plus("vite 6 bundle", () => { @@ -44,10 +57,7 @@ describeNode18Plus("vite 6 bundle", () => { }); test("check vite 6 bundle", () => { - const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); - expect(source).toBeDefined(); - const debugIds = countDebugIdComments(source as string); - expect(debugIds).toBe(1); + expected(tempDir); }); afterEach(() => { @@ -69,10 +79,7 @@ describeNode18Plus("webpack 5 bundle", () => { }); test("check webpack 5 bundle", () => { - const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); - expect(source).toBeDefined(); - const debugIds = countDebugIdComments(source as string); - expect(debugIds).toBe(1); + expected(tempDir); }); afterEach(() => { @@ -94,10 +101,7 @@ describeNode18Plus("rollup bundle", () => { }); test("check rollup bundle", () => { - const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); - expect(source).toBeDefined(); - const debugIds = countDebugIdComments(source as string); - expect(debugIds).toBe(1); + expected(tempDir); }); afterEach(() => { From 825daf35f58844c5cb308ccad6cfcdd1f09d4dcb Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 19 Jan 2026 10:51:34 +0100 Subject: [PATCH 566/640] feat: Combine injection plugins (#844) --- packages/bundler-plugin-core/src/index.ts | 152 +++++++----------- .../bundler-plugin-core/test/index.test.ts | 36 ++--- packages/esbuild-plugin/src/index.ts | 8 +- packages/rollup-plugin/src/index.ts | 28 +--- .../rollup-plugin/test/public-api.test.ts | 3 +- packages/vite-plugin/src/index.ts | 28 +--- packages/vite-plugin/test/public-api.test.ts | 3 +- packages/webpack-plugin/src/webpack4and5.ts | 82 ++-------- 8 files changed, 97 insertions(+), 243 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 76daf20e3e9d..555de62241d9 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -20,11 +20,20 @@ import { stripQueryAndHashFromPath, } from "./utils"; -interface SentryUnpluginFactoryOptions { +type InjectionPlugin = ( + injectionCode: string, + debugIds: boolean, + logger: Logger +) => UnpluginOptions; +type LegacyPlugins = { releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; - componentNameAnnotatePlugin?: (ignoredComponents?: string[]) => UnpluginOptions; moduleMetadataInjectionPlugin: (injectionCode: string) => UnpluginOptions; debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; +}; + +interface SentryUnpluginFactoryOptions { + injectionPlugin: InjectionPlugin | LegacyPlugins; + componentNameAnnotatePlugin?: (ignoredComponents?: string[]) => UnpluginOptions; debugIdUploadPlugin: ( upload: (buildArtifacts: string[]) => Promise, logger: Logger, @@ -38,10 +47,8 @@ interface SentryUnpluginFactoryOptions { * Creates an unplugin instance used to create Sentry plugins for Vite, Rollup, esbuild, and Webpack. */ export function sentryUnpluginFactory({ - releaseInjectionPlugin, + injectionPlugin, componentNameAnnotatePlugin, - moduleMetadataInjectionPlugin, - debugIdInjectionPlugin, debugIdUploadPlugin, bundleSizeOptimizationsPlugin, }: SentryUnpluginFactoryOptions): UnpluginInstance { @@ -94,6 +101,8 @@ export function sentryUnpluginFactory({ plugins.push(bundleSizeOptimizationsPlugin(bundleSizeOptimizationReplacementValues)); } + let injectionCode = ""; + if (!options.release.inject) { logger.debug( "Release injection disabled via `release.inject` option. Will not inject release." @@ -103,18 +112,31 @@ export function sentryUnpluginFactory({ "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." ); } else { - const injectionCode = generateGlobalInjectorCode({ + const code = generateGlobalInjectorCode({ release: options.release.name, injectBuildInformation: options._experiments.injectBuildInformation || false, }); - plugins.push(releaseInjectionPlugin(injectionCode)); + if (typeof injectionPlugin !== "function") { + plugins.push(injectionPlugin.releaseInjectionPlugin(code)); + } else { + injectionCode += code; + } } if (Object.keys(sentryBuildPluginManager.bundleMetadata).length > 0) { - const injectionCode = generateModuleMetadataInjectorCode( - sentryBuildPluginManager.bundleMetadata - ); - plugins.push(moduleMetadataInjectionPlugin(injectionCode)); + const code = generateModuleMetadataInjectorCode(sentryBuildPluginManager.bundleMetadata); + if (typeof injectionPlugin !== "function") { + plugins.push(injectionPlugin.moduleMetadataInjectionPlugin(code)); + } else { + injectionCode += code; + } + } + + if ( + typeof injectionPlugin === "function" && + (injectionCode !== "" || options.sourcemaps?.disable !== true) + ) { + plugins.push(injectionPlugin(injectionCode, options.sourcemaps?.disable !== true, logger)); } // Add plugin to create and finalize releases, and also take care of adding commits and legacy sourcemaps @@ -132,7 +154,9 @@ export function sentryUnpluginFactory({ }); if (options.sourcemaps?.disable !== true) { - plugins.push(debugIdInjectionPlugin(logger)); + if (typeof injectionPlugin !== "function") { + plugins.push(injectionPlugin.debugIdInjectionPlugin(logger)); + } if (options.sourcemaps?.disable !== "disable-upload") { // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins @@ -251,42 +275,6 @@ function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | u return false; } -export function createRollupReleaseInjectionHooks(injectionCode: string): { - renderChunk: RenderChunkHook; -} { - return { - renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { - if (!isJsFile(chunk.fileName)) { - return null; // returning null means not modifying the chunk at all - } - - // Skip empty chunks and HTML facade chunks (Vite MPA) - if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { - return null; - } - - const ms = new MagicString(code, { filename: chunk.fileName }); - - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, injectionCode); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(injectionCode); - } - - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), - }; - }, - }; -} - export function createRollupBundleSizeOptimizationHooks(replacementValues: SentrySDKBuildFlags): { transform: UnpluginOptions["transform"]; } { @@ -297,7 +285,10 @@ export function createRollupBundleSizeOptimizationHooks(replacementValues: Sentr }; } -export function createRollupDebugIdInjectionHooks(): { +export function createRollupInjectionHooks( + injectionCode: string, + debugIds: boolean +): { renderChunk: RenderChunkHook; } { return { @@ -311,22 +302,25 @@ export function createRollupDebugIdInjectionHooks(): { return null; } - // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) - const chunkStartSnippet = code.slice(0, 6000); - const chunkEndSnippet = code.slice(-500); + let codeToInject = injectionCode; - if ( - chunkStartSnippet.includes("_sentryDebugIdIdentifier") || - chunkEndSnippet.includes("//# debugId=") - ) { - return null; // Debug ID already present, skip injection - } + if (debugIds) { + // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) + const chunkStartSnippet = code.slice(0, 6000); + const chunkEndSnippet = code.slice(-500); - const debugId = stringToUUID(code); // generate a deterministic debug ID - const codeToInject = getDebugIdSnippet(debugId); + if ( + !( + chunkStartSnippet.includes("_sentryDebugIdIdentifier") || + chunkEndSnippet.includes("//# debugId=") + ) + ) { + const debugId = stringToUUID(code); // generate a deterministic debug ID + codeToInject += getDebugIdSnippet(debugId); + } + } const ms = new MagicString(code, { filename: chunk.fileName }); - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; if (match) { @@ -347,42 +341,6 @@ export function createRollupDebugIdInjectionHooks(): { }; } -export function createRollupModuleMetadataInjectionHooks(injectionCode: string): { - renderChunk: RenderChunkHook; -} { - return { - renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { - if (!isJsFile(chunk.fileName)) { - return null; // returning null means not modifying the chunk at all - } - - // Skip empty chunks and HTML facade chunks (Vite MPA) - if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { - return null; - } - - const ms = new MagicString(code, { filename: chunk.fileName }); - - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, injectionCode); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(injectionCode); - } - - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), - }; - }, - }; -} - export function createRollupDebugIdUploadHooks( upload: (buildArtifacts: string[]) => Promise, _logger: Logger, diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 83b6e1ad3676..e9babd0b0c8a 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -1,9 +1,5 @@ import { Compiler } from "webpack"; -import { - getDebugIdSnippet, - sentryUnpluginFactory, - createRollupDebugIdInjectionHooks, -} from "../src"; +import { getDebugIdSnippet, sentryUnpluginFactory, createRollupInjectionHooks } from "../src"; import { containsOnlyImports } from "../src/utils"; describe("getDebugIdSnippet", () => { @@ -146,8 +142,8 @@ app.mount('#app'); }); }); -describe("createRollupDebugIdInjectionHooks", () => { - const hooks = createRollupDebugIdInjectionHooks(); +describe("createRollupInjectionHooks", () => { + const hooks = createRollupInjectionHooks("", true); describe("renderChunk", () => { it("should inject debug ID into clean JavaScript files", () => { @@ -212,7 +208,7 @@ describe("createRollupDebugIdInjectionHooks", () => { ], ])("should NOT inject when debug ID already exists (%s)", (_description, code) => { const result = hooks.renderChunk(code, { fileName: "bundle.js" }); - expect(result).toBeNull(); + expect(result?.code).not.toContain("_sentryDebugIds"); }); it("should only check boundaries for performance (not entire file)", () => { @@ -336,20 +332,12 @@ bootstrap();`; }); describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { - const mockReleaseInjectionPlugin = jest.fn((_injectionCode: string) => ({ - name: "mock-release-injection-plugin", - })); - const mockComponentNameAnnotatePlugin = jest.fn(() => ({ name: "mock-component-name-annotate-plugin", })); - const mockModuleMetadataInjectionPlugin = jest.fn((_injectionCode: string) => ({ - name: "mock-module-metadata-injection-plugin", - })); - - const mockDebugIdInjectionPlugin = jest.fn(() => ({ - name: "mock-debug-id-injection-plugin", + const mockInjectionPlugin = jest.fn(() => ({ + name: "mock-injection-plugin", })); const mockDebugIdUploadPlugin = jest.fn(() => ({ @@ -362,10 +350,8 @@ describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const createUnpluginInstance = (): ReturnType => { return sentryUnpluginFactory({ - releaseInjectionPlugin: mockReleaseInjectionPlugin, + injectionPlugin: mockInjectionPlugin, componentNameAnnotatePlugin: mockComponentNameAnnotatePlugin, - moduleMetadataInjectionPlugin: mockModuleMetadataInjectionPlugin, - debugIdInjectionPlugin: mockDebugIdInjectionPlugin, debugIdUploadPlugin: mockDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: mockBundleSizeOptimizationsPlugin, }); @@ -423,7 +409,7 @@ describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const pluginNames = plugins.map((plugin) => plugin.name); // Should include debug ID injection but not upload - expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-injection-plugin"); expect(pluginNames).not.toContain("mock-debug-id-upload-plugin"); // Should still include other core plugins @@ -452,7 +438,7 @@ describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const pluginNames = plugins.map((plugin) => plugin.name); // Should include both debug ID related plugins - expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-injection-plugin"); expect(pluginNames).toContain("mock-debug-id-upload-plugin"); // Should include other core plugins @@ -479,7 +465,7 @@ describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const pluginNames = plugins.map((plugin) => plugin.name); // Should include both debug ID related plugins by default - expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-injection-plugin"); expect(pluginNames).toContain("mock-debug-id-upload-plugin"); // Should include other core plugins @@ -506,7 +492,7 @@ describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const pluginNames = plugins.map((plugin) => plugin.name); // Should include both debug ID related plugins by default - expect(pluginNames).toContain("mock-debug-id-injection-plugin"); + expect(pluginNames).toContain("mock-injection-plugin"); expect(pluginNames).toContain("mock-debug-id-upload-plugin"); // Should include other core plugins diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 29918afaa41c..4b2e82702ec8 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -317,9 +317,11 @@ function esbuildBundleSizeOptimizationsPlugin( } const sentryUnplugin = sentryUnpluginFactory({ - releaseInjectionPlugin: esbuildReleaseInjectionPlugin, - debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, - moduleMetadataInjectionPlugin: esbuildModuleMetadataInjectionPlugin, + injectionPlugin: { + releaseInjectionPlugin: esbuildReleaseInjectionPlugin, + debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, + moduleMetadataInjectionPlugin: esbuildModuleMetadataInjectionPlugin, + }, debugIdUploadPlugin: esbuildDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: esbuildBundleSizeOptimizationsPlugin, }); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 6ca2466f1669..30ad55fd1e02 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,9 +1,7 @@ import { sentryUnpluginFactory, Options, - createRollupReleaseInjectionHooks, - createRollupModuleMetadataInjectionHooks, - createRollupDebugIdInjectionHooks, + createRollupInjectionHooks, createRollupDebugIdUploadHooks, SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, @@ -12,13 +10,6 @@ import { } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; -function rollupReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { - return { - name: "sentry-rollup-release-injection-plugin", - rollup: createRollupReleaseInjectionHooks(injectionCode), - }; -} - function rollupComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { return { name: "sentry-rollup-component-name-annotate-plugin", @@ -26,17 +17,10 @@ function rollupComponentNameAnnotatePlugin(ignoredComponents?: string[]): Unplug }; } -function rollupDebugIdInjectionPlugin(): UnpluginOptions { - return { - name: "sentry-rollup-debug-id-injection-plugin", - rollup: createRollupDebugIdInjectionHooks(), - }; -} - -function rollupModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { +function rollupInjectionPlugin(injectionCode: string, debugIds: boolean): UnpluginOptions { return { - name: "sentry-rollup-module-metadata-injection-plugin", - rollup: createRollupModuleMetadataInjectionHooks(injectionCode), + name: "sentry-rollup-injection-plugin", + rollup: createRollupInjectionHooks(injectionCode, debugIds), }; } @@ -61,10 +45,8 @@ function rollupBundleSizeOptimizationsPlugin( } const sentryUnplugin = sentryUnpluginFactory({ - releaseInjectionPlugin: rollupReleaseInjectionPlugin, + injectionPlugin: rollupInjectionPlugin, componentNameAnnotatePlugin: rollupComponentNameAnnotatePlugin, - debugIdInjectionPlugin: rollupDebugIdInjectionPlugin, - moduleMetadataInjectionPlugin: rollupModuleMetadataInjectionPlugin, debugIdUploadPlugin: rollupDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: rollupBundleSizeOptimizationsPlugin, }); diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index 8a36177cc650..ced22fbcee13 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -25,9 +25,8 @@ describe("sentryRollupPlugin", () => { expect(pluginNames).toEqual( expect.arrayContaining([ "sentry-telemetry-plugin", - "sentry-rollup-release-injection-plugin", "sentry-release-management-plugin", - "sentry-rollup-debug-id-injection-plugin", + "sentry-rollup-injection-plugin", "sentry-rollup-debug-id-upload-plugin", "sentry-file-deletion-plugin", ]) diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 2c460f8b1c01..a6bc4ac741a8 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,9 +1,7 @@ import { sentryUnpluginFactory, Options, - createRollupReleaseInjectionHooks, - createRollupModuleMetadataInjectionHooks, - createRollupDebugIdInjectionHooks, + createRollupInjectionHooks, createRollupDebugIdUploadHooks, SentrySDKBuildFlags, createRollupBundleSizeOptimizationHooks, @@ -12,13 +10,13 @@ import { } from "@sentry/bundler-plugin-core"; import { UnpluginOptions, VitePlugin } from "unplugin"; -function viteReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { +function viteInjectionPlugin(injectionCode: string, debugIds: boolean): UnpluginOptions { return { - name: "sentry-vite-release-injection-plugin", + name: "sentry-vite-injection-plugin", // run `post` to avoid tripping up @rollup/plugin-commonjs when cjs is used // as we inject an `import` statement enforce: "post" as const, // need this so that vite runs the resolveId hook - vite: createRollupReleaseInjectionHooks(injectionCode), + vite: createRollupInjectionHooks(injectionCode, debugIds), }; } @@ -30,20 +28,6 @@ function viteComponentNameAnnotatePlugin(ignoredComponents?: string[]): Unplugin }; } -function viteDebugIdInjectionPlugin(): UnpluginOptions { - return { - name: "sentry-vite-debug-id-injection-plugin", - vite: createRollupDebugIdInjectionHooks(), - }; -} - -function viteModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { - return { - name: "sentry-vite-module-metadata-injection-plugin", - vite: createRollupModuleMetadataInjectionHooks(injectionCode), - }; -} - function viteDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise, logger: Logger, @@ -65,10 +49,8 @@ function viteBundleSizeOptimizationsPlugin( } const sentryUnplugin = sentryUnpluginFactory({ - releaseInjectionPlugin: viteReleaseInjectionPlugin, + injectionPlugin: viteInjectionPlugin, componentNameAnnotatePlugin: viteComponentNameAnnotatePlugin, - debugIdInjectionPlugin: viteDebugIdInjectionPlugin, - moduleMetadataInjectionPlugin: viteModuleMetadataInjectionPlugin, debugIdUploadPlugin: viteDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, }); diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index 8c311783b4c9..bd0d082711ca 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -24,9 +24,8 @@ describe("sentryVitePlugin", () => { expect(pluginNames).toEqual( expect.arrayContaining([ "sentry-telemetry-plugin", - "sentry-vite-release-injection-plugin", "sentry-release-management-plugin", - "sentry-vite-debug-id-injection-plugin", + "sentry-vite-injection-plugin", "sentry-vite-debug-id-upload-plugin", "sentry-file-deletion-plugin", ]) diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index 5c7c3e29bff8..aaf8bf5f7e24 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -33,11 +33,11 @@ type UnsafeDefinePlugin = { new (options: any): unknown; }; -function webpackReleaseInjectionPlugin( +function webpackInjectionPlugin( UnsafeBannerPlugin: UnsafeBannerPlugin | undefined -): (injectionCode: string) => UnpluginOptions { - return (injectionCode: string): UnpluginOptions => ({ - name: "sentry-webpack-release-injection-plugin", +): (injectionCode: string, debugIds: boolean) => UnpluginOptions { + return (injectionCode: string, debugIds: boolean): UnpluginOptions => ({ + name: "sentry-webpack-injection-plugin", webpack(compiler) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack version compatibility shenanigans @@ -54,7 +54,15 @@ function webpackReleaseInjectionPlugin( new BannerPlugin({ raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: injectionCode, + banner: (arg?: BannerPluginCallbackArg) => { + let codeToInject = injectionCode; + if (debugIds) { + const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; + const debugId = hash ? stringToUUID(hash) : uuidv4(); + codeToInject += getDebugIdSnippet(debugId); + } + return codeToInject; + }, }) ); }, @@ -99,38 +107,6 @@ function webpackBundleSizeOptimizationsPlugin( }); } -function webpackDebugIdInjectionPlugin( - UnsafeBannerPlugin: UnsafeBannerPlugin | undefined -): () => UnpluginOptions { - return () => ({ - name: "sentry-webpack-debug-id-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; - - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: (arg?: BannerPluginCallbackArg) => { - const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; - const debugId = hash ? stringToUUID(hash) : uuidv4(); - return getDebugIdSnippet(debugId); - }, - }) - ); - }, - }); -} - function webpackDebugIdUploadPlugin( upload: (buildArtifacts: string[]) => Promise, logger: Logger, @@ -170,34 +146,6 @@ function webpackDebugIdUploadPlugin( }; } -function webpackModuleMetadataInjectionPlugin( - UnsafeBannerPlugin: UnsafeBannerPlugin | undefined -): (injectionCode: string) => UnpluginOptions { - return (injectionCode: string) => ({ - name: "sentry-webpack-module-metadata-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; - - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: injectionCode, - }) - ); - }, - }); -} - /** * The factory function accepts BannerPlugin and DefinePlugin classes in * order to avoid direct dependencies on webpack. @@ -214,10 +162,8 @@ export function sentryWebpackUnpluginFactory({ DefinePlugin?: UnsafeDefinePlugin; } = {}): ReturnType { return sentryUnpluginFactory({ - releaseInjectionPlugin: webpackReleaseInjectionPlugin(BannerPlugin), + injectionPlugin: webpackInjectionPlugin(BannerPlugin), componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin(), - moduleMetadataInjectionPlugin: webpackModuleMetadataInjectionPlugin(BannerPlugin), - debugIdInjectionPlugin: webpackDebugIdInjectionPlugin(BannerPlugin), debugIdUploadPlugin: webpackDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin(DefinePlugin), }); From 4d8943d0b120e2a483dd433c00740fe0e4276621 Mon Sep 17 00:00:00 2001 From: Sigrid <32902192+s1gr1d@users.noreply.github.com> Date: Mon, 19 Jan 2026 12:39:31 +0100 Subject: [PATCH 567/640] meta(changelog): Update changelog for 4.7.0 (#845) --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f7afdc3f1c2..b7f80c169f4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ - "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott +## 4.7.0 + +- docs: Add RELEASE.md to document release process ([#834](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/834)) +- feat: Combine injection plugins ([#844](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/844)) +- fix(plugin-manager): Enable "rejectOnError" in debug ([#837](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/837)) +- fix(plugin-manager): Respect `sourcemap.ignore` values for injecting debugIDs ([#836](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/836)) +- fix(vite): Skip HTML injection for MPA but keep it for SPA ([#843](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/843)) + +
+ Internal Changes + +- chore: Use pull_request_target for changelog preview ([#842](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/842)) +- ci(release): Switch from action-prepare-release to Craft ([#831](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/831)) +- test: Ensure Debug IDs match ([#840](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/840)) +
+ ## 4.6.2 - fix(vite): Ensure sentryVitePlugin always returns an array of plugins ([#832](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/832)) From ae7cecb6eb43624d16a788cf24a74593a06b4777 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:41:11 +0000 Subject: [PATCH 568/640] release: 4.7.0 --- lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lerna.json b/lerna.json index 7e1f97c1e86a..1365f06b4fa0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.6.2", + "version": "4.7.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index fe4d3e35acda..e3ce6f6184f7 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.6.2", + "version": "4.7.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index cb07c69d243c..ddd957d8f2d4 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.6.2", + "version": "4.7.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.2", + "@sentry/babel-plugin-component-annotate": "4.7.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 905fa1d77c55..5c6a095277a2 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c349db873b3f..5ae8cb72ddf0 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.6.2", - "@sentry/rollup-plugin": "4.6.2", - "@sentry/vite-plugin": "4.6.2", - "@sentry/webpack-plugin": "4.6.2", + "@sentry/esbuild-plugin": "4.7.0", + "@sentry/rollup-plugin": "4.7.0", + "@sentry/vite-plugin": "4.7.0", + "@sentry/webpack-plugin": "4.7.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 2369fe5ee74b..1aa83889561a 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.6.2", + "version": "4.7.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 6e2ac414d97a..2730dcc17fdc 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 24099b20849f..bf1092287142 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", - "@sentry/bundler-plugin-core": "4.6.2", - "@sentry/esbuild-plugin": "4.6.2", - "@sentry/rollup-plugin": "4.6.2", - "@sentry/vite-plugin": "4.6.2", - "@sentry/webpack-plugin": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/esbuild-plugin": "4.7.0", + "@sentry/rollup-plugin": "4.7.0", + "@sentry/vite-plugin": "4.7.0", + "@sentry/webpack-plugin": "4.7.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9568daabf834..5ed0b16ca73e 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e4dbff514da4..96638ae518ac 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.6.2", + "version": "4.7.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 057d3d402f0e..da3ff5babd73 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.6.2", + "version": "4.7.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 260430a781d1..f595f540832d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.6.2", + "version": "4.7.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index ef2ec4956659..636da028542b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.6.2", + "version": "4.7.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.6.2", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.6.2", + "@sentry-internal/eslint-config": "4.7.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 78ce65052f0eca1debebd540b4fd1ca7050a5e12 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Fri, 23 Jan 2026 13:16:47 +0000 Subject: [PATCH 569/640] ci(release): Fix changelog-preview permissions (#852) The changelog-preview reusable workflow now requires `statuses: write` permission to function correctly with GitHub App installations that declare permissions statically. --- .github/workflows/changelog-preview.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/changelog-preview.yml b/.github/workflows/changelog-preview.yml index 6bf04492a445..f2b5efd63f34 100644 --- a/.github/workflows/changelog-preview.yml +++ b/.github/workflows/changelog-preview.yml @@ -11,6 +11,7 @@ on: permissions: contents: write pull-requests: write + statuses: write jobs: changelog-preview: From f7ac3bd516a70137bc65068166b83f1504e85ff8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 26 Jan 2026 10:41:34 +0100 Subject: [PATCH 570/640] feat: Use Rolldown native `MagicString` (#846) * feat: Use Rolldown native `MagicString` * Add docs link --- packages/bundler-plugin-core/src/index.ts | 29 +++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 555de62241d9..a9b78c45e40e 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -232,10 +232,12 @@ type RenderChunkHook = ( chunk: { fileName: string; facadeModuleId?: string | null; - } + }, + outputOptions?: unknown, + meta?: { magicString?: MagicString } ) => { code: string; - map: SourceMap; + readonly map?: SourceMap; } | null; /** @@ -292,7 +294,12 @@ export function createRollupInjectionHooks( renderChunk: RenderChunkHook; } { return { - renderChunk(code: string, chunk: { fileName: string; facadeModuleId?: string | null }) { + renderChunk( + code: string, + chunk: { fileName: string; facadeModuleId?: string | null }, + _?: unknown, + meta?: { magicString?: MagicString } + ) { if (!isJsFile(chunk.fileName)) { return null; // returning null means not modifying the chunk at all } @@ -320,7 +327,7 @@ export function createRollupInjectionHooks( } } - const ms = new MagicString(code, { filename: chunk.fileName }); + const ms = meta?.magicString || new MagicString(code, { filename: chunk.fileName }); const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; if (match) { @@ -333,9 +340,21 @@ export function createRollupInjectionHooks( ms.prepend(codeToInject); } + // Rolldown can pass a native MagicString instance in meta.magicString + // https://rolldown.rs/in-depth/native-magic-string#usage-examples + if (ms?.constructor?.name === "BindingMagicString") { + // Rolldown docs say to return the magic string instance directly in this case + return { code: ms as unknown as string }; + } + return { code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" }), + get map() { + return ms.generateMap({ + file: chunk.fileName, + hires: "boundary", + }); + }, }; }, }; From 9d9a7ef33a1f3a2284f96e56375b4e519ef41007 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 26 Jan 2026 10:45:05 +0100 Subject: [PATCH 571/640] feat: Combine injection snippets (#853) --- packages/bundler-plugin-core/src/index.ts | 33 +++++----- packages/bundler-plugin-core/src/utils.ts | 61 ++++++++++++++----- .../test/__snapshots__/utils.test.ts.snap | 4 +- .../bundler-plugin-core/test/index.test.ts | 29 +++++---- .../bundler-plugin-core/test/utils.test.ts | 8 +-- packages/esbuild-plugin/src/index.ts | 2 +- packages/rollup-plugin/src/index.ts | 3 +- packages/vite-plugin/src/index.ts | 3 +- packages/webpack-plugin/src/webpack4and5.ts | 13 ++-- 9 files changed, 99 insertions(+), 57 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a9b78c45e40e..33debe608ed6 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -12,6 +12,7 @@ import { createDebugIdUploadFunction } from "./debug-id-upload"; import { Logger } from "./logger"; import { Options, SentrySDKBuildFlags } from "./types"; import { + CodeInjection, containsOnlyImports, generateGlobalInjectorCode, generateModuleMetadataInjectorCode, @@ -21,7 +22,7 @@ import { } from "./utils"; type InjectionPlugin = ( - injectionCode: string, + injectionCode: CodeInjection, debugIds: boolean, logger: Logger ) => UnpluginOptions; @@ -101,7 +102,7 @@ export function sentryUnpluginFactory({ plugins.push(bundleSizeOptimizationsPlugin(bundleSizeOptimizationReplacementValues)); } - let injectionCode = ""; + const injectionCode = new CodeInjection(); if (!options.release.inject) { logger.debug( @@ -117,24 +118,24 @@ export function sentryUnpluginFactory({ injectBuildInformation: options._experiments.injectBuildInformation || false, }); if (typeof injectionPlugin !== "function") { - plugins.push(injectionPlugin.releaseInjectionPlugin(code)); + plugins.push(injectionPlugin.releaseInjectionPlugin(code.code())); } else { - injectionCode += code; + injectionCode.append(code); } } if (Object.keys(sentryBuildPluginManager.bundleMetadata).length > 0) { const code = generateModuleMetadataInjectorCode(sentryBuildPluginManager.bundleMetadata); if (typeof injectionPlugin !== "function") { - plugins.push(injectionPlugin.moduleMetadataInjectionPlugin(code)); + plugins.push(injectionPlugin.moduleMetadataInjectionPlugin(code.code())); } else { - injectionCode += code; + injectionCode.append(code); } } if ( typeof injectionPlugin === "function" && - (injectionCode !== "" || options.sourcemaps?.disable !== true) + (!injectionCode.isEmpty() || options.sourcemaps?.disable !== true) ) { plugins.push(injectionPlugin(injectionCode, options.sourcemaps?.disable !== true, logger)); } @@ -288,7 +289,7 @@ export function createRollupBundleSizeOptimizationHooks(replacementValues: Sentr } export function createRollupInjectionHooks( - injectionCode: string, + injectionCode: CodeInjection, debugIds: boolean ): { renderChunk: RenderChunkHook; @@ -309,7 +310,7 @@ export function createRollupInjectionHooks( return null; } - let codeToInject = injectionCode; + const codeToInject = injectionCode.clone(); if (debugIds) { // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) @@ -323,7 +324,7 @@ export function createRollupInjectionHooks( ) ) { const debugId = stringToUUID(code); // generate a deterministic debug ID - codeToInject += getDebugIdSnippet(debugId); + codeToInject.append(getDebugIdSnippet(debugId)); } } @@ -332,12 +333,12 @@ export function createRollupInjectionHooks( if (match) { // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, codeToInject); + ms.appendLeft(match.length, codeToInject.code()); } else { // ms.replace() doesn't work when there is an empty string match (which happens if // there is neither, a comment, nor a "use strict" at the top of the chunk) so we // need this special case here. - ms.prepend(codeToInject); + ms.prepend(codeToInject.code()); } // Rolldown can pass a native MagicString instance in meta.magicString @@ -466,11 +467,13 @@ export function createComponentNameAnnotateHooks(ignoredComponents?: string[]): }; } -export function getDebugIdSnippet(debugId: string): string { - return `;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");})();}catch(e){}};`; +export function getDebugIdSnippet(debugId: string): CodeInjection { + return new CodeInjection( + `var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");` + ); } export type { Logger } from "./logger"; export type { Options, SentrySDKBuildFlags } from "./types"; -export { replaceBooleanFlagsInCode, stringToUUID } from "./utils"; +export { CodeInjection, replaceBooleanFlagsInCode, stringToUUID } from "./utils"; export { createSentryBuildPluginManager } from "./build-plugin-manager"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 925d83f6655b..9726895ecd31 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -311,12 +311,8 @@ export function generateGlobalInjectorCode({ }: { release: string; injectBuildInformation: boolean; -}): string { - // The code below is mostly ternary operators because it saves bundle size. - // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - let code = `!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; - - code += `e.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; +}): CodeInjection { + let code = `e.SENTRY_RELEASE={id:${JSON.stringify(release)}};`; if (injectBuildInformation) { const buildInfo = getBuildInformation(); @@ -324,20 +320,18 @@ export function generateGlobalInjectorCode({ code += `e.SENTRY_BUILD_INFO=${JSON.stringify(buildInfo)};`; } - code += "}catch(e){}}();"; - - return code; + return new CodeInjection(code); } // eslint-disable-next-line @typescript-eslint/no-explicit-any -export function generateModuleMetadataInjectorCode(metadata: any): string { - // The code below is mostly ternary operators because it saves bundle size. - // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) +export function generateModuleMetadataInjectorCode(metadata: any): CodeInjection { // We are merging the metadata objects in case modules are bundled twice with the plugin // Use try-catch to avoid issues when bundlers rename global variables like 'window' to 'k' - return `!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 { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); - expect(snippet).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"1234\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-1234\\");})();}catch(e){}};"` + 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){}}();"` ); }); }); @@ -143,7 +143,12 @@ app.mount('#app'); }); describe("createRollupInjectionHooks", () => { - const hooks = createRollupInjectionHooks("", true); + const inject = new CodeInjection(); + const hooks = createRollupInjectionHooks(inject, true); + + beforeEach(() => { + inject.clear(); + }); describe("renderChunk", () => { it("should inject debug ID into clean JavaScript files", () => { @@ -152,7 +157,7 @@ describe("createRollupInjectionHooks", () => { expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");"` ); }); @@ -162,7 +167,7 @@ describe("createRollupInjectionHooks", () => { expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - "\\"use strict\\";;{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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){}}; + "\\"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\\");" `); }); @@ -179,7 +184,7 @@ describe("createRollupInjectionHooks", () => { expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\");"` + `"!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\\");"` ); }); @@ -263,7 +268,7 @@ export * from './moduleC.js';`, }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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\\"); }"` ); }); @@ -274,7 +279,7 @@ export * from './moduleC.js';`, }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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;"` ); }); @@ -294,7 +299,7 @@ bootstrap();`; }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - ";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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 }; @@ -313,7 +318,7 @@ bootstrap();`; ); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - ";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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();" @@ -324,7 +329,7 @@ bootstrap();`; const result = hooks.renderChunk(`console.log("Hello");`, { fileName: "bundle.js" }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `";{try{(function(){var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{},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/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index bcb5e4ccab9a..5cd1ef4e973e 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -228,7 +228,7 @@ describe("generateGlobalInjectorCode", () => { injectBuildInformation: false, }); - expect(generatedCode).toMatchSnapshot(); + expect(generatedCode.code()).toMatchSnapshot(); }); it("generates code with release and build information", () => { @@ -249,14 +249,14 @@ describe("generateGlobalInjectorCode", () => { injectBuildInformation: true, }); - expect(generatedCode).toMatchSnapshot(); + expect(generatedCode.code()).toMatchSnapshot(); }); }); describe("generateModuleMetadataInjectorCode", () => { it("generates code with empty metadata object", () => { const generatedCode = generateModuleMetadataInjectorCode({}); - expect(generatedCode).toMatchSnapshot(); + expect(generatedCode.code()).toMatchSnapshot(); }); it("generates code with metadata object", () => { @@ -268,7 +268,7 @@ describe("generateModuleMetadataInjectorCode", () => { bar: "baz", }, }); - expect(generatedCode).toMatchSnapshot(); + expect(generatedCode.code()).toMatchSnapshot(); }); }); diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 4b2e82702ec8..58ab0d815a54 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -167,7 +167,7 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { return { loader: "js", pluginName, - contents: getDebugIdSnippet(uuidv4()), + contents: getDebugIdSnippet(uuidv4()).code(), }; }); }, diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 30ad55fd1e02..c6b975948cb7 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,4 +1,5 @@ import { + CodeInjection, sentryUnpluginFactory, Options, createRollupInjectionHooks, @@ -17,7 +18,7 @@ function rollupComponentNameAnnotatePlugin(ignoredComponents?: string[]): Unplug }; } -function rollupInjectionPlugin(injectionCode: string, debugIds: boolean): UnpluginOptions { +function rollupInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions { return { name: "sentry-rollup-injection-plugin", rollup: createRollupInjectionHooks(injectionCode, debugIds), diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index a6bc4ac741a8..b378fa9aa1e0 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,4 +1,5 @@ import { + CodeInjection, sentryUnpluginFactory, Options, createRollupInjectionHooks, @@ -10,7 +11,7 @@ import { } from "@sentry/bundler-plugin-core"; import { UnpluginOptions, VitePlugin } from "unplugin"; -function viteInjectionPlugin(injectionCode: string, debugIds: boolean): UnpluginOptions { +function viteInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions { return { name: "sentry-vite-injection-plugin", // run `post` to avoid tripping up @rollup/plugin-commonjs when cjs is used diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index aaf8bf5f7e24..48ddf1e9dd67 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -1,11 +1,12 @@ import { - getDebugIdSnippet, Options, sentryUnpluginFactory, stringToUUID, SentrySDKBuildFlags, createComponentNameAnnotateHooks, Logger, + CodeInjection, + getDebugIdSnippet, } from "@sentry/bundler-plugin-core"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; @@ -35,8 +36,8 @@ type UnsafeDefinePlugin = { function webpackInjectionPlugin( UnsafeBannerPlugin: UnsafeBannerPlugin | undefined -): (injectionCode: string, debugIds: boolean) => UnpluginOptions { - return (injectionCode: string, debugIds: boolean): UnpluginOptions => ({ +): (injectionCode: CodeInjection, debugIds: boolean) => UnpluginOptions { + return (injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions => ({ name: "sentry-webpack-injection-plugin", webpack(compiler) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -55,13 +56,13 @@ function webpackInjectionPlugin( raw: true, include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, banner: (arg?: BannerPluginCallbackArg) => { - let codeToInject = injectionCode; + const codeToInject = injectionCode.clone(); if (debugIds) { const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; const debugId = hash ? stringToUUID(hash) : uuidv4(); - codeToInject += getDebugIdSnippet(debugId); + codeToInject.append(getDebugIdSnippet(debugId)); } - return codeToInject; + return codeToInject.code(); }, }) ); From 7ea6848ea3304ce0d6a4f0943da5fcb26460abc7 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 26 Jan 2026 10:47:52 +0100 Subject: [PATCH 572/640] feat: Inject component annotations into HTML elements rather than React components (#851) * feat: Inject component annotations into HTML elements rather than React components * Update docs table --- .../src/experimental.ts | 607 +++++ .../src/index.ts | 2 + .../test/experimental.test.ts | 2058 +++++++++++++++++ packages/bundler-plugin-core/src/index.ts | 25 +- .../src/options-mapping.ts | 1 + packages/bundler-plugin-core/src/types.ts | 5 + .../src/generate-documentation-table.ts | 7 + ...mponent-name-annotate-experimental.test.ts | 37 + .../input/app.jsx | 14 + .../input/component-a.jsx | 3 + .../setup.ts | 10 + packages/rollup-plugin/src/index.ts | 7 +- packages/vite-plugin/src/index.ts | 7 +- packages/webpack-plugin/src/webpack4and5.ts | 9 +- 14 files changed, 2780 insertions(+), 12 deletions(-) create mode 100644 packages/babel-plugin-component-annotate/src/experimental.ts create mode 100644 packages/babel-plugin-component-annotate/test/experimental.test.ts create mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts create mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx create mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx create mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts diff --git a/packages/babel-plugin-component-annotate/src/experimental.ts b/packages/babel-plugin-component-annotate/src/experimental.ts new file mode 100644 index 000000000000..c970078d41a8 --- /dev/null +++ b/packages/babel-plugin-component-annotate/src/experimental.ts @@ -0,0 +1,607 @@ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +/** + * The following code is based on the FullStory Babel plugin, but has been modified to work + * with Sentry products: + * + * - Added `sentry` to data properties, i.e `data-sentry-component` + * - Converted to TypeScript + * - Code cleanups + * - Highly modified to inject the data attributes into the root HTML elements of a component. + */ + +import type * as Babel from "@babel/core"; +import type { PluginObj, PluginPass } from "@babel/core"; + +const REACT_NATIVE_ELEMENTS: string[] = [ + "Image", + "Text", + "View", + "ScrollView", + "TextInput", + "TouchableOpacity", + "TouchableHighlight", + "TouchableWithoutFeedback", + "FlatList", + "SectionList", + "ActivityIndicator", + "Button", + "Switch", + "Modal", + "SafeAreaView", + "StatusBar", + "KeyboardAvoidingView", + "RefreshControl", + "Picker", + "Slider", +]; + +interface AnnotationOpts { + native?: boolean; + ignoredComponents?: string[]; +} + +interface FragmentContext { + fragmentAliases: Set; + reactNamespaceAliases: Set; +} + +interface AnnotationPluginPass extends PluginPass { + opts: AnnotationOpts; + sentryFragmentContext?: FragmentContext; +} + +type AnnotationPlugin = PluginObj; + +// Shared context object for all JSX processing functions +interface JSXProcessingContext { + /** Babel types object */ + t: typeof Babel.types; + /** Name of the React component */ + componentName: string; + /** AAttribute name for the component */ + attributeName: string; + /** Array of component names to ignore */ + ignoredComponents: string[]; + /** Fragment context for identifying React fragments */ + fragmentContext?: FragmentContext; +} + +// We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier +export function experimentalComponentNameAnnotatePlugin({ + types: t, +}: typeof Babel): AnnotationPlugin { + return { + visitor: { + Program: { + enter(path, state) { + const fragmentContext = collectFragmentContext(path); + state.sentryFragmentContext = fragmentContext; + }, + }, + FunctionDeclaration(path, state) { + if (!path.node.id || !path.node.id.name) { + return; + } + + const context = createJSXProcessingContext(state, t, path.node.id.name); + functionBodyPushAttributes(context, path); + }, + ArrowFunctionExpression(path, state) { + // We're expecting a `VariableDeclarator` like `const MyComponent =` + const parent = path.parent; + + if ( + !parent || + !("id" in parent) || + !parent.id || + !("name" in parent.id) || + !parent.id.name + ) { + return; + } + + const context = createJSXProcessingContext(state, t, parent.id.name); + functionBodyPushAttributes(context, path); + }, + ClassDeclaration(path, state) { + const name = path.get("id"); + const properties = path.get("body").get("body"); + const render = properties.find((prop) => { + return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); + }); + + if (!render || !render.traverse) { + return; + } + + const context = createJSXProcessingContext(state, t, name.node?.name || ""); + + render.traverse({ + ReturnStatement(returnStatement) { + const arg = returnStatement.get("argument"); + + if (!arg.isJSXElement() && !arg.isJSXFragment()) { + return; + } + + processJSX(context, arg); + }, + }); + }, + }, + }; +} + +/** + * Checks if an element name represents an HTML element (as opposed to a React component). + * HTML elements include standard lowercase HTML tags and React Native elements. + */ +function isHtmlElement(elementName: string): boolean { + // Unknown elements are not HTML elements + if (elementName === UNKNOWN_ELEMENT_NAME) { + return false; + } + + // Check for lowercase first letter (standard HTML elements) + if (elementName.length > 0 && elementName.charAt(0) === elementName.charAt(0).toLowerCase()) { + return true; + } + + // React Native elements typically start with uppercase but are still "native" elements + // We consider them HTML-like elements for annotation purposes + if (REACT_NATIVE_ELEMENTS.includes(elementName)) { + return true; + } + + // Otherwise, assume it's a React component (PascalCase) + return false; +} + +/** + * Creates a JSX processing context from the plugin state + */ +function createJSXProcessingContext( + state: AnnotationPluginPass, + t: typeof Babel.types, + componentName: string +): JSXProcessingContext { + return { + t, + componentName, + attributeName: attributeNamesFromState(state), + ignoredComponents: state.opts.ignoredComponents ?? [], + fragmentContext: state.sentryFragmentContext, + }; +} + +/** + * Processes the body of a function to add Sentry tracking attributes to JSX elements. + * Handles various function body structures including direct JSX returns, conditional expressions, + * and nested JSX elements. + */ +function functionBodyPushAttributes( + context: JSXProcessingContext, + path: Babel.NodePath +): void { + let jsxNode: Babel.NodePath; + + const functionBody = path.get("body").get("body"); + + if ( + !("length" in functionBody) && + functionBody.parent && + (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") + ) { + const maybeJsxNode = functionBody.find((c) => { + return c.type === "JSXElement" || c.type === "JSXFragment"; + }); + + if (!maybeJsxNode) { + return; + } + + jsxNode = maybeJsxNode; + } else { + const returnStatement = functionBody.find((c) => { + return c.type === "ReturnStatement"; + }); + if (!returnStatement) { + return; + } + + const arg = returnStatement.get("argument"); + if (!arg) { + return; + } + + if (Array.isArray(arg)) { + return; + } + + // Handle the case of a function body returning a ternary operation. + // `return (maybeTrue ? '' : ())` + if (arg.isConditionalExpression()) { + const consequent = arg.get("consequent"); + if (consequent.isJSXFragment() || consequent.isJSXElement()) { + processJSX(context, consequent); + } + const alternate = arg.get("alternate"); + if (alternate.isJSXFragment() || alternate.isJSXElement()) { + processJSX(context, alternate); + } + return; + } + + if (!arg.isJSXFragment() && !arg.isJSXElement()) { + return; + } + + jsxNode = arg; + } + + if (!jsxNode) { + return; + } + + processJSX(context, jsxNode); +} + +/** + * Recursively processes JSX elements to add Sentry tracking attributes. + * Handles both JSX elements and fragments, applying appropriate attributes + * based on configuration and component context. + */ +function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath): void { + if (!jsxNode) { + return; + } + + // NOTE: I don't know of a case where `openingElement` would have more than one item, + // but it's safer to always iterate + const paths = jsxNode.get("openingElement"); + const openingElements = Array.isArray(paths) ? paths : [paths]; + + const hasInjectedAttributes = openingElements.reduce( + (prev, openingElement) => + prev || + applyAttributes( + context, + openingElement as Babel.NodePath, + context.componentName + ), + false + ); + + if (hasInjectedAttributes) { + return; + } + + let children = jsxNode.get("children"); + // TODO: See why `Array.isArray` doesn't have correct behaviour here + if (children && !("length" in children)) { + // A single child was found, maybe a bit of static text + children = [children]; + } + + children.forEach((child) => { + // Happens for some node types like plain text + if (!child.node) { + return; + } + + // If the current element is a fragment, children are still considered at root level + // Otherwise, children are not at root level + const openingElement = child.get("openingElement"); + // TODO: Improve this. We never expect to have multiple opening elements + // but if it's possible, this should work + if (Array.isArray(openingElement)) { + return; + } + + processJSX(context, child); + }); +} + +/** + * Applies Sentry tracking attributes to a JSX opening element. + * Adds component name, element name, and source file attributes while + * respecting ignore lists and fragment detection. + */ +function applyAttributes( + context: JSXProcessingContext, + openingElement: Babel.NodePath, + componentName: string +): boolean { + const { t, attributeName: componentAttributeName, ignoredComponents, fragmentContext } = context; + + // e.g., Raw JSX text like the `A` in `

a

` + if (!openingElement.node) { + return false; + } + + // Check if this is a React fragment - if so, skip attribute addition entirely + const isFragment = isReactFragment(t, openingElement, fragmentContext); + if (isFragment) { + return false; + } + + if (!openingElement.node.attributes) { + openingElement.node.attributes = []; + } + + const elementName = getPathName(t, openingElement); + + if (!isHtmlElement(elementName)) { + return false; + } + + const isAnIgnoredComponent = ignoredComponents.some( + (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName + ); + + // Add a stable attribute for the component name (only for root elements) + if (!isAnIgnoredComponent && !hasAttributeWithName(openingElement, componentAttributeName)) { + if (componentAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) + ); + } + } + + return true; +} + +function attributeNamesFromState(state: AnnotationPluginPass): string { + if (state.opts.native) { + return "dataSentryComponent"; + } + + return "data-sentry-component"; +} + +function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { + const fragmentAliases = new Set(); + const reactNamespaceAliases = new Set(["React"]); // Default React namespace + + programPath.traverse({ + ImportDeclaration(importPath) { + const source = importPath.node.source.value; + + // Handle React imports + if (source === "react" || source === "React") { + importPath.node.specifiers.forEach((spec) => { + if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { + // Detect aliased React.Fragment imports (e.g., `Fragment as F`) + // so we can later identify as a fragment in JSX. + if (spec.imported.name === "Fragment") { + fragmentAliases.add(spec.local.name); + } + } else if ( + spec.type === "ImportDefaultSpecifier" || + spec.type === "ImportNamespaceSpecifier" + ) { + // import React from 'react' -> React OR + // import * as React from 'react' -> React + reactNamespaceAliases.add(spec.local.name); + } + }); + } + }, + + // Handle simple variable assignments only (avoid complex cases) + VariableDeclarator(varPath) { + if (varPath.node.init) { + const init = varPath.node.init; + + // Handle identifier assignments: const MyFragment = Fragment + if (varPath.node.id.type === "Identifier") { + // Handle: const MyFragment = Fragment (only if Fragment is a known alias) + if (init.type === "Identifier" && fragmentAliases.has(init.name)) { + fragmentAliases.add(varPath.node.id.name); + } + + // Handle: const MyFragment = React.Fragment (only for known React namespaces) + if ( + init.type === "MemberExpression" && + init.object.type === "Identifier" && + init.property.type === "Identifier" && + init.property.name === "Fragment" && + reactNamespaceAliases.has(init.object.name) + ) { + fragmentAliases.add(varPath.node.id.name); + } + } + + // Handle destructuring assignments: const { Fragment } = React + if (varPath.node.id.type === "ObjectPattern") { + if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { + const properties = varPath.node.id.properties; + + for (const prop of properties) { + if ( + prop.type === "ObjectProperty" && + prop.key && + prop.key.type === "Identifier" && + prop.value && + prop.value.type === "Identifier" && + prop.key.name === "Fragment" + ) { + fragmentAliases.add(prop.value.name); + } + } + } + } + } + }, + }); + + return { fragmentAliases, reactNamespaceAliases }; +} + +function isReactFragment( + t: typeof Babel.types, + openingElement: Babel.NodePath, + context?: FragmentContext // Add this optional parameter +): boolean { + // Handle JSX fragments (<>) + if (openingElement.isJSXFragment()) { + return true; + } + + const elementName = getPathName(t, openingElement); + + // Direct fragment references + if (elementName === "Fragment" || elementName === "React.Fragment") { + return true; + } + + // TODO: All these objects are typed as unknown, maybe an oversight in Babel types? + + // Check if the element name is a known fragment alias + if (context && elementName && context.fragmentAliases.has(elementName)) { + return true; + } + + // Handle JSXMemberExpression + if ( + openingElement.node && + "name" in openingElement.node && + openingElement.node.name && + typeof openingElement.node.name === "object" && + "type" in openingElement.node.name && + openingElement.node.name.type === "JSXMemberExpression" + ) { + const nodeName = openingElement.node.name; + if (typeof nodeName !== "object" || !nodeName) { + return false; + } + + if ("object" in nodeName && "property" in nodeName) { + const nodeNameObject = nodeName.object; + const nodeNameProperty = nodeName.property; + + if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { + return false; + } + + if (!nodeNameObject || !nodeNameProperty) { + return false; + } + + const objectName = "name" in nodeNameObject && nodeNameObject.name; + const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + + // React.Fragment check + if (objectName === "React" && propertyName === "Fragment") { + return true; + } + + // Enhanced checks using context + if (context) { + // Check React.Fragment pattern with known React namespaces + if ( + context.reactNamespaceAliases.has(objectName as string) && + propertyName === "Fragment" + ) { + return true; + } + + // Check MyFragment.Fragment pattern + if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { + return true; + } + } + } + } + + return false; +} + +function hasAttributeWithName( + openingElement: Babel.NodePath, + name: string | undefined | null +): boolean { + if (!name) { + return false; + } + + return openingElement.node.attributes.some((node) => { + if (node.type === "JSXAttribute") { + return node.name.name === name; + } + + return false; + }); +} + +function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { + if (!path.node) return UNKNOWN_ELEMENT_NAME; + if (!("name" in path.node)) { + return UNKNOWN_ELEMENT_NAME; + } + + const name = path.node.name; + + if (typeof name === "string") { + return name; + } + + if (t.isIdentifier(name) || t.isJSXIdentifier(name)) { + return name.name; + } + + if (t.isJSXNamespacedName(name)) { + return name.name.name; + } + + // Handle JSX member expressions like Tab.Group + if (t.isJSXMemberExpression(name)) { + const objectName = getJSXMemberExpressionObjectName(t, name.object); + const propertyName = name.property.name; + return `${objectName}.${propertyName}`; + } + + return UNKNOWN_ELEMENT_NAME; +} + +// Recursively handle nested member expressions (e.g. Components.UI.Header) +function getJSXMemberExpressionObjectName( + t: typeof Babel.types, + object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier +): string { + if (t.isJSXIdentifier(object)) { + return object.name; + } + if (t.isJSXMemberExpression(object)) { + const objectName = getJSXMemberExpressionObjectName(t, object.object); + return `${objectName}.${object.property.name}`; + } + + return UNKNOWN_ELEMENT_NAME; +} + +const UNKNOWN_ELEMENT_NAME = "unknown"; diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 54163dfd515e..8cb7495ff0bc 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -81,6 +81,8 @@ interface JSXProcessingContext { fragmentContext?: FragmentContext; } +export { experimentalComponentNameAnnotatePlugin } from "./experimental"; + // We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { return { diff --git a/packages/babel-plugin-component-annotate/test/experimental.test.ts b/packages/babel-plugin-component-annotate/test/experimental.test.ts new file mode 100644 index 000000000000..2f2fa189ad76 --- /dev/null +++ b/packages/babel-plugin-component-annotate/test/experimental.test.ts @@ -0,0 +1,2058 @@ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +import { transform } from "@babel/core"; +import { experimentalComponentNameAnnotatePlugin as plugin } from "../src/index"; + +const BananasPizzaAppStandardInput = `import React, { Component } from 'react'; +import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; + +UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; + +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return ; + } +} + +class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { text: '' }; + } + + render() { + return + this.setState({ text })} value={this.state.text} /> + + {this.state.text.split(' ').map(word => word && '🍕').join(' ')} + + ; + } +} + +export default function App() { + return + FullStory ReactNative testing app + + + ; +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } +});`; + +it("unknown-element snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return

A

; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default componentName;" + `); +}); + +it("component-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component, Fragment } from 'react'; + class componentName extends Component { + render() { + return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + } + } + export default componentName;" + `); +}); + +it("component-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + class componentName extends Component { + render() { + return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + } + } + export default componentName;" + `); +}); + +it("component-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return <>A; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + class componentName extends Component { + render() { + return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + } + } + export default componentName;" + `); +}); + +it("component-annotate-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return <> +

Hello world

+ ; + } +} + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default componentName;" + `); +}); + +it("arrow-noreturn-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + export default componentName;" + `); +}); + +it("arrow-noreturn-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + <> +

Hello world

+ +); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + export default componentName;" + `); +}); + +it("arrow-noreturn-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( + +

Hello world

+
+); + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + export default componentName;" + `); +}); + +it("arrow-noreturn-annotate-trivial-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => ( + Hello world +); + +export default componentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component, Fragment } from 'react'; + const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, \\"Hello world\\"); + export default componentName;" + `); +}); + +it("arrow snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("option-attribute snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("component snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class componentName extends Component { + render() { + return
+

Hello world

+
; + } +} + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default componentName;" + `); +}); + +it("rawfunction-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component, Fragment } from 'react'; + function SubComponent() { + return /*#__PURE__*/React.createElement(Fragment, null, \\"Sub\\"); + } + const componentName = () => { + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); + }; + export default componentName;" + `); +}); + +it("rawfunction-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return Sub; +} + +const componentName = () => { + return + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + function SubComponent() { + return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + } + const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); + }; + export default componentName;" + `); +}); + +it("rawfunction-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return <>Sub; +} + +const componentName = () => { + return <> + + ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + function SubComponent() { + return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + } + const componentName = () => { + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); + }; + export default componentName;" + `); +}); + +it("arrow-noreturn snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => ( +
+

Hello world

+
+); + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + export default componentName;" + `); +}); + +it("tags snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; +import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; + +UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; + +class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return ; + } +} + +class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { text: '' }; + } + + render() { + return + this.setState({ text })} value={this.state.text} /> + + {this.state.text.split(' ').map(word => word && '🍕').join(' ')} + + ; + } +} + +export default function App() { + return + FullStory ReactNative testing app + + + ; +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } +}); +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\", + dataSentryComponent: \\"Bananas\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + dataSentryComponent: \\"PizzaTranslator\\" + }, /*#__PURE__*/React.createElement(TextInput, { + style: { + backgroundColor: '#000', + color: '#eee', + padding: 8 + }, + placeholder: \\"Type here to translate!\\" // not supported on iOS + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + } + }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); + } + } + export default function App() { + return /*#__PURE__*/React.createElement(View, { + style: styles.container, + dataSentryComponent: \\"App\\" + }, /*#__PURE__*/React.createElement(Text, { + style: { + color: '#eee' + } + }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("option-format snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return
+

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("pureComponent-fragment snapshot matches", () => { + const result = transform( + `import React, { Fragment } from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return +

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default PureComponentName;" + `); +}); + +it("pureComponent-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return <> +

Hello world

+ ; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default PureComponentName;" + `); +}); + +it("pureComponent-react-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return +

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default PureComponentName;" + `); +}); + +it("rawfunction snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +function SubComponent() { + return
Sub
; +} + +const componentName = () => { + return
+ +
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + function SubComponent() { + return /*#__PURE__*/React.createElement(\\"div\\", { + \\"data-sentry-component\\": \\"SubComponent\\" + }, \\"Sub\\"); + } + const componentName = () => { + return /*#__PURE__*/React.createElement(\\"div\\", { + \\"data-sentry-component\\": \\"componentName\\" + }, /*#__PURE__*/React.createElement(SubComponent, null)); + }; + export default componentName;" + `); +}); + +it("arrow-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => { + return +

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("arrow-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React from 'react'; + +const componentName = () => { + return <> +

Hello world

+ ; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("arrow-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return +

Hello world

+
; +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")); + }; + export default componentName;" + `); +}); + +it("nonJSX snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +class TestClass extends Component { + test() { + return true; + } +} + +export default TestClass; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component } from 'react'; + class TestClass extends Component { + test() { + return true; + } + } + export default TestClass;" + `); +}); + +it("arrow-anonymous-fragment snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +const componentName = () => { + return (() => +

Hello world

+
)(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")))(); + }; + export default componentName;" + `); +}); + +it("arrow-anonymous-shorthand-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return (() => <> +

Hello world

+ )(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")))(); + }; + export default componentName;" + `); +}); + +it("arrow-anonymous-react-fragment snapshot matches", () => { + const result = transform( + `import React, { Component } from 'react'; + +const componentName = () => { + return (() => +

Hello world

+
)(); +}; + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + 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\\")))(); + }; + export default componentName;" + `); +}); + +it("pure snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return
+

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + } + } + export default PureComponentName;" + `); +}); + +it("component-fragment-native snapshot matches", () => { + const result = transform( + `import React, { Component, Fragment } from 'react'; + +class componentName extends Component { + render() { + return A; + } +} + +export default componentName; +`, + { + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Component, Fragment } from 'react'; + class componentName extends Component { + render() { + return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + } + } + export default componentName;" + `); +}); + +it("pure-native snapshot matches", () => { + const result = transform( + `import React from 'react'; + +class PureComponentName extends React.PureComponent { + render() { + return
+

Hello world

+
; + } +} + +export default PureComponentName; +`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true }]], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "import React from 'react'; + class PureComponentName extends React.PureComponent { + render() { + return /*#__PURE__*/React.createElement(\\"div\\", { + dataSentryComponent: \\"PureComponentName\\" + }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + } + } + export default PureComponentName;" + `); +}); + +it("skips components marked in ignoredComponents", () => { + const result = transform(BananasPizzaAppStandardInput, { + filename: "/filename-test.js", + presets: ["@babel/preset-react"], + plugins: [[plugin, { native: true, ignoredComponents: ["Bananas"] }]], + }); + 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\\"; + class Bananas extends Component { + render() { + let pic = { + uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' + }; + return /*#__PURE__*/React.createElement(Image, { + source: pic, + style: { + width: 193, + height: 110, + marginTop: 10 + }, + fsClass: \\"test-class\\" + }); + } + } + class PizzaTranslator extends Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + render() { + return /*#__PURE__*/React.createElement(View, { + style: { + padding: 10 + }, + dataSentryComponent: \\"PizzaTranslator\\" + }, /*#__PURE__*/React.createElement(TextInput, { + style: { + backgroundColor: '#000', + color: '#eee', + padding: 8 + }, + placeholder: \\"Type here to translate!\\" // not supported on iOS + , + onChangeText: text => this.setState({ + text + }), + value: this.state.text + }), /*#__PURE__*/React.createElement(Text, { + style: { + padding: 10, + fontSize: 42 + } + }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); + } + } + export default function App() { + return /*#__PURE__*/React.createElement(View, { + style: styles.container, + dataSentryComponent: \\"App\\" + }, /*#__PURE__*/React.createElement(Text, { + style: { + color: '#eee' + } + }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + } + const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'stretch', + backgroundColor: '#222', + alignItems: 'center', + justifyContent: 'center' + } + });" + `); +}); + +it("handles ternary operation returned by function body", () => { + const result = transform( + `const maybeTrue = Math.random() > 0.5; +export default function componentName() { + return (maybeTrue ? '' : ()) +}`, + { + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + expect(result?.code).toMatchInlineSnapshot(` + "const maybeTrue = Math.random() > 0.5; + export default function componentName() { + return maybeTrue ? '' : /*#__PURE__*/React.createElement(SubComponent, null); + }" + `); +}); + +it("ignores components with member expressions when in ignoredComponents", () => { + const result = transform( + `import React from 'react'; +import { Tab } from '@headlessui/react'; + +export default function TestComponent() { + return ( +
+ + + Tab 1 + Tab 2 + + + Content 1 + Content 2 + + +
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [ + [plugin, { ignoredComponents: ["Tab.Group", "Tab.List", "Tab.Panels", "Tab.Panel"] }], + ], + } + ); + + // The component should be transformed but Tab.* components should not have annotations + expect(result?.code).toContain("React.createElement(Tab.Group"); + expect(result?.code).not.toContain('"data-sentry-element": "Tab.Group"'); + expect(result?.code).toContain("React.createElement(Tab.List"); + expect(result?.code).not.toContain('"data-sentry-element": "Tab.List"'); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")))); + }" + `); +}); + +it("handles nested member expressions in component names", () => { + const result = transform( + `import React from 'react'; +import { Components } from 'my-ui-library'; + +export default function TestComponent() { + return ( +
+ Click me + Title +
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { ignoredComponents: ["Components.UI.Button"] }]], + } + ); + + // Components.UI.Button should be ignored but Components.UI.Card.Header should be annotated + expect(result?.code).toContain("React.createElement(Components.UI.Button"); + expect(result?.code).not.toContain('"data-sentry-element": "Components.UI.Button"'); + expect(result?.code).toContain("React.createElement(Components.UI.Card.Header"); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + }" + `); +}); + +it("Only injects in root html elements", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
+

Title

+

Content

+
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + 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\\"))); + }" + `); +}); + +describe("Fragment Detection", () => { + it("ignores React.Fragment with member expression handling", () => { + const result = transform( + `import React from 'react'; + + export default function TestComponent() { + return ( + +
Content
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(React.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + 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\\")); + }" + `); + }); + + it("ignores JSX fragments (<>)", () => { + const result = transform( + `export default function TestComponent() { + return ( + <> +
Content in JSX fragment
+ More content + + ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(React.Fragment"); + 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\\")); + }" + `); + }); + + it("ignores Fragment imported with alias", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
Content in aliased fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(F"); + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + 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\\")); + }" + `); + }); + + it("ignores Fragment assigned to variable", () => { + const result = transform( + `import { Fragment } from 'react'; + +const MyFragment = Fragment; + +export default function TestComponent() { + return ( + +
Content in variable fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyFragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "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\\")); + }" + `); + }); + + it("ignores Fragment with React namespace alias", () => { + const result = transform( + `import * as MyReact from 'react'; + +export default function TestComponent() { + return ( + +
Content in namespaced fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyReact.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + 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\\")); + }" + `); + }); + + it("ignores React default import with Fragment", () => { + const result = transform( + `import MyReact from 'react'; + +export default function TestComponent() { + return ( + +
Content in default import fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).toContain("React.createElement(MyReact.Fragment"); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + 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\\")); + }" + `); + }); + + it("ignores multiple fragment patterns in same file", () => { + const result = transform( + `import React, { Fragment } from 'react'; + + const MyFragment = Fragment; + + export default function TestComponent() { + return ( +
+ <> +
JSX Fragment content
+ + + + Direct Fragment content + + + +

Variable Fragment content

+
+ + +

React.Fragment content

+
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "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\\"))); + }" + `); + }); + + it("handles complex variable assignment chains", () => { + const result = transform( + `import { Fragment } from 'react'; + + const MyFragment = Fragment; + const AnotherFragment = MyFragment; + + export default function TestComponent() { + return ( + +
Content in chained fragment
+
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AnotherFragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import { Fragment } from 'react'; + 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\\")); + }" + `); + }); + + it("works with annotate-fragments option disabled", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
Content
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + 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\\")); + }" + `); + }); + + it("works with annotate-fragments option enabled", () => { + const result = transform( + `import { Fragment as F } from 'react'; + +export default function TestComponent() { + return ( + +
Content
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + 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\\")); + }" + `); + }); + + it("ignores Fragment from React destructuring", () => { + const result = transform( + `import React from 'react'; + +const { Fragment } = React; + +export default function TestComponent() { + return ( + +
Content in destructured fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import React from 'react'; + const { + Fragment + } = React; + export default function TestComponent() { + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { + \\"data-sentry-component\\": \\"TestComponent\\" + }, \\"Content in destructured fragment\\")); + }" + `); + }); + + it("ignores Fragment with destructuring alias", () => { + const result = transform( + `import React from 'react'; + +const { Fragment: MyFragment } = React; + +export default function TestComponent() { + return ( + +
Content in aliased destructured fragment
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "MyFragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import React from 'react'; + const { + 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\\")); + }" + `); + }); + + it("ignores Fragment from mixed destructuring", () => { + const result = transform( + `import React from 'react'; + +const { Fragment, createElement, useState } = React; + +export default function TestComponent() { + return ( + +
Content with other destructured items
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import React from 'react'; + const { + Fragment, + createElement, + 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\\")); + }" + `); + }); + + it("handles destructuring from aliased React imports", () => { + const result = transform( + `import MyReact from 'react'; + +const { Fragment } = MyReact; + +export default function TestComponent() { + return ( + +
Content from aliased React destructuring
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import MyReact from 'react'; + const { + 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\\")); + }" + `); + }); + + it("handles destructuring from namespace imports", () => { + const result = transform( + `import * as ReactLib from 'react'; + +const { Fragment: F } = ReactLib; + +export default function TestComponent() { + return ( + +
Content from namespace destructuring
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchInlineSnapshot(` + "import * as ReactLib from 'react'; + const { + 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\\")); + }" + `); + }); + + it("handles multiple destructuring patterns in one file", () => { + const result = transform( + `import React from 'react'; +import * as MyReact from 'react'; + +const { Fragment } = React; +const { Fragment: AliasedFrag } = MyReact; + +export default function TestComponent() { + return ( +
+ + Regular destructured + + + +

Aliased destructured

+
+
+ ); +}`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AliasedFrag"'); + expect(result?.code).toMatchInlineSnapshot(` + "import React from 'react'; + import * as MyReact from 'react'; + const { + Fragment + } = React; + const { + 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\\"))); + }" + `); + }); + + it("combines all fragment patterns correctly", () => { + const result = transform( + `import React, { Fragment as ImportedF } from 'react'; + import * as MyReact from 'react'; + + const { Fragment: DestructuredF } = React; + const { Fragment } = MyReact; + const AssignedF = Fragment; // ← This uses the destructured Fragment from MyReact + + export default function TestComponent() { + return ( +
+ {/* JSX Fragment */} + <> + JSX Fragment content + + + {/* Imported alias */} + + Imported alias content + + + {/* Destructured */} + + Destructured content + + + {/* Destructured from namespace */} + + Namespace destructured content + + + {/* Variable assigned */} + + Variable assigned content + + + {/* React.Fragment */} + + React.Fragment content + + + {/* Namespace Fragment */} + + Namespace Fragment content + +
+ ); + }`, + { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "ImportedF"'); + expect(result?.code).not.toContain('"data-sentry-element": "DestructuredF"'); + expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "AssignedF"'); + expect(result?.code).not.toContain('"data-sentry-element": "React.Fragment"'); + expect(result?.code).not.toContain('"data-sentry-element": "MyReact.Fragment"'); + expect(result?.code).toMatchInlineSnapshot(` + "import React, { Fragment as ImportedF } from 'react'; + import * as MyReact from 'react'; + const { + Fragment: DestructuredF + } = React; + const { + Fragment + } = MyReact; + 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\\"))); + }" + `); + }); + + it("handles Fragment aliased correctly when used by other non-Fragment components in a different scope", () => { + const result = transform( + `import { Fragment as OriginalF } from 'react'; +import { OtherComponent } from 'some-library'; + +function TestComponent() { + const F = OriginalF; + + // Use Fragment alias - should be ignored + return ( + +
This should NOT have data-sentry-element (Fragment)
+
+ ); +} + +function AnotherComponent() { + // Different component with same alias name in different function scope + const F = OtherComponent; + + return ( + +
This SHOULD have data-sentry-element (not Fragment)
+
+ ); +} +`, + { + filename: "/variable-assignment-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [plugin], + } + ); + + expect(result?.code).not.toContain('"data-sentry-element": "F"'); + expect(result?.code).toMatchInlineSnapshot(` + "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\\", { + \\"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)\\")); + }" + `); + }); +}); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 33debe608ed6..a31e42156c60 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,5 +1,7 @@ import { transformAsync } from "@babel/core"; -import componentNameAnnotatePlugin from "@sentry/babel-plugin-component-annotate"; +import componentNameAnnotatePlugin, { + experimentalComponentNameAnnotatePlugin, +} from "@sentry/babel-plugin-component-annotate"; import SentryCli from "@sentry/cli"; import { logger } from "@sentry/utils"; import * as fs from "fs"; @@ -34,7 +36,10 @@ type LegacyPlugins = { interface SentryUnpluginFactoryOptions { injectionPlugin: InjectionPlugin | LegacyPlugins; - componentNameAnnotatePlugin?: (ignoredComponents?: string[]) => UnpluginOptions; + componentNameAnnotatePlugin?: ( + ignoredComponents: string[], + injectIntoHtml: boolean + ) => UnpluginOptions; debugIdUploadPlugin: ( upload: (buildArtifacts: string[]) => Promise, logger: Logger, @@ -191,7 +196,10 @@ export function sentryUnpluginFactory({ } else { componentNameAnnotatePlugin && plugins.push( - componentNameAnnotatePlugin(options.reactComponentAnnotation.ignoredComponents) + componentNameAnnotatePlugin( + options.reactComponentAnnotation.ignoredComponents || [], + !!options.reactComponentAnnotation._experimentalInjectIntoHtml + ) ); } } @@ -411,7 +419,10 @@ export function createRollupDebugIdUploadHooks( }; } -export function createComponentNameAnnotateHooks(ignoredComponents?: string[]): { +export function createComponentNameAnnotateHooks( + ignoredComponents: string[], + injectIntoHtml: boolean +): { transform: UnpluginOptions["transform"]; } { type ParserPlugins = NonNullable< @@ -439,9 +450,13 @@ export function createComponentNameAnnotateHooks(ignoredComponents?: string[]): parserPlugins.push("jsx", "typescript"); } + const plugin = injectIntoHtml + ? experimentalComponentNameAnnotatePlugin + : componentNameAnnotatePlugin; + try { const result = await transformAsync(code, { - plugins: [[componentNameAnnotatePlugin, { ignoredComponents }]], + plugins: [[plugin, { ignoredComponents }]], filename: id, parserOpts: { sourceType: "module", diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index b017a9d8920a..d85321a020ab 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -70,6 +70,7 @@ export type NormalizedOptions = { | { enabled?: boolean; ignoredComponents?: string[]; + _experimentalInjectIntoHtml?: boolean; } | undefined; _metaOptions: { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index f86aca5ebe66..292b6bd55097 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -354,6 +354,11 @@ export interface Options { * A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components. */ ignoredComponents?: string[]; + /** + * An experimental component annotation injection mode that injects + * annotations into HTML rather than React components. + */ + _experimentalInjectIntoHtml?: boolean; }; /** diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 6e97771b9ad4..4c0bf7766910 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -421,6 +421,13 @@ type IncludeEntry = { "A list of strings representing the names of components to ignore. The plugin will not perform apply `data-sentry` annotations on the DOM element for these components.", supportedBundlers: ["webpack", "vite", "rollup"], }, + { + name: "_experimentalInjectIntoHtml", + type: "boolean", + fullDescription: + "An experimental component annotation injection mode that injects annotations into HTML rather than React components.", + supportedBundlers: ["webpack", "vite", "rollup"], + }, ], }, { 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 new file mode 100644 index 000000000000..5227d8346d02 --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts @@ -0,0 +1,37 @@ +import childProcess from "child_process"; +import path from "path"; +import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; + +// prettier-ignore +const SNAPSHOT = `"
Component A
"` +const ESBUILD_SNAPSHOT = `"
Component A
"`; + +function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { + const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); + expect(processOutput.trim()).toMatchInlineSnapshot(snapshot); +} + +test("esbuild bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/esbuild/index.js"), ESBUILD_SNAPSHOT); +}); + +test("rollup bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/rollup/index.js")); +}); + +test("vite bundle", () => { + expect.assertions(1); + checkBundle(path.join(__dirname, "./out/vite/index.js")); +}); + +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")); +}); diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx new file mode 100644 index 000000000000..d4263e7953e4 --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx @@ -0,0 +1,14 @@ +import { renderToString } from "react-dom/server"; +import { ComponentA } from "./component-a"; + +export default function App() { + return ; +} + +console.log( + renderToString( +
+ +
+ ) +); diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts b/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts new file mode 100644 index 000000000000..1894d1babfa9 --- /dev/null +++ b/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts @@ -0,0 +1,10 @@ +import * as path from "path"; +import { createCjsBundles } from "../../utils/create-cjs-bundles-for-react"; + +const entryPointPath = path.resolve(__dirname, "input", "app.jsx"); +const outputDir = path.resolve(__dirname, "out"); + +createCjsBundles({ index: entryPointPath }, outputDir, { + telemetry: false, + reactComponentAnnotation: { enabled: true, _experimentalInjectIntoHtml: true }, +}); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index c6b975948cb7..f29ac5f03679 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -11,10 +11,13 @@ import { } from "@sentry/bundler-plugin-core"; import type { UnpluginOptions } from "unplugin"; -function rollupComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { +function rollupComponentNameAnnotatePlugin( + ignoredComponents: string[], + injectIntoHtml: boolean +): UnpluginOptions { return { name: "sentry-rollup-component-name-annotate-plugin", - rollup: createComponentNameAnnotateHooks(ignoredComponents), + rollup: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml), }; } diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index b378fa9aa1e0..51a796027f43 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -21,11 +21,14 @@ function viteInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): U }; } -function viteComponentNameAnnotatePlugin(ignoredComponents?: string[]): UnpluginOptions { +function viteComponentNameAnnotatePlugin( + ignoredComponents: string[], + injectIntoHtml: boolean +): UnpluginOptions { return { name: "sentry-vite-component-name-annotate-plugin", enforce: "pre" as const, - vite: createComponentNameAnnotateHooks(ignoredComponents), + vite: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml), }; } diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index 48ddf1e9dd67..f8054590bc83 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -70,15 +70,18 @@ function webpackInjectionPlugin( }); } -function webpackComponentNameAnnotatePlugin(): (ignoredComponents?: string[]) => UnpluginOptions { - return (ignoredComponents?: string[]) => ({ +function webpackComponentNameAnnotatePlugin(): ( + ignoredComponents: string[], + injectIntoHtml: boolean +) => UnpluginOptions { + return (ignoredComponents: string[], injectIntoHtml: boolean) => ({ name: "sentry-webpack-component-name-annotate-plugin", enforce: "pre", // Webpack needs this hook for loader logic, so the plugin is not run on unsupported file types transformInclude(id) { return id.endsWith(".tsx") || id.endsWith(".jsx"); }, - transform: createComponentNameAnnotateHooks(ignoredComponents).transform, + transform: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml).transform, }); } From 7acc2671ec47234e218e3d6e88e14af76fb5f280 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 26 Jan 2026 11:13:01 +0100 Subject: [PATCH 573/640] chore(publish): Add auto changelog generation (#854) * chore(repo): Add auto changelog generation * remove release.md --- .craft.yml | 3 ++- CONTRIBUTING.md | 19 ++++--------------- RELEASE.md | 5 ----- package.json | 1 - scripts/get-commit-list.ts | 36 ------------------------------------ 5 files changed, 6 insertions(+), 58 deletions(-) delete mode 100644 RELEASE.md delete mode 100644 scripts/get-commit-list.ts diff --git a/.craft.yml b/.craft.yml index 512f080582d5..e18a6d5b52d2 100644 --- a/.craft.yml +++ b/.craft.yml @@ -1,7 +1,8 @@ github: owner: getsentry repo: sentry-javascript-bundler-plugins -changelogPolicy: simple +changelog: + policy: auto preReleaseCommand: bash scripts/craft-pre-release.sh requireNames: - /^sentry-bundler-plugin-core-.*\.tgz$/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b3935d9d2f71..8c49965a361e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -73,18 +73,7 @@ Our different types of reviews: _These steps are only relevant to Sentry employees when preparing and publishing a new SDK release._ 1. Determine what version will be released (we use [semver](https://semver.org)). -2. Update [`CHANGELOG.md`](https://github.com/getsentry/sentry-javascript-bundler-plugins/edit/master/CHANGELOG.md) to add an entry for the next release number and a list of changes since the last release. (See details below.) -3. Run the [Prepare Release](https://github.com/getsentry/sentry-javascript-bundler-plugins/actions/workflows/release.yml) workflow. -4. A new issue should appear in https://github.com/getsentry/publish/issues. -5. Ask a member of the [@getsentry/releases team](https://github.com/orgs/getsentry/teams/releases/members) to approve the release. - -### Updating the Changelog - -1. Create a new branch. -2. Run `yarn changelog` and copy all commits in the list. -3. Create a new section in the changelog, deciding based on the changes whether it should be a minor bump or a patch release. -4. Paste in the commits you copied earlier. -5. Delete any which aren't user-facing changes. -6. Alphabetize the rest. -7. If any of the PRs are from external contributors, include underneath the commits `Work in this release contributed by . Thank you for your contributions!`. If there's only one external PR, don't forget to remove the final `s`. If there are three or more, use an Oxford comma. (It's in the Sentry styleguide!) -8. Commit, push, and open a PR against `main` with the title `meta: Update changelog for `. +2. Run the [Prepare Release](https://github.com/getsentry/sentry-javascript-bundler-plugins/actions/workflows/release.yml) workflow. +3. A new issue should appear in https://github.com/getsentry/publish/issues. +4. At this point, you can review the new changelog entry on the `relase/` branch and make adjustments if necessary. +5. Start the release by adding the approval label on the publish issue diff --git a/RELEASE.md b/RELEASE.md deleted file mode 100644 index 59100d9166f1..000000000000 --- a/RELEASE.md +++ /dev/null @@ -1,5 +0,0 @@ -# Release Process - -1. Open a PR to update the changelog on `main` -2. After the changelog PR is merged, go to the **Actions** tab and manually trigger the **"Prepare Release"** workflow, entering the version you want to release -3. After the workflow completes, go to [getsentry/publish](https://github.com/getsentry/publish), find the corresponding issue created by the workflow, and add the `accepted` label to finalize the release diff --git a/package.json b/package.json index 15c26f2d6c11..62a78b6e3cc7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "build:watch": "nx run-many --target=build:watch --all", "build:graph": "nx graph", "build:npm": "nx run-many --target=build:npm --all", - "changelog": "ts-node ./scripts/get-commit-list.ts", "check:types": "nx run-many --target=check:types --all", "clean": "nx run-many --target=clean --all", "clean:all": "nx run-many --target=clean:all --all && yarn", diff --git a/scripts/get-commit-list.ts b/scripts/get-commit-list.ts deleted file mode 100644 index 502ff2eabf25..000000000000 --- a/scripts/get-commit-list.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { execSync } from "child_process"; - -function run(): void { - const commits = execSync('git log --format="- %s"').toString().split("\n"); - - const lastReleasePos = commits.findIndex((commit) => /- meta(.*)changelog/i.test(commit)); - - const newCommits = commits.splice(0, lastReleasePos).filter((commit) => { - // Filter out merge commits - if (/Merge pull request/.test(commit)) { - return false; - } - // Filter release branch merged - if (/Merge branch/.test(commit)) { - return false; - } - // Filter release commit itself - if (/release:/.test(commit)) { - return false; - } - - return true; - }); - - newCommits.sort((a, b) => a.localeCompare(b)); - - const issueUrl = "https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/"; - const newCommitsWithLink = newCommits.map((commit) => - commit.replace(/#(\d+)/, `[#$1](${issueUrl}$1)`) - ); - - // eslint-disable-next-line no-console - console.log(newCommitsWithLink.join("\n")); -} - -run(); From 335f317591439e8b76754cbcc624b713a023a5f2 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 26 Jan 2026 13:23:41 +0100 Subject: [PATCH 574/640] chore(publish): Use `workspaces` option in Craft NPM target (#855) * chore(publish): Use `workspaces` option in Craft NPM target * Update .craft.yml --- .craft.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index e18a6d5b52d2..ac1d873cff46 100644 --- a/.craft.yml +++ b/.craft.yml @@ -15,4 +15,6 @@ targets: - name: github includeNames: /^sentry-.*.tgz$/ - name: npm - includeNames: /^sentry-.*.tgz$/ + workspaces: true + excludeWorkspaces: /^@sentry-internal\// + includeWorkspaces: /^@sentry\// From 09fc1f629ee44b66b44b406a9fac5b0edf64495d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 26 Jan 2026 14:06:06 +0100 Subject: [PATCH 575/640] chore(changelog): Remove ##Unreleased section (#856) --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f80c169f4c..94a75109033e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,5 @@ # Changelog -## Unreleased - -- "You know what they say ‘Fool me once, strike one, but fool me twice… strike three.’" — Michael Scott - ## 4.7.0 - docs: Add RELEASE.md to document release process ([#834](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/834)) From 3aedac23979351c39ec601aea1a992f671209a1d Mon Sep 17 00:00:00 2001 From: Lms24 <8420481+Lms24@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:07:24 +0000 Subject: [PATCH 576/640] release: 4.8.0 --- CHANGELOG.md | 13 +++++++++++++ lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 14 files changed, 57 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94a75109033e..62c6c3091c22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 4.8.0 + +### New Features ✨ + +- Inject component annotations into HTML elements rather than React components by @timfish in [#851](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/851) +- Combine injection snippets by @timfish in [#853](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/853) +- Use Rolldown native `MagicString` by @timfish in [#846](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/846) + +### Internal Changes 🔧 + +- (changelog) Remove ##Unreleased section by @Lms24 in [#856](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/856) +- (release) Fix changelog-preview permissions by @BYK in [#852](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/852) + ## 4.7.0 - docs: Add RELEASE.md to document release process ([#834](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/834)) diff --git a/lerna.json b/lerna.json index 1365f06b4fa0..d08b70bd343a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.7.0", + "version": "4.8.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e3ce6f6184f7..5ee232328d77 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.7.0", + "version": "4.8.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ddd957d8f2d4..f3022620ea15 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.7.0", + "version": "4.8.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.7.0", + "@sentry/babel-plugin-component-annotate": "4.8.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 5c6a095277a2..1ac975adb397 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5ae8cb72ddf0..c23da5df43c8 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.7.0", - "@sentry/rollup-plugin": "4.7.0", - "@sentry/vite-plugin": "4.7.0", - "@sentry/webpack-plugin": "4.7.0", + "@sentry/esbuild-plugin": "4.8.0", + "@sentry/rollup-plugin": "4.8.0", + "@sentry/vite-plugin": "4.8.0", + "@sentry/webpack-plugin": "4.8.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 1aa83889561a..cb355cb7f17f 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.7.0", + "version": "4.8.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/bundler-plugin-core": "4.8.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 2730dcc17fdc..9ee477ff8334 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index bf1092287142..5667e1eea6f8 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", - "@sentry/bundler-plugin-core": "4.7.0", - "@sentry/esbuild-plugin": "4.7.0", - "@sentry/rollup-plugin": "4.7.0", - "@sentry/vite-plugin": "4.7.0", - "@sentry/webpack-plugin": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/esbuild-plugin": "4.8.0", + "@sentry/rollup-plugin": "4.8.0", + "@sentry/vite-plugin": "4.8.0", + "@sentry/webpack-plugin": "4.8.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 5ed0b16ca73e..bc6f231a39d0 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/bundler-plugin-core": "4.8.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 96638ae518ac..147c68235325 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.7.0", + "version": "4.8.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/bundler-plugin-core": "4.8.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index da3ff5babd73..46b02ff57171 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.7.0", + "version": "4.8.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index f595f540832d..6d09946d2519 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.7.0", + "version": "4.8.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/bundler-plugin-core": "4.8.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 636da028542b..d2d42654a4d9 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.7.0", + "version": "4.8.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.7.0", + "@sentry/bundler-plugin-core": "4.8.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.7.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.7.0", + "@sentry-internal/eslint-config": "4.8.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 1fd619aa90f888b2e3102dfd9c1b7d1e18b91b88 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 26 Jan 2026 14:26:14 +0100 Subject: [PATCH 577/640] cleanup changelog --- CHANGELOG.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62c6c3091c22..f274a8a775da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,11 +8,6 @@ - Combine injection snippets by @timfish in [#853](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/853) - Use Rolldown native `MagicString` by @timfish in [#846](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/846) -### Internal Changes 🔧 - -- (changelog) Remove ##Unreleased section by @Lms24 in [#856](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/856) -- (release) Fix changelog-preview permissions by @BYK in [#852](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/852) - ## 4.7.0 - docs: Add RELEASE.md to document release process ([#834](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/834)) From 0131e8674fd8cfc7b8cf00acfe74277a9767ebfb Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 27 Jan 2026 15:17:22 +0100 Subject: [PATCH 578/640] feat(telemetry): Add `bundler-major-version` tag to webpack (#857) * add bundler-major-version tag * format --- .../src/options-mapping.ts | 2 ++ .../src/sentry/telemetry.ts | 2 ++ packages/bundler-plugin-core/src/types.ts | 4 +++ packages/webpack-plugin/src/index.ts | 32 +++++++++++++++++-- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index d85321a020ab..762720dfa1f9 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -76,6 +76,7 @@ export type NormalizedOptions = { _metaOptions: { telemetry: { metaFramework: string | undefined; + bundlerMajorVersion: string | undefined; }; }; applicationKey: string | undefined; @@ -121,6 +122,7 @@ export function normalizeUserOptions(userOptions: UserOptions): NormalizedOption _metaOptions: { telemetry: { metaFramework: userOptions._metaOptions?.telemetry?.metaFramework, + bundlerMajorVersion: userOptions._metaOptions?.telemetry?.bundlerMajorVersion, }, }, applicationKey: userOptions.applicationKey, diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 70c17b3e8801..7f48ec4a6650 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -111,6 +111,8 @@ export function setTelemetryDataOnScope( bundler: buildTool, }); + scope.setTag("bundler-major-version", options._metaOptions.telemetry.bundlerMajorVersion); + scope.setUser({ id: org }); } diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 292b6bd55097..1c00c94abd06 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -418,6 +418,10 @@ export interface Options { * The meta framework using the plugin. */ metaFramework?: string; + /** + * The major version of the bundler (e.g., "4" or "5" for webpack). + */ + bundlerMajorVersion?: string; }; }; } diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 9b1bfa242add..cb4683e142a1 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -8,14 +8,42 @@ const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPl const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; +// Detect webpack major version for telemetry (helps differentiate webpack 4 vs 5 usage) +function getWebpackMajorVersion(): string | undefined { + try { + const webpack = webpack4or5 as unknown as + | { version?: string; default?: { version?: string } } + | undefined; + const version = webpack?.version ?? webpack?.default?.version; + const webpackMajorVersion = version?.split(".")[0]; // "4" or "5" + return webpackMajorVersion; + } catch (error) { + return undefined; + } +} + +const webpackMajorVersion = getWebpackMajorVersion(); + const sentryUnplugin = sentryWebpackUnpluginFactory({ BannerPlugin, DefinePlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = - sentryUnplugin.webpack; +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = (options) => { + const enhancedOptions: SentryWebpackPluginOptions = { + ...options, + _metaOptions: { + ...options?._metaOptions, + telemetry: { + ...options?._metaOptions?.telemetry, + bundlerMajorVersion: + options?._metaOptions?.telemetry?.bundlerMajorVersion ?? webpackMajorVersion, + }, + }, + }; + return sentryUnplugin.webpack(enhancedOptions); +}; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; From 638fe76c34c8bd5398c79c5e77ffc31e9feead9b Mon Sep 17 00:00:00 2001 From: chargome <20254395+chargome@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:29:48 +0000 Subject: [PATCH 579/640] release: 4.9.0 --- CHANGELOG.md | 6 ++++++ lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 14 files changed, 50 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f274a8a775da..5c83f6254351 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 4.9.0 + +### New Features ✨ + +- (telemetry) Add `bundler-major-version` tag to webpack by @chargome in [#857](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/857) + ## 4.8.0 ### New Features ✨ diff --git a/lerna.json b/lerna.json index d08b70bd343a..e33df9af466f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.8.0", + "version": "4.9.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 5ee232328d77..1bda1844078e 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.8.0", + "version": "4.9.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index f3022620ea15..4e7c789ed374 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.8.0", + "version": "4.9.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.8.0", + "@sentry/babel-plugin-component-annotate": "4.9.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 1ac975adb397..f4bc74e29e56 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c23da5df43c8..5684e3c708b5 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.8.0", - "@sentry/rollup-plugin": "4.8.0", - "@sentry/vite-plugin": "4.8.0", - "@sentry/webpack-plugin": "4.8.0", + "@sentry/esbuild-plugin": "4.9.0", + "@sentry/rollup-plugin": "4.9.0", + "@sentry/vite-plugin": "4.9.0", + "@sentry/webpack-plugin": "4.9.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index cb355cb7f17f..7d81cd9fce5c 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.8.0", + "version": "4.9.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/bundler-plugin-core": "4.9.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9ee477ff8334..9d65c3bfa685 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5667e1eea6f8..1ed1f0649acc 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", - "@sentry/bundler-plugin-core": "4.8.0", - "@sentry/esbuild-plugin": "4.8.0", - "@sentry/rollup-plugin": "4.8.0", - "@sentry/vite-plugin": "4.8.0", - "@sentry/webpack-plugin": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/esbuild-plugin": "4.9.0", + "@sentry/rollup-plugin": "4.9.0", + "@sentry/vite-plugin": "4.9.0", + "@sentry/webpack-plugin": "4.9.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index bc6f231a39d0..c09adeabc17c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/bundler-plugin-core": "4.9.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 147c68235325..bffcd031efe2 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.8.0", + "version": "4.9.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/bundler-plugin-core": "4.9.0", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 46b02ff57171..5db1811254a6 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 6d09946d2519..e4e6dc2efcff 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.8.0", + "version": "4.9.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/bundler-plugin-core": "4.9.0", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index d2d42654a4d9..1a19be9164cf 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.8.0", + "version": "4.9.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.8.0", + "@sentry/bundler-plugin-core": "4.9.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.8.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.8.0", + "@sentry-internal/eslint-config": "4.9.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 8357f82eb09572b7edc325eb1c0938ed3236c799 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 2 Feb 2026 13:39:38 +0100 Subject: [PATCH 580/640] ci: Bump craft for release workflow (#859) bump craft --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 70c40083ee9f..8178bf23e776 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,7 +31,7 @@ jobs: token: ${{ steps.token.outputs.token }} fetch-depth: 0 - name: Prepare release - uses: getsentry/craft@c6e2f04939b6ee67030588afbb5af76b127d8203 # v2 + uses: getsentry/craft@beea4aba589c66381258cbd131c5551ae8245b82 # v2.20.1 env: GITHUB_TOKEN: ${{ steps.token.outputs.token }} with: From d3236bdbc1a7bea26c7f375ffd47c8d5f2213fa7 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 10 Feb 2026 14:55:21 +0100 Subject: [PATCH 581/640] feat: Track major version for Vite and Rollup (#867) * feat: Track major version for Vite and Rollup * Fix types --- package.json | 2 +- .../src/build-plugin-manager.ts | 7 +++- packages/bundler-plugin-core/src/index.ts | 3 ++ .../src/options-mapping.ts | 1 - .../src/sentry/telemetry.ts | 12 ++++--- .../fixtures/telemetry/telemetry.test.ts | 1 + packages/integration-tests/jest.config.js | 1 + packages/rollup-plugin/src/index.ts | 16 ++++++++++ packages/vite-plugin/src/index.ts | 16 ++++++++++ packages/webpack-plugin/src/index.ts | 32 ++----------------- packages/webpack-plugin/src/webpack4and5.ts | 17 ++++++++++ 11 files changed, 71 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 62a78b6e3cc7..85e45b917d19 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,6 @@ }, "volta": { "node": "18.20.8", - "yarn": "1.22.19" + "yarn": "1.22.22" } } diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 4ae624195599..a014a934daa1 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -124,6 +124,10 @@ export function createSentryBuildPluginManager( * E.g. `webpack` or `nextjs` or `turbopack` */ buildTool: string; + /** + * E.g. `5` for webpack v5 or `4` for Rollup v4 + */ + buildToolMajorVersion?: string; /** * E.g. `[sentry-webpack-plugin]` or `[@sentry/nextjs]` */ @@ -195,7 +199,8 @@ export function createSentryBuildPluginManager( const { sentryScope, sentryClient } = createSentryInstance( options, shouldSendTelemetry, - bundlerPluginMetaContext.buildTool + bundlerPluginMetaContext.buildTool, + bundlerPluginMetaContext.buildToolMajorVersion ); const { release, environment = DEFAULT_ENVIRONMENT } = sentryClient.getOptions(); diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a31e42156c60..aeeffe44a8c8 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -47,6 +47,7 @@ interface SentryUnpluginFactoryOptions { webpack_forceExitOnBuildComplete?: boolean ) => UnpluginOptions; bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; + getBundlerMajorVersion?: () => string | undefined; } /** @@ -57,6 +58,7 @@ export function sentryUnpluginFactory({ componentNameAnnotatePlugin, debugIdUploadPlugin, bundleSizeOptimizationsPlugin, + getBundlerMajorVersion, }: SentryUnpluginFactoryOptions): UnpluginInstance { return createUnplugin((userOptions = {}, unpluginMetaContext) => { const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { @@ -64,6 +66,7 @@ export function sentryUnpluginFactory({ userOptions._metaOptions?.loggerPrefixOverride ?? `[sentry-${unpluginMetaContext.framework}-plugin]`, buildTool: unpluginMetaContext.framework, + buildToolMajorVersion: getBundlerMajorVersion?.(), }); const { diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index 762720dfa1f9..c7096f1ddf12 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -76,7 +76,6 @@ export type NormalizedOptions = { _metaOptions: { telemetry: { metaFramework: string | undefined; - bundlerMajorVersion: string | undefined; }; }; applicationKey: string | undefined; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 7f48ec4a6650..e0d0e046cf1a 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -14,7 +14,8 @@ const stackParser = createStackParser(nodeStackLineParser()); export function createSentryInstance( options: NormalizedOptions, shouldSendTelemetry: Promise, - buildTool: string + buildTool: string, + buildToolMajorVersion: string | undefined ): { sentryScope: Scope; sentryClient: Client } { const clientOptions: ServerRuntimeClientOptions = { platform: "node", @@ -56,7 +57,7 @@ export function createSentryInstance( const scope = new Scope(); scope.setClient(client); - setTelemetryDataOnScope(options, scope, buildTool); + setTelemetryDataOnScope(options, scope, buildTool, buildToolMajorVersion); return { sentryScope: scope, sentryClient: client }; } @@ -64,7 +65,8 @@ export function createSentryInstance( export function setTelemetryDataOnScope( options: NormalizedOptions, scope: Scope, - buildTool: string + buildTool: string, + buildToolMajorVersion?: string ): void { const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; @@ -111,7 +113,9 @@ export function setTelemetryDataOnScope( bundler: buildTool, }); - scope.setTag("bundler-major-version", options._metaOptions.telemetry.bundlerMajorVersion); + if (buildToolMajorVersion) { + scope.setTag("bundler-major-version", buildToolMajorVersion); + } scope.setUser({ id: org }); } diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 3f6d896307bc..2eaee9ca34aa 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -112,6 +112,7 @@ test("rollup bundle telemetry", async () => { "react-annotate": false, "meta-framework": "none", "application-key-set": false, + "bundler-major-version": "2", bundler: "rollup", }), sdk: expect.objectContaining({ diff --git a/packages/integration-tests/jest.config.js b/packages/integration-tests/jest.config.js index 160178bbd22f..73ed904f25e6 100644 --- a/packages/integration-tests/jest.config.js +++ b/packages/integration-tests/jest.config.js @@ -3,4 +3,5 @@ module.exports = { transform: { "^.+\\.(t|j)sx?$": ["@swc/jest"], }, + transformIgnorePatterns: ["!node_modules/"], }; diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index f29ac5f03679..802451bca1f2 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -9,6 +9,7 @@ import { createComponentNameAnnotateHooks, Logger, } from "@sentry/bundler-plugin-core"; +import { createRequire } from "node:module"; import type { UnpluginOptions } from "unplugin"; function rollupComponentNameAnnotatePlugin( @@ -48,11 +49,26 @@ function rollupBundleSizeOptimizationsPlugin( }; } +function getRollupMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - Rollup already transpiles this for us + const req = createRequire(import.meta.url); + const rollup = req("rollup") as { VERSION?: string }; + return rollup.VERSION?.split(".")[0]; + } catch (err) { + // do nothing, we'll just not report a version + } + + return undefined; +} + const sentryUnplugin = sentryUnpluginFactory({ injectionPlugin: rollupInjectionPlugin, componentNameAnnotatePlugin: rollupComponentNameAnnotatePlugin, debugIdUploadPlugin: rollupDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: rollupBundleSizeOptimizationsPlugin, + getBundlerMajorVersion: getRollupMajorVersion, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 51a796027f43..8b7f323a4948 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -9,6 +9,7 @@ import { createComponentNameAnnotateHooks, Logger, } from "@sentry/bundler-plugin-core"; +import { createRequire } from "node:module"; import { UnpluginOptions, VitePlugin } from "unplugin"; function viteInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions { @@ -52,11 +53,26 @@ function viteBundleSizeOptimizationsPlugin( }; } +function getViteMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - Rollup already transpiles this for us + const req = createRequire(import.meta.url); + const vite = req("vite") as { version?: string }; + return vite.version?.split(".")[0]; + } catch (err) { + // do nothing, we'll just not report a version + } + + return undefined; +} + const sentryUnplugin = sentryUnpluginFactory({ injectionPlugin: viteInjectionPlugin, componentNameAnnotatePlugin: viteComponentNameAnnotatePlugin, debugIdUploadPlugin: viteDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, + getBundlerMajorVersion: getViteMajorVersion, }); export const sentryVitePlugin = (options?: Options): VitePlugin[] => { diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index cb4683e142a1..9b1bfa242add 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -8,42 +8,14 @@ const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPl const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; -// Detect webpack major version for telemetry (helps differentiate webpack 4 vs 5 usage) -function getWebpackMajorVersion(): string | undefined { - try { - const webpack = webpack4or5 as unknown as - | { version?: string; default?: { version?: string } } - | undefined; - const version = webpack?.version ?? webpack?.default?.version; - const webpackMajorVersion = version?.split(".")[0]; // "4" or "5" - return webpackMajorVersion; - } catch (error) { - return undefined; - } -} - -const webpackMajorVersion = getWebpackMajorVersion(); - const sentryUnplugin = sentryWebpackUnpluginFactory({ BannerPlugin, DefinePlugin, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = (options) => { - const enhancedOptions: SentryWebpackPluginOptions = { - ...options, - _metaOptions: { - ...options?._metaOptions, - telemetry: { - ...options?._metaOptions?.telemetry, - bundlerMajorVersion: - options?._metaOptions?.telemetry?.bundlerMajorVersion ?? webpackMajorVersion, - }, - }, - }; - return sentryUnplugin.webpack(enhancedOptions); -}; +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = + sentryUnplugin.webpack; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index f8054590bc83..5ad81eaac287 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -8,6 +8,7 @@ import { CodeInjection, getDebugIdSnippet, } from "@sentry/bundler-plugin-core"; +import { createRequire } from "node:module"; import * as path from "path"; import { UnpluginOptions } from "unplugin"; import { v4 as uuidv4 } from "uuid"; @@ -150,6 +151,21 @@ function webpackDebugIdUploadPlugin( }; } +// Detect webpack major version for telemetry (helps differentiate webpack 4 vs 5 usage) +function getWebpackMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - Rollup already transpiles this for us + const req = createRequire(import.meta.url); + const webpack = req("webpack") as { version?: string; default?: { version?: string } }; + const version = webpack?.version ?? webpack?.default?.version; + const webpackMajorVersion = version?.split(".")[0]; // "4" or "5" + return webpackMajorVersion; + } catch (error) { + return undefined; + } +} + /** * The factory function accepts BannerPlugin and DefinePlugin classes in * order to avoid direct dependencies on webpack. @@ -170,6 +186,7 @@ export function sentryWebpackUnpluginFactory({ componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin(), debugIdUploadPlugin: webpackDebugIdUploadPlugin, bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin(DefinePlugin), + getBundlerMajorVersion: getWebpackMajorVersion, }); } From 774b516e8c390af12a1fbd3e7138316b10289ead Mon Sep 17 00:00:00 2001 From: Lms24 <8420481+Lms24@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:57:21 +0000 Subject: [PATCH 582/640] release: 4.9.1 --- CHANGELOG.md | 10 ++++++++++ lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 8 ++++---- packages/webpack-plugin/package.json | 8 ++++---- 14 files changed, 54 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c83f6254351..7ae118c3f6cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 4.9.1 + +### New Features ✨ + +- Track major version for Vite and Rollup by @timfish in [#867](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/867) + +### Internal Changes 🔧 + +- Bump craft for release workflow by @chargome in [#859](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/859) + ## 4.9.0 ### New Features ✨ diff --git a/lerna.json b/lerna.json index e33df9af466f..a8d5c562c74a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.9.0", + "version": "4.9.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 1bda1844078e..26e9f2be70fc 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.9.0", + "version": "4.9.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -56,8 +56,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 4e7c789ed374..462553428e96 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.9.0", + "version": "4.9.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -53,7 +53,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.9.0", + "@sentry/babel-plugin-component-annotate": "4.9.1", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -68,8 +68,8 @@ "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@sentry-internal/eslint-config": "4.9.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index f4bc74e29e56..31ecc1c97736 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 5684e3c708b5..3e166b4621f9 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.9.0", - "@sentry/rollup-plugin": "4.9.0", - "@sentry/vite-plugin": "4.9.0", - "@sentry/webpack-plugin": "4.9.0", + "@sentry/esbuild-plugin": "4.9.1", + "@sentry/rollup-plugin": "4.9.1", + "@sentry/vite-plugin": "4.9.1", + "@sentry/webpack-plugin": "4.9.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 7d81cd9fce5c..170b83811b1e 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.9.0", + "version": "4.9.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -58,8 +58,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 9d65c3bfa685..71c499ff902a 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1ed1f0649acc..5641e6a4bb48 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", - "@sentry/bundler-plugin-core": "4.9.0", - "@sentry/esbuild-plugin": "4.9.0", - "@sentry/rollup-plugin": "4.9.0", - "@sentry/vite-plugin": "4.9.0", - "@sentry/webpack-plugin": "4.9.0", + "@sentry-internal/eslint-config": "4.9.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry/bundler-plugin-core": "4.9.1", + "@sentry/esbuild-plugin": "4.9.1", + "@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", diff --git a/packages/playground/package.json b/packages/playground/package.json index c09adeabc17c..f0be5c569d8b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true, "scripts": { @@ -18,7 +18,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index bffcd031efe2..5423badca409 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.9.0", + "version": "4.9.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.1", "unplugin": "1.0.1" }, "peerDependencies": { @@ -61,8 +61,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5db1811254a6..eab9f503579f 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.9.0", + "version": "4.9.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index e4e6dc2efcff..b42e1ebc588b 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.9.0", + "version": "4.9.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,7 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.1", "unplugin": "1.0.1" }, "devDependencies": { @@ -57,8 +57,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 1a19be9164cf..6e2eaee1cb4d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.9.0", + "version": "4.9.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,7 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.0", + "@sentry/bundler-plugin-core": "4.9.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -63,8 +63,8 @@ "@babel/preset-typescript": "7.17.12", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-commonjs": "22.0.1", - "@sentry-internal/eslint-config": "4.9.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.0", + "@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", From 2edffa52dfbea0be79cfb79f58dc5904abd10d17 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 11 Feb 2026 18:27:46 +0100 Subject: [PATCH 583/640] feat: webpack no longer uses unplugin (#870) --- packages/bundler-plugin-core/src/index.ts | 2 + packages/webpack-plugin/package.json | 1 - packages/webpack-plugin/rollup.config.js | 2 +- .../src/component-annotation-transform.ts | 43 ++ packages/webpack-plugin/src/index.ts | 12 +- packages/webpack-plugin/src/webpack4and5.ts | 380 ++++++++++++------ packages/webpack-plugin/src/webpack5.ts | 6 +- 7 files changed, 308 insertions(+), 138 deletions(-) create mode 100644 packages/webpack-plugin/src/component-annotation-transform.ts diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index aeeffe44a8c8..e90f62b4e91c 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -495,3 +495,5 @@ export type { Logger } from "./logger"; export type { Options, SentrySDKBuildFlags } from "./types"; export { CodeInjection, replaceBooleanFlagsInCode, stringToUUID } from "./utils"; export { createSentryBuildPluginManager } from "./build-plugin-manager"; +export { generateGlobalInjectorCode, generateModuleMetadataInjectorCode } from "./utils"; +export { createDebugIdUploadFunction } from "./debug-id-upload"; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6e2eaee1cb4d..a344150434b4 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -54,7 +54,6 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "4.9.1", - "unplugin": "1.0.1", "uuid": "^9.0.0" }, "devDependencies": { diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js index ea1dc3b680bd..bb57a7d4dbb4 100644 --- a/packages/webpack-plugin/rollup.config.js +++ b/packages/webpack-plugin/rollup.config.js @@ -3,7 +3,7 @@ import babel from "@rollup/plugin-babel"; import packageJson from "./package.json"; import modulePackage from "module"; -const input = ["src/index.ts", "src/webpack5.ts"]; +const input = ["src/index.ts", "src/webpack5.ts", "src/component-annotation-transform.ts"]; const extensions = [".ts"]; diff --git a/packages/webpack-plugin/src/component-annotation-transform.ts b/packages/webpack-plugin/src/component-annotation-transform.ts new file mode 100644 index 000000000000..bf6c66127faf --- /dev/null +++ b/packages/webpack-plugin/src/component-annotation-transform.ts @@ -0,0 +1,43 @@ +// Webpack loader for component annotation transform +// Based on unplugin v1.0.1 transform loader pattern + +export default async function transform( + this: { + async: () => (err: Error | null, content?: string, sourceMap?: unknown) => void; + resourcePath: string; + query: { + transform?: ( + code: string, + id: string + ) => Promise<{ code: string; map?: unknown } | null | undefined | string>; + }; + }, + source: string, + map: unknown +): Promise { + const callback = this.async(); + const { transform: transformFn } = this.query; + + if (!transformFn) { + return callback(null, source, map); + } + + try { + const id = this.resourcePath; + const result = await transformFn(source, id); + + if (result == null) { + callback(null, source, map); + } else if (typeof result === "string") { + callback(null, result, map); + } else { + callback(null, result.code, result.map || map); + } + } catch (error) { + if (error instanceof Error) { + callback(error); + } else { + callback(new Error(String(error))); + } + } +} diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 9b1bfa242add..a13d9b2b1627 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,4 +1,4 @@ -import { SentryWebpackPluginOptions, sentryWebpackUnpluginFactory } from "./webpack4and5"; +import { SentryWebpackPluginOptions, sentryWebpackPluginFactory } from "./webpack4and5"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore webpack is a peer dep @@ -8,14 +8,12 @@ const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPl const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; -const sentryUnplugin = sentryWebpackUnpluginFactory({ - BannerPlugin, - DefinePlugin, -}); - // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = - sentryUnplugin.webpack; + sentryWebpackPluginFactory({ + BannerPlugin, + DefinePlugin, + }); export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index 5ad81eaac287..a9d31b4cc62c 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -1,18 +1,30 @@ import { Options, - sentryUnpluginFactory, + createSentryBuildPluginManager, + generateGlobalInjectorCode, + generateModuleMetadataInjectorCode, stringToUUID, - SentrySDKBuildFlags, createComponentNameAnnotateHooks, - Logger, CodeInjection, getDebugIdSnippet, + createDebugIdUploadFunction, } from "@sentry/bundler-plugin-core"; +import * as path from "node:path"; +import { fileURLToPath } from "node:url"; import { createRequire } from "node:module"; -import * as path from "path"; -import { UnpluginOptions } from "unplugin"; import { v4 as uuidv4 } from "uuid"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore Rollup transpiles import.meta for us for CJS +const dirname = path.dirname(fileURLToPath(import.meta.url)); + +const COMPONENT_ANNOTATION_LOADER = path.resolve( + dirname, + typeof __dirname !== "undefined" + ? "component-annotation-transform.js" // CJS + : "component-annotation-transform.mjs" // ESM +); + // since webpack 5.1 compiler contains webpack module so plugins always use correct webpack version // https://github.com/webpack/webpack/commit/65eca2e529ce1d79b79200d4bdb1ce1b81141459 @@ -35,121 +47,80 @@ type UnsafeDefinePlugin = { new (options: any): unknown; }; -function webpackInjectionPlugin( - UnsafeBannerPlugin: UnsafeBannerPlugin | undefined -): (injectionCode: CodeInjection, debugIds: boolean) => UnpluginOptions { - return (injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions => ({ - name: "sentry-webpack-injection-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const BannerPlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; - - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new BannerPlugin({ - raw: true, - include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, - banner: (arg?: BannerPluginCallbackArg) => { - const codeToInject = injectionCode.clone(); - if (debugIds) { - const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; - const debugId = hash ? stringToUUID(hash) : uuidv4(); - codeToInject.append(getDebugIdSnippet(debugId)); - } - return codeToInject.code(); - }, - }) - ); - }, - }); -} +type WebpackModule = { + resource?: string; +}; -function webpackComponentNameAnnotatePlugin(): ( - ignoredComponents: string[], - injectIntoHtml: boolean -) => UnpluginOptions { - return (ignoredComponents: string[], injectIntoHtml: boolean) => ({ - name: "sentry-webpack-component-name-annotate-plugin", - enforce: "pre", - // Webpack needs this hook for loader logic, so the plugin is not run on unsupported file types - transformInclude(id) { - return id.endsWith(".tsx") || id.endsWith(".jsx"); - }, - transform: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml).transform, - }); -} +type WebpackLoaderCallback = (err: Error | null, content?: string, sourceMap?: unknown) => void; -function webpackBundleSizeOptimizationsPlugin( - UnsafeDefinePlugin: UnsafeDefinePlugin | undefined -): (replacementValues: SentrySDKBuildFlags) => UnpluginOptions { - return (replacementValues: SentrySDKBuildFlags) => ({ - name: "sentry-webpack-bundle-size-optimizations-plugin", - webpack(compiler) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - const DefinePlugin = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore webpack version compatibility shenanigans - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - compiler?.webpack?.DefinePlugin || UnsafeDefinePlugin; - - compiler.options.plugins = compiler.options.plugins || []; - compiler.options.plugins.push( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call - new DefinePlugin({ - ...replacementValues, - }) - ); - }, - }); -} +type WebpackLoaderContext = { + callback: WebpackLoaderCallback; +}; -function webpackDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - createDependencyOnBuildArtifacts: () => () => void, - forceExitOnBuildCompletion?: boolean -): UnpluginOptions { - const pluginName = "sentry-webpack-debug-id-upload-plugin"; - return { - name: pluginName, - webpack(compiler) { - const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); - - compiler.hooks.afterEmit.tapAsync(pluginName, (compilation, callback: () => void) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const outputPath = (compilation.outputOptions.path as string | undefined) ?? path.resolve(); - const buildArtifacts = Object.keys(compilation.assets as Record).map( - (asset) => path.join(outputPath, asset) - ); - void upload(buildArtifacts) - .then(() => { - callback(); - }) - .finally(() => { - freeGlobalDependencyOnDebugIdSourcemapArtifacts(); - }); - }); +type WebpackCompilationContext = { + compiler: { + webpack?: { + NormalModule?: { + getCompilationHooks: (compilation: WebpackCompilationContext) => { + loader: { + tap: ( + name: string, + callback: (loaderContext: WebpackLoaderContext, module: WebpackModule) => void + ) => void; + }; + }; + }; + }; + }; + hooks: { + normalModuleLoader?: { + tap: ( + name: string, + callback: (loaderContext: WebpackLoaderContext, module: WebpackModule) => void + ) => void; + }; + }; +}; - if (forceExitOnBuildCompletion && compiler.options.mode === "production") { - compiler.hooks.done.tap(pluginName, () => { - setTimeout(() => { - logger.debug("Exiting process after debug file upload"); - process.exit(0); - }); - }); - } - }, +type WebpackCompiler = { + options: { + plugins?: unknown[]; + mode?: string; + module?: { + rules?: unknown[]; + }; }; -} + hooks: { + thisCompilation: { + tap: (name: string, callback: (compilation: WebpackCompilationContext) => void) => void; + }; + afterEmit: { + tapAsync: ( + name: string, + callback: (compilation: WebpackCompilation, cb: () => void) => void + ) => void; + }; + done: { + tap: (name: string, callback: () => void) => void; + }; + }; + webpack?: { + BannerPlugin?: UnsafeBannerPlugin; + DefinePlugin?: UnsafeDefinePlugin; + }; +}; + +type WebpackCompilation = { + outputOptions: { + path?: string; + }; + assets: Record; + hooks: { + processAssets: { + tap: (options: { name: string; stage: number }, callback: () => void) => void; + }; + }; +}; // Detect webpack major version for telemetry (helps differentiate webpack 4 vs 5 usage) function getWebpackMajorVersion(): string | undefined { @@ -174,20 +145,177 @@ function getWebpackMajorVersion(): string | undefined { * * Since webpack 5.1 compiler contains webpack module so plugins always use correct webpack version. */ -export function sentryWebpackUnpluginFactory({ - BannerPlugin, - DefinePlugin, +export function sentryWebpackPluginFactory({ + BannerPlugin: UnsafeBannerPlugin, + DefinePlugin: UnsafeDefinePlugin, }: { BannerPlugin?: UnsafeBannerPlugin; DefinePlugin?: UnsafeDefinePlugin; -} = {}): ReturnType { - return sentryUnpluginFactory({ - injectionPlugin: webpackInjectionPlugin(BannerPlugin), - componentNameAnnotatePlugin: webpackComponentNameAnnotatePlugin(), - debugIdUploadPlugin: webpackDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: webpackBundleSizeOptimizationsPlugin(DefinePlugin), - getBundlerMajorVersion: getWebpackMajorVersion, - }); +} = {}) { + return function sentryWebpackPlugin(userOptions: SentryWebpackPluginOptions = {}) { + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? "[sentry-webpack-plugin]", + buildTool: "webpack", + buildToolMajorVersion: getWebpackMajorVersion(), + }); + + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues: replacementValues, + bundleMetadata, + createDependencyOnBuildArtifacts, + } = sentryBuildPluginManager; + + if (options.disable) { + return { + apply() { + // noop plugin + }, + }; + } + + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + + const sourcemapsEnabled = options.sourcemaps?.disable !== true; + const staticInjectionCode = new CodeInjection(); + + if (!options.release.inject) { + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); + } else if (!options.release.name) { + logger.debug( + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." + ); + } else { + staticInjectionCode.append( + generateGlobalInjectorCode({ + release: options.release.name, + injectBuildInformation: options._experiments.injectBuildInformation || false, + }) + ); + } + + if (Object.keys(bundleMetadata).length > 0) { + staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); + } + + const transformAnnotations = options.reactComponentAnnotation?.enabled + ? createComponentNameAnnotateHooks( + options.reactComponentAnnotation?.ignoredComponents || [], + !!options.reactComponentAnnotation?._experimentalInjectIntoHtml + ) + : undefined; + + const transformReplace = Object.keys(replacementValues).length > 0; + + return { + apply(compiler: WebpackCompiler) { + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Telemetry failures are acceptable + }); + + // Get the correct plugin classes (webpack 5.1+ vs older versions) + const BannerPlugin = compiler?.webpack?.BannerPlugin || UnsafeBannerPlugin; + const DefinePlugin = compiler?.webpack?.DefinePlugin || UnsafeDefinePlugin; + + // Add BannerPlugin for code injection (release, metadata, debug IDs) + if (!staticInjectionCode.isEmpty() || sourcemapsEnabled) { + if (!BannerPlugin) { + logger.warn( + "BannerPlugin is not available. Skipping code injection. This usually means webpack is not properly configured." + ); + } else { + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push( + new BannerPlugin({ + raw: true, + include: /\.(js|ts|jsx|tsx|mjs|cjs)(\?[^?]*)?(#[^#]*)?$/, + banner: (arg?: BannerPluginCallbackArg) => { + const codeToInject = staticInjectionCode.clone(); + if (sourcemapsEnabled) { + const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; + const debugId = hash ? stringToUUID(hash) : uuidv4(); + codeToInject.append(getDebugIdSnippet(debugId)); + } + return codeToInject.code(); + }, + }) + ); + } + } + + // Add DefinePlugin for bundle size optimizations + if (transformReplace && DefinePlugin) { + compiler.options.plugins = compiler.options.plugins || []; + compiler.options.plugins.push(new DefinePlugin(replacementValues)); + } + + // Add component name annotation transform + if (transformAnnotations?.transform) { + compiler.options.module = compiler.options.module || {}; + compiler.options.module.rules = compiler.options.module.rules || []; + compiler.options.module.rules.unshift({ + test: /\.[jt]sx$/, + exclude: /node_modules/, + enforce: "pre", + use: [ + { + loader: COMPONENT_ANNOTATION_LOADER, + options: { + transform: transformAnnotations.transform, + }, + }, + ], + }); + } + + compiler.hooks.afterEmit.tapAsync( + "sentry-webpack-plugin", + (compilation: WebpackCompilation, callback: () => void) => { + const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); + + void sentryBuildPluginManager + .createRelease() + .then(async () => { + if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { + const outputPath = compilation.outputOptions.path ?? path.resolve(); + const buildArtifacts = Object.keys(compilation.assets).map((asset) => + path.join(outputPath, asset) + ); + await upload(buildArtifacts); + } + }) + .then(() => { + callback(); + }) + .finally(() => { + freeGlobalDependencyOnBuildArtifacts(); + void sentryBuildPluginManager.deleteArtifacts(); + }); + } + ); + + if ( + userOptions._experiments?.forceExitOnBuildCompletion && + compiler.options.mode === "production" + ) { + compiler.hooks.done.tap("sentry-webpack-plugin", () => { + setTimeout(() => { + logger.debug("Exiting process after debug file upload"); + process.exit(0); + }); + }); + } + }, + }; + }; } export type SentryWebpackPluginOptions = Options & { diff --git a/packages/webpack-plugin/src/webpack5.ts b/packages/webpack-plugin/src/webpack5.ts index 421f5eb8159e..51f611ef352f 100644 --- a/packages/webpack-plugin/src/webpack5.ts +++ b/packages/webpack-plugin/src/webpack5.ts @@ -1,10 +1,10 @@ -import { SentryWebpackPluginOptions, sentryWebpackUnpluginFactory } from "./webpack4and5"; +import { SentryWebpackPluginOptions, sentryWebpackPluginFactory } from "./webpack4and5"; -const sentryUnplugin = sentryWebpackUnpluginFactory(); +const createSentryWebpackPlugin = sentryWebpackPluginFactory(); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = - sentryUnplugin.webpack; + createSentryWebpackPlugin; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; From 62bfaa57d1b5864374717604cf515eebd7f584f7 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 12 Feb 2026 13:00:40 +0100 Subject: [PATCH 584/640] feat: esbuild no longer uses unplugin (#871) --- packages/bundler-plugin-core/src/index.ts | 9 +- packages/esbuild-plugin/package.json | 1 - packages/esbuild-plugin/src/index.ts | 418 +++++++++--------- .../esbuild-plugin/test/public-api.test.ts | 2 +- 4 files changed, 205 insertions(+), 225 deletions(-) diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index e90f62b4e91c..3534a8dfff05 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -493,7 +493,12 @@ export function getDebugIdSnippet(debugId: string): CodeInjection { export type { Logger } from "./logger"; export type { Options, SentrySDKBuildFlags } from "./types"; -export { CodeInjection, replaceBooleanFlagsInCode, stringToUUID } from "./utils"; +export { + CodeInjection, + replaceBooleanFlagsInCode, + stringToUUID, + generateGlobalInjectorCode, + generateModuleMetadataInjectorCode, +} from "./utils"; export { createSentryBuildPluginManager } from "./build-plugin-manager"; -export { generateGlobalInjectorCode, generateModuleMetadataInjectorCode } from "./utils"; export { createDebugIdUploadFunction } from "./debug-id-upload"; diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 170b83811b1e..6892b1d1b592 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -49,7 +49,6 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "4.9.1", - "unplugin": "1.0.1", "uuid": "^9.0.0" }, "devDependencies": { diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 58ab0d815a54..a8579f447993 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,28 +1,169 @@ import { - sentryUnpluginFactory, + createSentryBuildPluginManager, + generateGlobalInjectorCode, + generateModuleMetadataInjectorCode, Options, getDebugIdSnippet, - SentrySDKBuildFlags, + createDebugIdUploadFunction, + CodeInjection, } from "@sentry/bundler-plugin-core"; -import type { Logger } from "@sentry/bundler-plugin-core"; -import type { UnpluginOptions } from "unplugin"; -import * as path from "path"; - +import * as path from "node:path"; +import { createRequire } from "node:module"; import { v4 as uuidv4 } from "uuid"; -function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { - const pluginName = "sentry-esbuild-release-injection-plugin"; - const virtualReleaseInjectionFilePath = path.resolve("_sentry-release-injection-stub"); // needs to be an absolute path for older eslint versions +interface EsbuildOnResolveArgs { + path: string; + kind: string; + importer?: string; + resolveDir: string; + pluginData?: unknown; +} + +interface EsbuildOnResolveResult { + path: string; + sideEffects?: boolean; + pluginName?: string; + namespace?: string; + suffix?: string; + pluginData?: unknown; +} + +interface EsbuildOnLoadArgs { + path: string; + pluginData?: unknown; +} + +interface EsbuildOnLoadResult { + loader: string; + pluginName: string; + contents: string; + resolveDir?: string; +} + +interface EsbuildOnEndArgs { + metafile?: { + outputs: Record; + }; +} + +interface EsbuildInitialOptions { + bundle?: boolean; + inject?: string[]; + metafile?: boolean; + define?: Record; +} + +interface EsbuildPluginBuild { + initialOptions: EsbuildInitialOptions; + onLoad: ( + options: { filter: RegExp; namespace?: string }, + callback: (args: EsbuildOnLoadArgs) => EsbuildOnLoadResult | null + ) => void; + onResolve: ( + options: { filter: RegExp }, + callback: (args: EsbuildOnResolveArgs) => EsbuildOnResolveResult | undefined + ) => void; + onEnd: (callback: (result: EsbuildOnEndArgs) => void | Promise) => void; +} + +function getEsbuildMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - esbuild transpiles this for us + const req = createRequire(import.meta.url); + const esbuild = req("esbuild") as { version?: string }; + // esbuild hasn't released a v1 yet, so we'll return the minor version as the major version + return esbuild.version?.split(".")[1]; + } catch (err) { + // do nothing, we'll just not report a version + } + + return undefined; +} + +const pluginName = "sentry-esbuild-plugin"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function sentryEsbuildPlugin(userOptions: Options = {}): any { + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[${pluginName}]`, + buildTool: "esbuild", + buildToolMajorVersion: getEsbuildMajorVersion(), + }); + + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues: replacementValues, + bundleMetadata, + createDependencyOnBuildArtifacts, + } = sentryBuildPluginManager; + + if (options.disable) { + return { + name: "sentry-esbuild-noop-plugin", + setup() { + // noop plugin + }, + }; + } + + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + + const sourcemapsEnabled = options.sourcemaps?.disable !== true; + const staticInjectionCode = new CodeInjection(); + + if (!options.release.inject) { + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); + } else if (!options.release.name) { + logger.debug( + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." + ); + } else { + staticInjectionCode.append( + generateGlobalInjectorCode({ + release: options.release.name, + injectBuildInformation: options._experiments.injectBuildInformation || false, + }) + ); + } + + if (Object.keys(bundleMetadata).length > 0) { + staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); + } + + // Component annotation warning + if (options.reactComponentAnnotation?.enabled) { + logger.warn( + "Component name annotation is not supported in esbuild. Please use a separate transform step or consider using a different bundler." + ); + } + + const transformReplace = Object.keys(replacementValues).length > 0; + + // Track entry points wrapped for debug ID injection + const debugIdWrappedPaths = new Set(); + + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Telemetry failures are acceptable + }); return { name: pluginName, - - esbuild: { - setup({ initialOptions, onLoad, onResolve }) { + setup({ initialOptions, onLoad, onResolve, onEnd }: EsbuildPluginBuild) { + // Release and/or metadata injection + if (!staticInjectionCode.isEmpty()) { + const virtualInjectionFilePath = path.resolve("_sentry-injection-stub"); initialOptions.inject = initialOptions.inject || []; - initialOptions.inject.push(virtualReleaseInjectionFilePath); + initialOptions.inject.push(virtualInjectionFilePath); - onResolve({ filter: /_sentry-release-injection-stub/ }, (args) => { + onResolve({ filter: /_sentry-injection-stub/ }, (args) => { return { path: args.path, sideEffects: true, @@ -30,45 +171,29 @@ function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions { }; }); - onLoad({ filter: /_sentry-release-injection-stub/ }, () => { + onLoad({ filter: /_sentry-injection-stub/ }, () => { return { loader: "js", pluginName, - contents: injectionCode, + contents: staticInjectionCode.code(), }; }); - }, - }, - }; -} + } -/** - * Shared set to track entry points that have been wrapped by the metadata plugin - * This allows the debug ID plugin to know when an import is coming from a metadata proxy - */ -const metadataProxyEntryPoints = new Set(); - -/** - * Set to track which paths have already been wrapped with debug ID injection - * This prevents the debug ID plugin from wrapping the same module multiple times - */ -const debugIdWrappedPaths = new Set(); - -function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { - const pluginName = "sentry-esbuild-debug-id-injection-plugin"; - const stubNamespace = "sentry-debug-id-stub"; + // Bundle size optimizations + if (transformReplace) { + const replacementStringValues: Record = {}; + Object.entries(replacementValues).forEach(([key, value]) => { + replacementStringValues[key] = JSON.stringify(value); + }); - return { - name: pluginName, + initialOptions.define = { ...initialOptions.define, ...replacementStringValues }; + } - esbuild: { - setup({ initialOptions, onLoad, onResolve }) { + // Debug ID injection - requires per-entry-point unique IDs + if (sourcemapsEnabled) { // Clear state from previous builds (important for watch mode and test suites) debugIdWrappedPaths.clear(); - // Also clear metadataProxyEntryPoints here because if moduleMetadataInjectionPlugin - // is not instantiated in this build (e.g., moduleMetadata was disabled), we don't - // want stale entries from a previous build to affect the current one. - metadataProxyEntryPoints.clear(); if (!initialOptions.bundle) { logger.warn( @@ -76,21 +201,9 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { ); } + // Wrap entry points to inject debug IDs onResolve({ filter: /.*/ }, (args) => { - // Inject debug IDs into entry points and into imports from metadata proxy modules - const isEntryPoint = args.kind === "entry-point"; - - // Check if this import is coming from a metadata proxy module - // The metadata plugin registers entry points it wraps in the shared Set - // We need to strip the query string suffix because esbuild includes the suffix - // (e.g., ?sentryMetadataProxyModule=true) in args.importer - const importerPath = args.importer?.split("?")[0]; - const isImportFromMetadataProxy = - args.kind === "import-statement" && - importerPath !== undefined && - metadataProxyEntryPoints.has(importerPath); - - if (!isEntryPoint && !isImportFromMetadataProxy) { + if (args.kind !== "entry-point") { return; } @@ -112,10 +225,9 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { return { pluginName, - // needs to be an abs path, otherwise esbuild will complain path: resolvedPath, pluginData: { - isProxyResolver: true, + isDebugIdProxy: true, originalPath: args.path, originalResolveDir: args.resolveDir, }, @@ -125,25 +237,22 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, // making it re-resolve the entrypoint when it is imported from the proxy module. // Super confusing? Yes. Works? Apparently... Let's see. - suffix: "?sentryProxyModule=true", + suffix: "?sentryDebugIdProxy=true", }; }); onLoad({ filter: /.*/ }, (args) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (!(args.pluginData?.isProxyResolver as undefined | boolean)) { + if (!(args.pluginData as { isDebugIdProxy?: boolean })?.isDebugIdProxy) { return null; } - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const originalPath = args.pluginData.originalPath as string; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const originalResolveDir = args.pluginData.originalResolveDir as string; + const originalPath = (args.pluginData as { originalPath: string }).originalPath; + const originalResolveDir = (args.pluginData as { originalResolveDir: string }) + .originalResolveDir; return { loader: "js", pluginName, - // We need to use JSON.stringify below so that any escape backslashes stay escape backslashes, in order not to break paths on windows contents: ` import "_sentry-debug-id-injection-stub"; import * as OriginalModule from ${JSON.stringify(originalPath)}; @@ -158,179 +267,46 @@ function esbuildDebugIdInjectionPlugin(logger: Logger): UnpluginOptions { path: args.path, sideEffects: true, pluginName, - namespace: stubNamespace, - suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved - }; - }); - - onLoad({ filter: /_sentry-debug-id-injection-stub/, namespace: stubNamespace }, () => { - return { - loader: "js", - pluginName, - contents: getDebugIdSnippet(uuidv4()).code(), - }; - }); - }, - }, - }; -} - -function esbuildModuleMetadataInjectionPlugin(injectionCode: string): UnpluginOptions { - const pluginName = "sentry-esbuild-module-metadata-injection-plugin"; - const stubNamespace = "sentry-module-metadata-stub"; - - return { - name: pluginName, - - esbuild: { - setup({ initialOptions, onLoad, onResolve }) { - // Clear state from previous builds (important for watch mode and test suites) - metadataProxyEntryPoints.clear(); - - onResolve({ filter: /.*/ }, (args) => { - if (args.kind !== "entry-point") { - return; - } else { - // Injected modules via the esbuild `inject` option do also have `kind == "entry-point"`. - // We do not want to inject debug IDs into those files because they are already bundled into the entrypoints - if (initialOptions.inject?.includes(args.path)) { - return; - } - - const resolvedPath = path.isAbsolute(args.path) - ? args.path - : path.join(args.resolveDir, args.path); - - // Register this entry point so the debug ID plugin knows to wrap imports from - // this proxy module, this because the debug ID may run after the metadata plugin - metadataProxyEntryPoints.add(resolvedPath); - - return { - pluginName, - // needs to be an abs path, otherwise esbuild will complain - path: resolvedPath, - pluginData: { - isMetadataProxyResolver: true, - originalPath: args.path, - originalResolveDir: args.resolveDir, - }, - // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse - // the module tree any further down past the proxy module because we're essentially creating a dependency - // loop back to the proxy module. - // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, - // making it re-resolve the entrypoint when it is imported from the proxy module. - // Super confusing? Yes. Works? Apparently... Let's see. - suffix: "?sentryMetadataProxyModule=true", - }; - } - }); - - onLoad({ filter: /.*/ }, (args) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (!(args.pluginData?.isMetadataProxyResolver as undefined | boolean)) { - return null; - } - - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const originalPath = args.pluginData.originalPath as string; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const originalResolveDir = args.pluginData.originalResolveDir as string; - - return { - loader: "js", - pluginName, - // We need to use JSON.stringify below so that any escape backslashes stay escape backslashes, in order not to break paths on windows - contents: ` - import "_sentry-module-metadata-injection-stub"; - import * as OriginalModule from ${JSON.stringify(originalPath)}; - export default OriginalModule.default; - export * from ${JSON.stringify(originalPath)};`, - resolveDir: originalResolveDir, - }; - }); - - onResolve({ filter: /_sentry-module-metadata-injection-stub/ }, (args) => { - return { - path: args.path, - sideEffects: true, - pluginName, - namespace: stubNamespace, - suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved + namespace: "sentry-debug-id-stub", + suffix: "?sentry-module-id=" + uuidv4(), }; }); onLoad( - { filter: /_sentry-module-metadata-injection-stub/, namespace: stubNamespace }, + { filter: /_sentry-debug-id-injection-stub/, namespace: "sentry-debug-id-stub" }, () => { return { loader: "js", pluginName, - contents: injectionCode, + contents: getDebugIdSnippet(uuidv4()).code(), }; } ); - }, - }, - }; -} + } -function esbuildDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise, - _logger: Logger, - createDependencyOnBuildArtifacts: () => () => void -): UnpluginOptions { - const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); - return { - name: "sentry-esbuild-debug-id-upload-plugin", - esbuild: { - setup({ initialOptions, onEnd }) { - initialOptions.metafile = true; - onEnd(async (result) => { - try { + // Create release and optionally upload + const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); + + initialOptions.metafile = true; + onEnd(async (result) => { + try { + await sentryBuildPluginManager.createRelease(); + + if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; await upload(buildArtifacts); - } finally { - freeGlobalDependencyOnDebugIdSourcemapArtifacts(); } - }); - }, - }, - }; -} - -function esbuildBundleSizeOptimizationsPlugin( - replacementValues: SentrySDKBuildFlags -): UnpluginOptions { - return { - name: "sentry-esbuild-bundle-size-optimizations-plugin", - esbuild: { - setup({ initialOptions }) { - const replacementStringValues: Record = {}; - Object.entries(replacementValues).forEach(([key, value]) => { - replacementStringValues[key] = JSON.stringify(value); - }); - - initialOptions.define = { ...initialOptions.define, ...replacementStringValues }; - }, + } finally { + freeGlobalDependencyOnBuildArtifacts(); + await sentryBuildPluginManager.deleteArtifacts(); + } + }); }, }; } -const sentryUnplugin = sentryUnpluginFactory({ - injectionPlugin: { - releaseInjectionPlugin: esbuildReleaseInjectionPlugin, - debugIdInjectionPlugin: esbuildDebugIdInjectionPlugin, - moduleMetadataInjectionPlugin: esbuildModuleMetadataInjectionPlugin, - }, - debugIdUploadPlugin: esbuildDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: esbuildBundleSizeOptimizationsPlugin, -}); - // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryEsbuildPlugin: (options?: Options) => any = sentryUnplugin.esbuild; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export default sentryUnplugin.esbuild as (options?: Options) => any; - +export default sentryEsbuildPlugin; export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index 7cad2e0a5670..a428c8be2b06 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -15,6 +15,6 @@ describe("sentryEsbuildPlugin", () => { }) as EsbuildPlugin; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - expect(plugins).toEqual({ name: "unplugin-host-0", setup: expect.any(Function) }); + expect(plugins).toEqual({ name: "sentry-esbuild-plugin", setup: expect.any(Function) }); }); }); From 79d3f9e5fe01627e99f994993a1644aeeabc2467 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 16 Feb 2026 15:35:39 +0100 Subject: [PATCH 585/640] fix(webpack): Deduplicate webpack deploys (#875) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next.js Vercel deploys were creating duplicate deploy records (one per webpack compiler: client, server, edge) - Added a module-level guard (Set keyed by release name) so newDeploy only fires once per release per process - Only guards newDeploy — all other release operations (create, finalize, setCommits) are idempotent and unaffected closes #873 --- .../src/build-plugin-manager.ts | 13 +- .../test/build-plugin-manager.test.ts | 140 +++++++++++++++++- 2 files changed, 150 insertions(+), 3 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index a014a934daa1..6922153f1722 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -29,6 +29,16 @@ import { import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; +// Module-level guard to prevent duplicate deploy records when multiple bundler plugin +// instances run in the same process (e.g. Next.js creates separate webpack compilers +// for client, server, and edge). Keyed by release name. +const _deployedReleases = new Set(); + +/** @internal Exported for testing only. */ +export function _resetDeployedReleasesForTesting(): void { + _deployedReleases.clear(); +} + export type SentryBuildPluginManager = { /** * A logger instance that takes the options passed to the build plugin manager into account. (for silencing and log level etc.) @@ -534,8 +544,9 @@ export function createSentryBuildPluginManager( await cliInstance.releases.finalize(options.release.name); } - if (options.release.deploy) { + if (options.release.deploy && !_deployedReleases.has(options.release.name)) { await cliInstance.releases.newDeploy(options.release.name, options.release.deploy); + _deployedReleases.add(options.release.name); } } catch (e) { sentryScope.captureException('Error in "releaseManagementPlugin" writeBundle hook'); 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 9f3968ebd38f..6c320b6ca234 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -1,10 +1,14 @@ -import { createSentryBuildPluginManager } from "../src/build-plugin-manager"; +import { + createSentryBuildPluginManager, + _resetDeployedReleasesForTesting, +} from "../src/build-plugin-manager"; import fs from "fs"; import { glob } from "glob"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; const mockCliExecute = jest.fn(); const mockCliUploadSourceMaps = jest.fn(); +const mockCliNewDeploy = jest.fn(); jest.mock("@sentry/cli", () => { return jest.fn().mockImplementation(() => ({ @@ -14,7 +18,7 @@ jest.mock("@sentry/cli", () => { new: jest.fn(), finalize: jest.fn(), setCommits: jest.fn(), - newDeploy: jest.fn(), + newDeploy: mockCliNewDeploy, }, })); }); @@ -633,4 +637,136 @@ describe("createSentryBuildPluginManager", () => { }); }); }); + + describe("createRelease deploy deduplication", () => { + beforeEach(() => { + jest.clearAllMocks(); + _resetDeployedReleasesForTesting(); + }); + + it("should create a deploy record on the first call", async () => { + const manager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "test-release", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.createRelease(); + + expect(mockCliNewDeploy).toHaveBeenCalledTimes(1); + expect(mockCliNewDeploy).toHaveBeenCalledWith("test-release", { env: "production" }); + }); + + it("should not create duplicate deploy records when createRelease is called multiple times on the same instance", async () => { + const manager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "test-release", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.createRelease(); + await manager.createRelease(); + await manager.createRelease(); + + expect(mockCliNewDeploy).toHaveBeenCalledTimes(1); + }); + + it("should not create duplicate deploy records across separate plugin instances with the same release name", async () => { + const managerA = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "test-release", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + const managerB = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "test-release", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await managerA.createRelease(); + await managerB.createRelease(); + + expect(mockCliNewDeploy).toHaveBeenCalledTimes(1); + }); + + it("should allow deploys for different release names", async () => { + const managerA = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "release-1", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + const managerB = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { + name: "release-2", + deploy: { env: "production" }, + }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await managerA.createRelease(); + await managerB.createRelease(); + + expect(mockCliNewDeploy).toHaveBeenCalledTimes(2); + expect(mockCliNewDeploy).toHaveBeenCalledWith("release-1", { env: "production" }); + expect(mockCliNewDeploy).toHaveBeenCalledWith("release-2", { env: "production" }); + }); + + it("should not create a deploy when deploy option is not set", async () => { + const manager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + release: { name: "test-release" }, + }, + { buildTool: "webpack", loggerPrefix: "[sentry-webpack-plugin]" } + ); + + await manager.createRelease(); + + expect(mockCliNewDeploy).not.toHaveBeenCalled(); + }); + }); }); From 1271ced926f2cbab47e28589165d471892baab8c Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 16 Feb 2026 14:42:48 +0000 Subject: [PATCH 586/640] feat: Rollup/Vite no longer uses unplugin (#858) --- packages/bundler-plugin-core/src/index.ts | 179 ++--------- packages/bundler-plugin-core/src/utils.ts | 2 +- .../test/__snapshots__/utils.test.ts.snap | 8 +- .../bundler-plugin-core/test/index.test.ts | 198 +------------ .../bundler-plugin-core/test/utils.test.ts | 8 +- packages/e2e-tests/package.json | 2 +- packages/esbuild-plugin/src/index.ts | 4 +- .../disabled-sourcemaps-upload.test.ts | 26 -- .../input/bundle.js | 2 - packages/rollup-plugin/package.json | 2 +- packages/rollup-plugin/src/index.ts | 280 ++++++++++++++---- .../rollup-plugin/test/public-api.test.ts | 212 ++++++++++++- packages/vite-plugin/package.json | 2 +- packages/vite-plugin/src/index.ts | 75 +---- packages/vite-plugin/test/public-api.test.ts | 10 +- packages/webpack-plugin/src/webpack4and5.ts | 4 +- yarn.lock | 7 - 17 files changed, 478 insertions(+), 543 deletions(-) delete mode 100644 packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts delete mode 100644 packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 3534a8dfff05..4a3758c70595 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -6,8 +6,6 @@ import SentryCli from "@sentry/cli"; import { logger } from "@sentry/utils"; import * as fs from "fs"; import { glob } from "glob"; -import MagicString, { SourceMap } from "magic-string"; -import * as path from "path"; import { createUnplugin, TransformResult, UnpluginInstance, UnpluginOptions } from "unplugin"; import { createSentryBuildPluginManager } from "./build-plugin-manager"; import { createDebugIdUploadFunction } from "./debug-id-upload"; @@ -16,10 +14,8 @@ import { Options, SentrySDKBuildFlags } from "./types"; import { CodeInjection, containsOnlyImports, - generateGlobalInjectorCode, + generateReleaseInjectorCode, generateModuleMetadataInjectorCode, - replaceBooleanFlagsInCode, - stringToUUID, stripQueryAndHashFromPath, } from "./utils"; @@ -121,7 +117,7 @@ export function sentryUnpluginFactory({ "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." ); } else { - const code = generateGlobalInjectorCode({ + const code = generateReleaseInjectorCode({ release: options.release.name, injectBuildInformation: options._experiments.injectBuildInformation || false, }); @@ -230,33 +226,15 @@ export function sentryCliBinaryExists(): boolean { // We need to be careful not to inject the snippet before any `"use strict";`s. // As an additional complication `"use strict";`s may come after any number of comments. -const COMMENT_USE_STRICT_REGEX = +export const COMMENT_USE_STRICT_REGEX = // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; -/** - * Simplified `renderChunk` hook type from Rollup. - * We can't reference the type directly because the Vite plugin complains - * about type mismatches - */ -type RenderChunkHook = ( - code: string, - chunk: { - fileName: string; - facadeModuleId?: string | null; - }, - outputOptions?: unknown, - meta?: { magicString?: MagicString } -) => { - code: string; - readonly map?: SourceMap; -} | null; - /** * Checks if a file is a JavaScript file based on its extension. * Handles query strings and hashes in the filename. */ -function isJsFile(fileName: string): boolean { +export function isJsFile(fileName: string): boolean { const cleanFileName = stripQueryAndHashFromPath(fileName); return [".js", ".mjs", ".cjs"].some((ext) => cleanFileName.endsWith(ext)); } @@ -275,7 +253,10 @@ function isJsFile(fileName: string): boolean { * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks * @returns true if the chunk should be skipped */ -function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | undefined): boolean { +export function shouldSkipCodeInjection( + code: string, + facadeModuleId: string | null | undefined +): boolean { // Skip empty chunks - these are placeholder chunks that should be optimized away if (code.trim().length === 0) { return true; @@ -289,137 +270,17 @@ function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | u return false; } -export function createRollupBundleSizeOptimizationHooks(replacementValues: SentrySDKBuildFlags): { - transform: UnpluginOptions["transform"]; -} { - return { - transform(code: string) { - return replaceBooleanFlagsInCode(code, replacementValues); - }, - }; -} - -export function createRollupInjectionHooks( - injectionCode: CodeInjection, - debugIds: boolean -): { - renderChunk: RenderChunkHook; -} { - return { - renderChunk( - code: string, - chunk: { fileName: string; facadeModuleId?: string | null }, - _?: unknown, - meta?: { magicString?: MagicString } - ) { - if (!isJsFile(chunk.fileName)) { - return null; // returning null means not modifying the chunk at all - } - - // Skip empty chunks and HTML facade chunks (Vite MPA) - if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { - return null; - } - - const codeToInject = injectionCode.clone(); - - if (debugIds) { - // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) - const chunkStartSnippet = code.slice(0, 6000); - const chunkEndSnippet = code.slice(-500); - - if ( - !( - chunkStartSnippet.includes("_sentryDebugIdIdentifier") || - chunkEndSnippet.includes("//# debugId=") - ) - ) { - const debugId = stringToUUID(code); // generate a deterministic debug ID - codeToInject.append(getDebugIdSnippet(debugId)); - } - } - - const ms = meta?.magicString || new MagicString(code, { filename: chunk.fileName }); - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, codeToInject.code()); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(codeToInject.code()); - } - - // Rolldown can pass a native MagicString instance in meta.magicString - // https://rolldown.rs/in-depth/native-magic-string#usage-examples - if (ms?.constructor?.name === "BindingMagicString") { - // Rolldown docs say to return the magic string instance directly in this case - return { code: ms as unknown as string }; - } - - return { - code: ms.toString(), - get map() { - return ms.generateMap({ - file: chunk.fileName, - hires: "boundary", - }); - }, - }; - }, - }; -} - -export function createRollupDebugIdUploadHooks( - upload: (buildArtifacts: string[]) => Promise, - _logger: Logger, - createDependencyOnBuildArtifacts: () => () => void -): { - writeBundle: ( - outputOptions: { dir?: string; file?: string }, - bundle: { [fileName: string]: unknown } - ) => Promise; -} { - const freeGlobalDependencyOnDebugIdSourcemapArtifacts = createDependencyOnBuildArtifacts(); - return { - async writeBundle( - outputOptions: { dir?: string; file?: string }, - bundle: { [fileName: string]: unknown } - ) { - try { - if (outputOptions.dir) { - const outputDir = outputOptions.dir; - const buildArtifacts = await glob( - [ - "/**/*.js", - "/**/*.mjs", - "/**/*.cjs", - "/**/*.js.map", - "/**/*.mjs.map", - "/**/*.cjs.map", - ].map((q) => `${q}?(\\?*)?(#*)`), // We want to allow query and hashes strings at the end of files - { - root: outputDir, - absolute: true, - nodir: true, - } - ); - await upload(buildArtifacts); - } else if (outputOptions.file) { - await upload([outputOptions.file]); - } else { - const buildArtifacts = Object.keys(bundle).map((asset) => - path.join(path.resolve(), asset) - ); - await upload(buildArtifacts); - } - } finally { - freeGlobalDependencyOnDebugIdSourcemapArtifacts(); - } - }, - }; +export function globFiles(outputDir: string): Promise { + return glob( + ["/**/*.js", "/**/*.mjs", "/**/*.cjs", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"].map( + (q) => `${q}?(\\?*)?(#*)` + ), // We want to allow query and hashes strings at the end of files + { + root: outputDir, + absolute: true, + nodir: true, + } + ); } export function createComponentNameAnnotateHooks( @@ -497,7 +358,7 @@ export { CodeInjection, replaceBooleanFlagsInCode, stringToUUID, - generateGlobalInjectorCode, + generateReleaseInjectorCode, generateModuleMetadataInjectorCode, } from "./utils"; export { createSentryBuildPluginManager } from "./build-plugin-manager"; diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 9726895ecd31..45d98ab4657f 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -305,7 +305,7 @@ export function determineReleaseName(): string | undefined { * Generates code for the global injector which is responsible for setting the global * `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables. */ -export function generateGlobalInjectorCode({ +export function generateReleaseInjectorCode({ release, injectBuildInformation, }: { 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 1bacbe627a07..0597ebcea6ef 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 -exports[`generateGlobalInjectorCode 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[`generateGlobalInjectorCode 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\\":18};}catch(e){}}();"`; - 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 { it("returns the debugId injection snippet for a passed debugId", () => { @@ -142,200 +142,6 @@ app.mount('#app'); }); }); -describe("createRollupInjectionHooks", () => { - const inject = new CodeInjection(); - const hooks = createRollupInjectionHooks(inject, true); - - beforeEach(() => { - inject.clear(); - }); - - describe("renderChunk", () => { - it("should inject debug ID into clean JavaScript files", () => { - const code = 'console.log("Hello world");'; - const result = hooks.renderChunk(code, { 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]=\\"d4309f93-5358-4ae1-bcf0-3813aa590eb5\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-d4309f93-5358-4ae1-bcf0-3813aa590eb5\\");}catch(e){}}();console.log(\\"Hello world\\");"` - ); - }); - - it("should inject debug ID after 'use strict'", () => { - const code = '"use strict";\nconsole.log("Hello world");'; - const result = hooks.renderChunk(code, { fileName: "bundle.js" }); - - 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\\");" - `); - }); - - it.each([ - ["bundle.js"], - ["bundle.mjs"], - ["bundle.cjs"], - ["bundle.js?foo=bar"], - ["bundle.js#hash"], - ])("should process file '%s': %s", (fileName) => { - const code = 'console.log("test");'; - const result = hooks.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\\");"` - ); - }); - - it.each([["index.html"], ["styles.css"]])("should NOT process file '%s': %s", (fileName) => { - const code = 'console.log("test");'; - const result = hooks.renderChunk(code, { fileName }); - - expect(result).toBeNull(); - }); - - it.each([ - [ - "inline format at start", - ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};console.log("test");', - ], - [ - "comment format at end", - 'console.log("test");\n//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n//# sourceMappingURL=bundle.js.map', - ], - [ - "inline format with large file", - '"use strict";\n' + - "// comment\n".repeat(10) + - ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};' + - '\nconsole.log("line");\n'.repeat(100), - ], - ])("should NOT inject when debug ID already exists (%s)", (_description, code) => { - const result = hooks.renderChunk(code, { fileName: "bundle.js" }); - expect(result?.code).not.toContain("_sentryDebugIds"); - }); - - it("should only check boundaries for performance (not entire file)", () => { - // Inline format beyond first 6KB boundary - const codeWithInlineBeyond6KB = - "a".repeat(6100) + - ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};'; - - expect(hooks.renderChunk(codeWithInlineBeyond6KB, { fileName: "bundle.js" })).not.toBeNull(); - - // Comment format beyond last 500 bytes boundary - const codeWithCommentBeyond500B = - "//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n" + "a".repeat(600); - - expect( - hooks.renderChunk(codeWithCommentBeyond500B, { fileName: "bundle.js" }) - ).not.toBeNull(); - }); - - describe("HTML facade chunks (MPA vs SPA)", () => { - // Issue #829: MPA facades should be skipped - // Regression fix: SPA main bundles with HTML facades should NOT be skipped - - it.each([ - ["empty", ""], - ["only side-effect imports", `import './shared-module.js';`], - ["only named imports", `import { foo, bar } from './shared-module.js';`], - ["only re-exports", `export * from './shared-module.js';`], - [ - "multiple imports and comments", - `// This is a facade module -import './moduleA.js'; -import { x } from './moduleB.js'; -/* block comment */ -export * from './moduleC.js';`, - ], - ["'use strict' and imports only", `"use strict";\nimport './shared-module.js';`], - ["query string in facadeModuleId", `import './shared.js';`, "?query=param"], - ["hash in facadeModuleId", `import './shared.js';`, "#hash"], - ])("should SKIP HTML facade chunks: %s", (_, code, suffix = "") => { - const result = hooks.renderChunk(code, { - fileName: "page1.js", - facadeModuleId: `/path/to/page1.html${suffix}`, - }); - expect(result).toBeNull(); - }); - - it("should inject into HTML facade with function declarations", () => { - const result = hooks.renderChunk(`function main() { console.log("hello"); }`, { - fileName: "index.js", - facadeModuleId: "/path/to/index.html", - }); - 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\\"); }"` - ); - }); - - it("should inject into HTML facade with variable declarations", () => { - const result = hooks.renderChunk(`const x = 42;`, { - fileName: "index.js", - facadeModuleId: "/path/to/index.html", - }); - 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;"` - ); - }); - - it("should inject into HTML facade with substantial code (SPA main bundle)", () => { - const code = `import { initApp } from './app.js'; - -const config = { debug: true }; - -function bootstrap() { - initApp(config); -} - -bootstrap();`; - const result = hooks.renderChunk(code, { - fileName: "index.js", - facadeModuleId: "/path/to/index.html", - }); - 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'; - - const config = { debug: true }; - - function bootstrap() { - initApp(config); - } - - bootstrap();" - `); - }); - - it("should inject into HTML facade with mixed imports and code", () => { - const result = hooks.renderChunk( - `import './polyfills.js';\nimport { init } from './app.js';\n\ninit();`, - { fileName: "index.js", facadeModuleId: "/path/to/index.html" } - ); - 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'; - import { init } from './app.js'; - - init();" - `); - }); - - it("should inject into regular JS chunks (no HTML facade)", () => { - const result = hooks.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\\");"` - ); - }); - }); - }); -}); - describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { const mockComponentNameAnnotatePlugin = jest.fn(() => ({ name: "mock-component-name-annotate-plugin", diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 5cd1ef4e973e..df2bbc949331 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -1,5 +1,5 @@ import { - generateGlobalInjectorCode, + generateReleaseInjectorCode, generateModuleMetadataInjectorCode, getDependencies, getPackageJson, @@ -221,9 +221,9 @@ if (false && true) { }); }); -describe("generateGlobalInjectorCode", () => { +describe("generateReleaseInjectorCode", () => { it("generates code with release", () => { - const generatedCode = generateGlobalInjectorCode({ + const generatedCode = generateReleaseInjectorCode({ release: "1.2.3", injectBuildInformation: false, }); @@ -244,7 +244,7 @@ describe("generateGlobalInjectorCode", () => { }) ); - const generatedCode = generateGlobalInjectorCode({ + const generatedCode = generateReleaseInjectorCode({ release: "1.2.3", injectBuildInformation: true, }); diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 3e166b4621f9..c21cd238f769 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -34,7 +34,7 @@ "glob": "8.0.3", "jest": "^28.1.3", "premove": "^4.0.0", - "rollup": "2.77.0", + "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", "webpack4": "npm:webpack@^4", diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index a8579f447993..d1c731604eef 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,6 +1,6 @@ import { createSentryBuildPluginManager, - generateGlobalInjectorCode, + generateReleaseInjectorCode, generateModuleMetadataInjectorCode, Options, getDebugIdSnippet, @@ -127,7 +127,7 @@ export function sentryEsbuildPlugin(userOptions: Options = {}): any { ); } else { staticInjectionCode.append( - generateGlobalInjectorCode({ + generateReleaseInjectorCode({ release: options.release.name, injectBuildInformation: options._experiments.injectBuildInformation || false, }) diff --git a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts deleted file mode 100644 index dd22ef3183fc..000000000000 --- a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/disabled-sourcemaps-upload.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; - -const debugIdUploadPluginName = "sentry-rollup-debug-id-upload-plugin"; - -test("should not call upload plugin when sourcemaps are disabled", () => { - const plugins = sentryRollupPlugin({ - telemetry: false, - sourcemaps: { - disable: true, - }, - }) as Array<{ name: string }>; - - const debugIdUploadPlugin = plugins.find((plugin) => plugin.name === debugIdUploadPluginName); - - expect(debugIdUploadPlugin).toBeUndefined(); -}); - -test("should call upload plugin when sourcemaps are enabled", () => { - const plugins = sentryRollupPlugin({ - telemetry: false, - }) as Array<{ name: string }>; - - const debugIdUploadPlugin = plugins.find((plugin) => plugin.name === debugIdUploadPluginName); - - expect(debugIdUploadPlugin).toBeDefined(); -}); diff --git a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js b/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js deleted file mode 100644 index 85b0fd2bf286..000000000000 --- a/packages/integration-tests/fixtures/disabled-sourcemaps-upload/input/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("Beep!"); diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 5423badca409..4a50b7dc67fc 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -50,7 +50,7 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "4.9.1", - "unplugin": "1.0.1" + "magic-string": "0.30.8" }, "peerDependencies": { "rollup": ">=3.2.0" diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 802451bca1f2..902051cdddef 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,52 +1,37 @@ import { - CodeInjection, - sentryUnpluginFactory, + createSentryBuildPluginManager, + generateReleaseInjectorCode, + generateModuleMetadataInjectorCode, + isJsFile, + shouldSkipCodeInjection, Options, - createRollupInjectionHooks, - createRollupDebugIdUploadHooks, - SentrySDKBuildFlags, - createRollupBundleSizeOptimizationHooks, + getDebugIdSnippet, + stringToUUID, + COMMENT_USE_STRICT_REGEX, + createDebugIdUploadFunction, + globFiles, createComponentNameAnnotateHooks, - Logger, + replaceBooleanFlagsInCode, + CodeInjection, } from "@sentry/bundler-plugin-core"; +import MagicString, { SourceMap } from "magic-string"; +import type { TransformHook } from "rollup"; +import * as path from "node:path"; import { createRequire } from "node:module"; -import type { UnpluginOptions } from "unplugin"; -function rollupComponentNameAnnotatePlugin( - ignoredComponents: string[], - injectIntoHtml: boolean -): UnpluginOptions { - return { - name: "sentry-rollup-component-name-annotate-plugin", - rollup: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml), - }; -} - -function rollupInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions { - return { - name: "sentry-rollup-injection-plugin", - rollup: createRollupInjectionHooks(injectionCode, debugIds), - }; -} +function hasExistingDebugID(code: string): boolean { + // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) + const chunkStartSnippet = code.slice(0, 6000); + const chunkEndSnippet = code.slice(-500); -function rollupDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - createDependencyOnBuildArtifacts: () => () => void -): UnpluginOptions { - return { - name: "sentry-rollup-debug-id-upload-plugin", - rollup: createRollupDebugIdUploadHooks(upload, logger, createDependencyOnBuildArtifacts), - }; -} + if ( + chunkStartSnippet.includes("_sentryDebugIdIdentifier") || + chunkEndSnippet.includes("//# debugId=") + ) { + return true; // Debug ID already present, skip injection + } -function rollupBundleSizeOptimizationsPlugin( - replacementValues: SentrySDKBuildFlags -): UnpluginOptions { - return { - name: "sentry-rollup-bundle-size-optimizations-plugin", - rollup: createRollupBundleSizeOptimizationHooks(replacementValues), - }; + return false; } function getRollupMajorVersion(): string | undefined { @@ -63,16 +48,211 @@ function getRollupMajorVersion(): string | undefined { return undefined; } -const sentryUnplugin = sentryUnpluginFactory({ - injectionPlugin: rollupInjectionPlugin, - componentNameAnnotatePlugin: rollupComponentNameAnnotatePlugin, - debugIdUploadPlugin: rollupDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: rollupBundleSizeOptimizationsPlugin, - getBundlerMajorVersion: getRollupMajorVersion, -}); +/** + * @ignore - this is the internal plugin factory function only used for the Vite plugin! + */ +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function _rollupPluginInternal( + userOptions: Options = {}, + buildTool: "rollup" | "vite", + buildToolMajorVersion?: string +) { + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[sentry-${buildTool}-plugin]`, + buildTool, + buildToolMajorVersion: buildToolMajorVersion || getRollupMajorVersion(), + }); + + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues: replacementValues, + bundleMetadata, + createDependencyOnBuildArtifacts, + } = sentryBuildPluginManager; + + if (options.disable) { + return { + name: "sentry-noop-plugin", + }; + } + + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + + const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); + const sourcemapsEnabled = options.sourcemaps?.disable !== true; + const staticInjectionCode = new CodeInjection(); -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryRollupPlugin: (options?: Options) => any = sentryUnplugin.rollup; + if (!options.release.inject) { + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); + } else if (!options.release.name) { + logger.debug( + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." + ); + } else { + staticInjectionCode.append( + generateReleaseInjectorCode({ + release: options.release.name, + injectBuildInformation: options._experiments.injectBuildInformation || false, + }) + ); + } + + if (Object.keys(bundleMetadata).length > 0) { + staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); + } + + const transformAnnotations = options.reactComponentAnnotation?.enabled + ? createComponentNameAnnotateHooks( + options.reactComponentAnnotation?.ignoredComponents || [], + !!options.reactComponentAnnotation?._experimentalInjectIntoHtml + ) + : undefined; + + const transformReplace = Object.keys(replacementValues).length > 0; + const shouldTransform = transformAnnotations || transformReplace; + + function buildStart(): void { + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Telemetry failures are acceptable + }); + } + + function transform(code: string, id: string): ReturnType { + // Component annotations are only in user code and boolean flag replacements are + // only in Sentry code. If we successfully add annotations, we can return early. + + if (transformAnnotations?.transform) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore TS complains about 'this' + const result = transformAnnotations.transform(code, id); + if (result) { + return result; + } + } + + if (transformReplace) { + return replaceBooleanFlagsInCode(code, replacementValues); + } + + return null; + } + + function renderChunk( + code: string, + chunk: { fileName: string; facadeModuleId?: string | null }, + _?: unknown, + meta?: { magicString?: MagicString } + ): { + code: string; + map?: SourceMap; + } | null { + if (!isJsFile(chunk.fileName)) { + return null; // returning null means not modifying the chunk at all + } + + // Skip empty chunks and HTML facade chunks (Vite MPA) + if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { + return null; + } + + const injectCode = staticInjectionCode.clone(); + + if (sourcemapsEnabled && !hasExistingDebugID(code)) { + const debugId = stringToUUID(code); // generate a deterministic debug ID + injectCode.append(getDebugIdSnippet(debugId)); + } + + if (injectCode.isEmpty()) { + return null; + } + + const ms = meta?.magicString || new MagicString(code, { filename: chunk.fileName }); + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectCode.code()); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectCode.code()); + } + + // Rolldown can pass a native MagicString instance in meta.magicString + // https://rolldown.rs/in-depth/native-magic-string#usage-examples + if (ms?.constructor?.name === "BindingMagicString") { + // Rolldown docs say to return the magic string instance directly in this case + return { code: ms as unknown as string }; + } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" as unknown as undefined }), + }; + } + + async function writeBundle( + outputOptions: { dir?: string; file?: string }, + bundle: { [fileName: string]: unknown } + ): Promise { + try { + await sentryBuildPluginManager.createRelease(); + + if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { + if (outputOptions.dir) { + const outputDir = outputOptions.dir; + const buildArtifacts = await globFiles(outputDir); + await upload(buildArtifacts); + } else if (outputOptions.file) { + await upload([outputOptions.file]); + } else { + const buildArtifacts = Object.keys(bundle).map((asset) => + path.join(path.resolve(), asset) + ); + await upload(buildArtifacts); + } + } + } finally { + freeGlobalDependencyOnBuildArtifacts(); + await sentryBuildPluginManager.deleteArtifacts(); + } + } + + const name = `sentry-${buildTool}-plugin`; + + if (shouldTransform) { + return { + name, + buildStart, + transform, + renderChunk, + writeBundle, + }; + } + + return { + name, + buildStart, + renderChunk, + writeBundle, + }; +} + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-explicit-any +export function sentryRollupPlugin(userOptions: Options = {}): any { + // We return an array here so we don't break backwards compatibility with what + // unplugin used to return + return [_rollupPluginInternal(userOptions, "rollup")]; +} export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index ced22fbcee13..e470d965c414 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -1,5 +1,5 @@ -import { Plugin } from "rollup"; import { sentryRollupPlugin } from "../src"; +import { Plugin, SourceMap } from "rollup"; test("Rollup plugin should exist", () => { expect(sentryRollupPlugin).toBeDefined(); @@ -11,7 +11,7 @@ describe("sentryRollupPlugin", () => { jest.clearAllMocks(); }); - it("returns an array of rollup plugins", () => { + it("returns an array of rollup plugins (although only one)", () => { const plugins = sentryRollupPlugin({ authToken: "test-token", org: "test-org", @@ -19,17 +19,203 @@ describe("sentryRollupPlugin", () => { }) as Plugin[]; expect(Array.isArray(plugins)).toBe(true); + expect(plugins).toHaveLength(1); - const pluginNames = plugins.map((plugin) => plugin.name); - - expect(pluginNames).toEqual( - expect.arrayContaining([ - "sentry-telemetry-plugin", - "sentry-release-management-plugin", - "sentry-rollup-injection-plugin", - "sentry-rollup-debug-id-upload-plugin", - "sentry-file-deletion-plugin", - ]) - ); + expect(plugins[0]?.name).toBe("sentry-rollup-plugin"); + }); +}); + +describe("Hooks", () => { + const [plugin] = sentryRollupPlugin({ release: { inject: false } }) as [Plugin]; + + const renderChunk = plugin.renderChunk as ( + code: string, + chunkInfo: { fileName: string; facadeModuleId?: string } + ) => { + code: string; + map: SourceMap; + } | null; + + describe("renderChunk", () => { + it("should inject debug ID into clean JavaScript files", () => { + const code = 'console.log("Hello world");'; + const result = renderChunk(code, { 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]=\\"d4309f93-5358-4ae1-bcf0-3813aa590eb5\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-d4309f93-5358-4ae1-bcf0-3813aa590eb5\\");}catch(e){}}();console.log(\\"Hello world\\");"` + ); + }); + + it("should inject debug ID after 'use strict'", () => { + const code = '"use strict";\nconsole.log("Hello world");'; + const result = renderChunk(code, { fileName: "bundle.js" }); + + 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\\");" + `); + }); + + it.each([ + ["bundle.js"], + ["bundle.mjs"], + ["bundle.cjs"], + ["bundle.js?foo=bar"], + ["bundle.js#hash"], + ])("should process file '%s': %s", (fileName) => { + const code = 'console.log("test");'; + 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\\");"` + ); + }); + + it.each([["index.html"], ["styles.css"]])("should NOT process file '%s': %s", (fileName) => { + const code = 'console.log("test");'; + const result = renderChunk(code, { fileName }); + + expect(result).toBeNull(); + }); + + it.each([ + [ + "inline format at start", + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};console.log("test");', + ], + [ + "comment format at end", + 'console.log("test");\n//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n//# sourceMappingURL=bundle.js.map', + ], + [ + "inline format with large file", + '"use strict";\n' + + "// comment\n".repeat(10) + + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};' + + '\nconsole.log("line");\n'.repeat(100), + ], + ])("should NOT inject when debug ID already exists (%s)", (_description, code) => { + const result = renderChunk(code, { fileName: "bundle.js" }); + expect(result).toBeNull(); + }); + + it("should only check boundaries for performance (not entire file)", () => { + // Inline format beyond first 6KB boundary + const codeWithInlineBeyond6KB = + "a".repeat(6100) + + ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};'; + + expect(renderChunk(codeWithInlineBeyond6KB, { fileName: "bundle.js" })).not.toBeNull(); + + // Comment format beyond last 500 bytes boundary + const codeWithCommentBeyond500B = + "//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n" + "a".repeat(600); + + expect(renderChunk(codeWithCommentBeyond500B, { fileName: "bundle.js" })).not.toBeNull(); + }); + + describe("HTML facade chunks (MPA vs SPA)", () => { + // Issue #829: MPA facades should be skipped + // Regression fix: SPA main bundles with HTML facades should NOT be skipped + + it.each([ + ["empty", ""], + ["only side-effect imports", `import './shared-module.js';`], + ["only named imports", `import { foo, bar } from './shared-module.js';`], + ["only re-exports", `export * from './shared-module.js';`], + [ + "multiple imports and comments", + `// This is a facade module +import './moduleA.js'; +import { x } from './moduleB.js'; +/* block comment */ +export * from './moduleC.js';`, + ], + ["'use strict' and imports only", `"use strict";\nimport './shared-module.js';`], + ["query string in facadeModuleId", `import './shared.js';`, "?query=param"], + ["hash in facadeModuleId", `import './shared.js';`, "#hash"], + ])("should SKIP HTML facade chunks: %s", (_, code, suffix = "") => { + const result = renderChunk(code, { + fileName: "page1.js", + facadeModuleId: `/path/to/page1.html${suffix}`, + }); + expect(result).toBeNull(); + }); + + it("should inject into HTML facade with function declarations", () => { + const result = renderChunk(`function main() { console.log("hello"); }`, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + 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\\"); }"` + ); + }); + + it("should inject into HTML facade with variable declarations", () => { + const result = renderChunk(`const x = 42;`, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + 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;"` + ); + }); + + it("should inject into HTML facade with substantial code (SPA main bundle)", () => { + const code = `import { initApp } from './app.js'; + +const config = { debug: true }; + +function bootstrap() { + initApp(config); +} + +bootstrap();`; + const result = renderChunk(code, { + fileName: "index.js", + facadeModuleId: "/path/to/index.html", + }); + 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'; + + const config = { debug: true }; + + function bootstrap() { + initApp(config); + } + + bootstrap();" + `); + }); + + it("should inject into HTML facade with mixed imports and code", () => { + const result = renderChunk( + `import './polyfills.js';\nimport { init } from './app.js';\n\ninit();`, + { fileName: "index.js", facadeModuleId: "/path/to/index.html" } + ); + 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'; + import { init } from './app.js'; + + init();" + `); + }); + + it("should inject into regular JS chunks (no HTML facade)", () => { + 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\\");"` + ); + }); + }); }); }); diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index b42e1ebc588b..ccdfc6fee70d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -49,7 +49,7 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "4.9.1", - "unplugin": "1.0.1" + "@sentry/rollup-plugin": "4.9.1" }, "devDependencies": { "@babel/core": "7.18.5", diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 8b7f323a4948..cfa3856db92d 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,57 +1,7 @@ -import { - CodeInjection, - sentryUnpluginFactory, - Options, - createRollupInjectionHooks, - createRollupDebugIdUploadHooks, - SentrySDKBuildFlags, - createRollupBundleSizeOptimizationHooks, - createComponentNameAnnotateHooks, - Logger, -} from "@sentry/bundler-plugin-core"; +import { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import { _rollupPluginInternal } from "@sentry/rollup-plugin"; import { createRequire } from "node:module"; -import { UnpluginOptions, VitePlugin } from "unplugin"; - -function viteInjectionPlugin(injectionCode: CodeInjection, debugIds: boolean): UnpluginOptions { - return { - name: "sentry-vite-injection-plugin", - // run `post` to avoid tripping up @rollup/plugin-commonjs when cjs is used - // as we inject an `import` statement - enforce: "post" as const, // need this so that vite runs the resolveId hook - vite: createRollupInjectionHooks(injectionCode, debugIds), - }; -} - -function viteComponentNameAnnotatePlugin( - ignoredComponents: string[], - injectIntoHtml: boolean -): UnpluginOptions { - return { - name: "sentry-vite-component-name-annotate-plugin", - enforce: "pre" as const, - vite: createComponentNameAnnotateHooks(ignoredComponents, injectIntoHtml), - }; -} - -function viteDebugIdUploadPlugin( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - createDependencyOnBuildArtifacts: () => () => void -): UnpluginOptions { - return { - name: "sentry-vite-debug-id-upload-plugin", - vite: createRollupDebugIdUploadHooks(upload, logger, createDependencyOnBuildArtifacts), - }; -} - -function viteBundleSizeOptimizationsPlugin( - replacementValues: SentrySDKBuildFlags -): UnpluginOptions { - return { - name: "sentry-vite-bundle-size-optimizations-plugin", - vite: createRollupBundleSizeOptimizationHooks(replacementValues), - }; -} +import { Plugin } from "vite"; function getViteMajorVersion(): string | undefined { try { @@ -67,18 +17,13 @@ function getViteMajorVersion(): string | undefined { return undefined; } -const sentryUnplugin = sentryUnpluginFactory({ - injectionPlugin: viteInjectionPlugin, - componentNameAnnotatePlugin: viteComponentNameAnnotatePlugin, - debugIdUploadPlugin: viteDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, - getBundlerMajorVersion: getViteMajorVersion, -}); - -export const sentryVitePlugin = (options?: Options): VitePlugin[] => { - const result = sentryUnplugin.vite(options); - // unplugin returns a single plugin instead of an array when only one plugin is created, so we normalize this here. - return Array.isArray(result) ? result : [result]; +export const sentryVitePlugin = (options?: SentryRollupPluginOptions): Plugin[] => { + return [ + { + enforce: "pre", + ..._rollupPluginInternal(options, "vite", getViteMajorVersion()), + }, + ]; }; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index bd0d082711ca..cc7092922918 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -21,15 +21,7 @@ describe("sentryVitePlugin", () => { const pluginNames = plugins.map((plugin) => plugin.name); - expect(pluginNames).toEqual( - expect.arrayContaining([ - "sentry-telemetry-plugin", - "sentry-release-management-plugin", - "sentry-vite-injection-plugin", - "sentry-vite-debug-id-upload-plugin", - "sentry-file-deletion-plugin", - ]) - ); + expect(pluginNames).toEqual(expect.arrayContaining(["sentry-vite-plugin"])); }); it("returns an array of Vite pluginswhen unplugin returns a single plugin", () => { diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index a9d31b4cc62c..4b75a103d4de 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -1,7 +1,7 @@ import { Options, createSentryBuildPluginManager, - generateGlobalInjectorCode, + generateReleaseInjectorCode, generateModuleMetadataInjectorCode, stringToUUID, createComponentNameAnnotateHooks, @@ -194,7 +194,7 @@ export function sentryWebpackPluginFactory({ ); } else { staticInjectionCode.append( - generateGlobalInjectorCode({ + generateReleaseInjectorCode({ release: options.release.name, injectBuildInformation: options._experiments.injectBuildInformation || false, }) diff --git a/yarn.lock b/yarn.lock index 5f7ab0c9c0d4..4c0e8a6ec7b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11535,13 +11535,6 @@ rollup@2.75.7: optionalDependencies: fsevents "~2.3.2" -rollup@2.77.0: - version "2.77.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" - integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== - optionalDependencies: - fsevents "~2.3.2" - rollup@2.79.2: version "2.79.2" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" From 144e9224bc2d8b08874959ae73f8000e2970a9cf Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 17 Feb 2026 11:09:06 +0000 Subject: [PATCH 587/640] feat: Remove unplugin (#876) --- packages/bundler-plugin-core/package.json | 3 +- packages/bundler-plugin-core/src/index.ts | 216 +----------------- .../bundler-plugin-core/test/index.test.ts | 175 +------------- .../e2e-tests/utils/create-cjs-bundles.ts | 34 +-- .../esbuild-plugin/test/public-api.test.ts | 8 +- .../utils/create-cjs-bundles-for-react.ts | 12 +- .../utils/create-cjs-bundles-with-query.ts | 10 +- .../utils/create-cjs-bundles.ts | 12 +- packages/rollup-plugin/src/index.ts | 8 +- yarn.lock | 95 ++++++-- 10 files changed, 120 insertions(+), 453 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 462553428e96..90c1c6e9dad9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -58,8 +58,7 @@ "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^10.5.0", - "magic-string": "0.30.8", - "unplugin": "1.0.1" + "magic-string": "0.30.8" }, "devDependencies": { "@babel/preset-env": "7.18.2", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 4a3758c70595..4009360de188 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -6,214 +6,7 @@ import SentryCli from "@sentry/cli"; import { logger } from "@sentry/utils"; import * as fs from "fs"; import { glob } from "glob"; -import { createUnplugin, TransformResult, UnpluginInstance, UnpluginOptions } from "unplugin"; -import { createSentryBuildPluginManager } from "./build-plugin-manager"; -import { createDebugIdUploadFunction } from "./debug-id-upload"; -import { Logger } from "./logger"; -import { Options, SentrySDKBuildFlags } from "./types"; -import { - CodeInjection, - containsOnlyImports, - generateReleaseInjectorCode, - generateModuleMetadataInjectorCode, - stripQueryAndHashFromPath, -} from "./utils"; - -type InjectionPlugin = ( - injectionCode: CodeInjection, - debugIds: boolean, - logger: Logger -) => UnpluginOptions; -type LegacyPlugins = { - releaseInjectionPlugin: (injectionCode: string) => UnpluginOptions; - moduleMetadataInjectionPlugin: (injectionCode: string) => UnpluginOptions; - debugIdInjectionPlugin: (logger: Logger) => UnpluginOptions; -}; - -interface SentryUnpluginFactoryOptions { - injectionPlugin: InjectionPlugin | LegacyPlugins; - componentNameAnnotatePlugin?: ( - ignoredComponents: string[], - injectIntoHtml: boolean - ) => UnpluginOptions; - debugIdUploadPlugin: ( - upload: (buildArtifacts: string[]) => Promise, - logger: Logger, - createDependencyOnBuildArtifacts: () => () => void, - webpack_forceExitOnBuildComplete?: boolean - ) => UnpluginOptions; - bundleSizeOptimizationsPlugin: (buildFlags: SentrySDKBuildFlags) => UnpluginOptions; - getBundlerMajorVersion?: () => string | undefined; -} - -/** - * Creates an unplugin instance used to create Sentry plugins for Vite, Rollup, esbuild, and Webpack. - */ -export function sentryUnpluginFactory({ - injectionPlugin, - componentNameAnnotatePlugin, - debugIdUploadPlugin, - bundleSizeOptimizationsPlugin, - getBundlerMajorVersion, -}: SentryUnpluginFactoryOptions): UnpluginInstance { - return createUnplugin((userOptions = {}, unpluginMetaContext) => { - const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { - loggerPrefix: - userOptions._metaOptions?.loggerPrefixOverride ?? - `[sentry-${unpluginMetaContext.framework}-plugin]`, - buildTool: unpluginMetaContext.framework, - buildToolMajorVersion: getBundlerMajorVersion?.(), - }); - - const { - logger, - normalizedOptions: options, - bundleSizeOptimizationReplacementValues, - } = sentryBuildPluginManager; - - if (options.disable) { - return [ - { - name: "sentry-noop-plugin", - }, - ]; - } - - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { - logger.warn( - "Running Sentry plugin from within a `node_modules` folder. Some features may not work." - ); - } - - const plugins: UnpluginOptions[] = []; - - // Add plugin to emit a telemetry signal when the build starts - plugins.push({ - name: "sentry-telemetry-plugin", - buildStart() { - // Technically, for very fast builds we might miss the telemetry signal - // but it's okay because telemetry is not critical for us. - // We cannot await the flush here because it would block the build start - // which in turn would break module federation builds, see - // https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/816 - void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { - // Nothing for the users to do here. If telemetry fails it's acceptable. - }); - }, - }); - - if (Object.keys(bundleSizeOptimizationReplacementValues).length > 0) { - plugins.push(bundleSizeOptimizationsPlugin(bundleSizeOptimizationReplacementValues)); - } - - const injectionCode = new CodeInjection(); - - if (!options.release.inject) { - logger.debug( - "Release injection disabled via `release.inject` option. Will not inject release." - ); - } else if (!options.release.name) { - logger.debug( - "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." - ); - } else { - const code = generateReleaseInjectorCode({ - release: options.release.name, - injectBuildInformation: options._experiments.injectBuildInformation || false, - }); - if (typeof injectionPlugin !== "function") { - plugins.push(injectionPlugin.releaseInjectionPlugin(code.code())); - } else { - injectionCode.append(code); - } - } - - if (Object.keys(sentryBuildPluginManager.bundleMetadata).length > 0) { - const code = generateModuleMetadataInjectorCode(sentryBuildPluginManager.bundleMetadata); - if (typeof injectionPlugin !== "function") { - plugins.push(injectionPlugin.moduleMetadataInjectionPlugin(code.code())); - } else { - injectionCode.append(code); - } - } - - if ( - typeof injectionPlugin === "function" && - (!injectionCode.isEmpty() || options.sourcemaps?.disable !== true) - ) { - plugins.push(injectionPlugin(injectionCode, options.sourcemaps?.disable !== true, logger)); - } - - // Add plugin to create and finalize releases, and also take care of adding commits and legacy sourcemaps - const freeGlobalDependencyOnBuildArtifacts = - sentryBuildPluginManager.createDependencyOnBuildArtifacts(); - plugins.push({ - name: "sentry-release-management-plugin", - async writeBundle() { - try { - await sentryBuildPluginManager.createRelease(); - } finally { - freeGlobalDependencyOnBuildArtifacts(); - } - }, - }); - - if (options.sourcemaps?.disable !== true) { - if (typeof injectionPlugin !== "function") { - plugins.push(injectionPlugin.debugIdInjectionPlugin(logger)); - } - - if (options.sourcemaps?.disable !== "disable-upload") { - // This option is only strongly typed for the webpack plugin, where it is used. It has no effect on other plugins - const webpack_forceExitOnBuildComplete = - typeof options._experiments["forceExitOnBuildCompletion"] === "boolean" - ? options._experiments["forceExitOnBuildCompletion"] - : undefined; - - plugins.push( - debugIdUploadPlugin( - createDebugIdUploadFunction({ - sentryBuildPluginManager, - }), - logger, - sentryBuildPluginManager.createDependencyOnBuildArtifacts, - webpack_forceExitOnBuildComplete - ) - ); - } - } - - if (options.reactComponentAnnotation) { - if (!options.reactComponentAnnotation.enabled) { - logger.debug( - "The component name annotate plugin is currently disabled. Skipping component name annotations." - ); - } else if (options.reactComponentAnnotation.enabled && !componentNameAnnotatePlugin) { - logger.warn( - "The component name annotate plugin is currently not supported by '@sentry/esbuild-plugin'" - ); - } else { - componentNameAnnotatePlugin && - plugins.push( - componentNameAnnotatePlugin( - options.reactComponentAnnotation.ignoredComponents || [], - !!options.reactComponentAnnotation._experimentalInjectIntoHtml - ) - ); - } - } - - // Add plugin to delete unwanted artifacts like source maps after the uploads have completed - plugins.push({ - name: "sentry-file-deletion-plugin", - async writeBundle() { - await sentryBuildPluginManager.deleteArtifacts(); - }, - }); - - return plugins; - }); -} +import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; /** * Determines whether the Sentry CLI binary is in its expected location. @@ -283,18 +76,17 @@ export function globFiles(outputDir: string): Promise { ); } +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function createComponentNameAnnotateHooks( ignoredComponents: string[], injectIntoHtml: boolean -): { - transform: UnpluginOptions["transform"]; -} { +) { type ParserPlugins = NonNullable< NonNullable[1]>["parserOpts"] >["plugins"]; return { - async transform(this: void, code: string, id: string): Promise { + async transform(this: void, code: string, id: string) { // id may contain query and hash which will trip up our file extension logic below const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 2b56d984ef96..45cf107dbbb6 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -1,5 +1,4 @@ -import { Compiler } from "webpack"; -import { getDebugIdSnippet, sentryUnpluginFactory } from "../src"; +import { getDebugIdSnippet } from "../src"; import { containsOnlyImports } from "../src/utils"; describe("getDebugIdSnippet", () => { @@ -141,175 +140,3 @@ app.mount('#app'); }); }); }); - -describe("sentryUnpluginFactory sourcemaps.disable behavior", () => { - const mockComponentNameAnnotatePlugin = jest.fn(() => ({ - name: "mock-component-name-annotate-plugin", - })); - - const mockInjectionPlugin = jest.fn(() => ({ - name: "mock-injection-plugin", - })); - - const mockDebugIdUploadPlugin = jest.fn(() => ({ - name: "mock-debug-id-upload-plugin", - })); - - const mockBundleSizeOptimizationsPlugin = jest.fn(() => ({ - name: "mock-bundle-size-optimizations-plugin", - })); - - const createUnpluginInstance = (): ReturnType => { - return sentryUnpluginFactory({ - injectionPlugin: mockInjectionPlugin, - componentNameAnnotatePlugin: mockComponentNameAnnotatePlugin, - debugIdUploadPlugin: mockDebugIdUploadPlugin, - bundleSizeOptimizationsPlugin: mockBundleSizeOptimizationsPlugin, - }); - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - describe("when sourcemaps.disable is true", () => { - it("should not include debug ID injection or upload plugins", () => { - const unpluginInstance = createUnpluginInstance(); - - const plugins = unpluginInstance.raw( - { - authToken: "test-token", - org: "test-org", - project: "test-project", - sourcemaps: { - disable: true, - }, - }, - { framework: "webpack", webpack: { compiler: {} as Compiler } } - ); - - const pluginNames = plugins.map((plugin) => plugin.name); - - // Should not include debug ID related plugins - expect(pluginNames).not.toContain("mock-debug-id-injection-plugin"); - expect(pluginNames).not.toContain("mock-debug-id-upload-plugin"); - - // Should still include other core plugins - expect(pluginNames).toContain("sentry-telemetry-plugin"); - expect(pluginNames).toContain("sentry-release-management-plugin"); - expect(pluginNames).toContain("sentry-file-deletion-plugin"); - }); - }); - - describe('when sourcemaps.disable is "disable-upload"', () => { - it("should include debug ID injection plugin but not upload plugin", () => { - const unpluginInstance = createUnpluginInstance(); - - const plugins = unpluginInstance.raw( - { - authToken: "test-token", - org: "test-org", - project: "test-project", - sourcemaps: { - disable: "disable-upload", - }, - }, - { framework: "webpack", webpack: { compiler: {} as Compiler } } - ); - - const pluginNames = plugins.map((plugin) => plugin.name); - - // Should include debug ID injection but not upload - expect(pluginNames).toContain("mock-injection-plugin"); - expect(pluginNames).not.toContain("mock-debug-id-upload-plugin"); - - // Should still include other core plugins - expect(pluginNames).toContain("sentry-telemetry-plugin"); - expect(pluginNames).toContain("sentry-release-management-plugin"); - expect(pluginNames).toContain("sentry-file-deletion-plugin"); - }); - }); - - describe("when sourcemaps.disable is false", () => { - it("should include both debug ID injection and upload plugins", () => { - const unpluginInstance = createUnpluginInstance(); - - const plugins = unpluginInstance.raw( - { - authToken: "test-token", - org: "test-org", - project: "test-project", - sourcemaps: { - disable: false, - }, - }, - { framework: "webpack", webpack: { compiler: {} as Compiler } } - ); - - const pluginNames = plugins.map((plugin) => plugin.name); - - // Should include both debug ID related plugins - expect(pluginNames).toContain("mock-injection-plugin"); - expect(pluginNames).toContain("mock-debug-id-upload-plugin"); - - // Should include other core plugins - expect(pluginNames).toContain("sentry-telemetry-plugin"); - expect(pluginNames).toContain("sentry-release-management-plugin"); - expect(pluginNames).toContain("sentry-file-deletion-plugin"); - }); - }); - - describe("when sourcemaps.disable is undefined (default)", () => { - it("should include both debug ID injection and upload plugins", () => { - const unpluginInstance = createUnpluginInstance(); - - const plugins = unpluginInstance.raw( - { - authToken: "test-token", - org: "test-org", - project: "test-project", - // sourcemaps.disable not specified (undefined) - }, - { framework: "webpack", webpack: { compiler: {} as Compiler } } - ); - - const pluginNames = plugins.map((plugin) => plugin.name); - - // Should include both debug ID related plugins by default - expect(pluginNames).toContain("mock-injection-plugin"); - expect(pluginNames).toContain("mock-debug-id-upload-plugin"); - - // Should include other core plugins - expect(pluginNames).toContain("sentry-telemetry-plugin"); - expect(pluginNames).toContain("sentry-release-management-plugin"); - expect(pluginNames).toContain("sentry-file-deletion-plugin"); - }); - }); - - describe("when entire sourcemaps option is undefined", () => { - it("should include both debug ID injection and upload plugins", () => { - const unpluginInstance = createUnpluginInstance(); - - const plugins = unpluginInstance.raw( - { - authToken: "test-token", - org: "test-org", - project: "test-project", - // sourcemaps option not specified at all - }, - { framework: "webpack", webpack: { compiler: {} as Compiler } } - ); - - const pluginNames = plugins.map((plugin) => plugin.name); - - // Should include both debug ID related plugins by default - expect(pluginNames).toContain("mock-injection-plugin"); - expect(pluginNames).toContain("mock-debug-id-upload-plugin"); - - // Should include other core plugins - expect(pluginNames).toContain("sentry-telemetry-plugin"); - expect(pluginNames).toContain("sentry-release-management-plugin"); - expect(pluginNames).toContain("sentry-file-deletion-plugin"); - }); - }); -}); diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index ebd5515106df..c66cdd456832 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -14,9 +14,9 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, - sentryUnpluginOptions: Options + sentryPluginOptions: Options ): void { - if (!sentryUnpluginOptions.release) { + if (!sentryPluginOptions.release) { console.error("Config has no release set, aborting"); return; } @@ -36,11 +36,11 @@ export function createCjsBundles( }, plugins: [ sentryVitePlugin({ - ...sentryUnpluginOptions, + ...sentryPluginOptions, release: { - name: `${sentryUnpluginOptions.release.name!}-vite`, + name: `${sentryPluginOptions.release.name!}-vite`, uploadLegacySourcemaps: `${ - sentryUnpluginOptions.release.uploadLegacySourcemaps as string + sentryPluginOptions.release.uploadLegacySourcemaps as string }/vite`, }, }), @@ -52,11 +52,11 @@ export function createCjsBundles( input: entrypoints, plugins: [ sentryRollupPlugin({ - ...sentryUnpluginOptions, + ...sentryPluginOptions, release: { - name: `${sentryUnpluginOptions.release.name!}-rollup`, + name: `${sentryPluginOptions.release.name!}-rollup`, uploadLegacySourcemaps: `${ - sentryUnpluginOptions.release.uploadLegacySourcemaps as string + sentryPluginOptions.release.uploadLegacySourcemaps as string }/rollup`, }, }), @@ -77,11 +77,11 @@ export function createCjsBundles( sourcemap: true, plugins: [ sentryEsbuildPlugin({ - ...sentryUnpluginOptions, + ...sentryPluginOptions, release: { - name: `${sentryUnpluginOptions.release.name!}-esbuild`, + name: `${sentryPluginOptions.release.name!}-esbuild`, uploadLegacySourcemaps: `${ - sentryUnpluginOptions.release.uploadLegacySourcemaps as string + sentryPluginOptions.release.uploadLegacySourcemaps as string }/esbuild`, }, }), @@ -104,11 +104,11 @@ export function createCjsBundles( target: "node", // needed for webpack 4 so we can access node api plugins: [ sentryWebpackPlugin({ - ...sentryUnpluginOptions, + ...sentryPluginOptions, release: { - name: `${sentryUnpluginOptions.release.name!}-webpack4`, + name: `${sentryPluginOptions.release.name!}-webpack4`, uploadLegacySourcemaps: `${ - sentryUnpluginOptions.release.uploadLegacySourcemaps as string + sentryPluginOptions.release.uploadLegacySourcemaps as string }/webpack4`, }, }), @@ -135,11 +135,11 @@ export function createCjsBundles( mode: "production", plugins: [ sentryWebpackPlugin({ - ...sentryUnpluginOptions, + ...sentryPluginOptions, release: { - name: `${sentryUnpluginOptions.release.name!}-webpack5`, + name: `${sentryPluginOptions.release.name!}-webpack5`, uploadLegacySourcemaps: `${ - sentryUnpluginOptions.release.uploadLegacySourcemaps as string + sentryPluginOptions.release.uploadLegacySourcemaps as string }/webpack5`, }, }), diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index a428c8be2b06..c9408006bc4f 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -1,5 +1,5 @@ -import { EsbuildPlugin } from "unplugin"; import { sentryEsbuildPlugin } from "../src"; +import { Plugin } from "esbuild"; test("Esbuild plugin should exist", () => { expect(sentryEsbuildPlugin).toBeDefined(); @@ -8,13 +8,13 @@ test("Esbuild plugin should exist", () => { describe("sentryEsbuildPlugin", () => { it("returns an esbuild plugin", () => { - const plugins = sentryEsbuildPlugin({ + const plugin = sentryEsbuildPlugin({ authToken: "test-token", org: "test-org", project: "test-project", - }) as EsbuildPlugin; + }) as Plugin; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - expect(plugins).toEqual({ name: "sentry-esbuild-plugin", setup: expect.any(Function) }); + expect(plugin).toEqual({ name: "sentry-esbuild-plugin", setup: expect.any(Function) }); }); }); 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 757708e9b28c..095784e834e1 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts @@ -22,7 +22,7 @@ const nodejsMajorversion = process.version.split(".")[0]!.slice(1); export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, - sentryUnpluginOptions: Options, + sentryPluginOptions: Options, plugins: string[] = [] ): void { if (plugins.length === 0 || plugins.includes("vite")) { @@ -38,7 +38,7 @@ export function createCjsBundles( }, }, }, - plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryUnpluginOptions)], + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryPluginOptions)], }); } if (plugins.length === 0 || plugins.includes("rollup")) { @@ -50,7 +50,7 @@ export function createCjsBundles( extensions: RESOLVABLE_EXTENSIONS, }), commonjs(), - sentryRollupPlugin(sentryUnpluginOptions), + sentryRollupPlugin(sentryPluginOptions), babelPlugin({ babelHelpers: "bundled", presets: [["@babel/preset-react", { runtime: "automatic" }]], @@ -71,7 +71,7 @@ export function createCjsBundles( void esbuild.build({ entryPoints: entrypoints, outdir: path.join(outFolder, "esbuild"), - plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], + plugins: [sentryEsbuildPlugin(sentryPluginOptions)], minify: true, bundle: true, jsx: "automatic", @@ -111,7 +111,7 @@ export function createCjsBundles( ], }, target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, handleWebpack ); @@ -149,7 +149,7 @@ export function createCjsBundles( }, ], }, - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, handleWebpack ); 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 b3c065edd23a..59b549941112 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts @@ -14,7 +14,7 @@ const nodejsMajorVersion = process.version.split(".")[0]!.slice(1); export function createCjsBundlesWithQueryParam( entrypoints: { [name: string]: string }, outFolder: string, - sentryUnpluginOptions: Options, + sentryPluginOptions: Options, plugins: string[] = [] ): void { if (plugins.length === 0 || plugins.includes("vite")) { @@ -31,14 +31,14 @@ export function createCjsBundlesWithQueryParam( }, }, }, - plugins: [sentryVitePlugin(sentryUnpluginOptions)], + plugins: [sentryVitePlugin(sentryPluginOptions)], }); } if (plugins.length === 0 || plugins.includes("rollup")) { void rollup .rollup({ input: entrypoints, - plugins: [sentryRollupPlugin(sentryUnpluginOptions)], + plugins: [sentryRollupPlugin(sentryPluginOptions)], }) .then((bundle) => bundle.write({ @@ -69,7 +69,7 @@ export function createCjsBundlesWithQueryParam( libraryTarget: "commonjs", }, target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, (err) => { if (err) { @@ -93,7 +93,7 @@ export function createCjsBundlesWithQueryParam( }, }, mode: "production", - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, (err) => { if (err) { diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index bc60ce2b788e..631fa2881c7d 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -17,7 +17,7 @@ type Bundlers = "webpack4" | "webpack5" | "esbuild" | "rollup" | "vite" | string export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, - sentryUnpluginOptions: Options, + sentryPluginOptions: Options, plugins: Bundlers[] = [] ): void { if (plugins.length === 0 || plugins.includes("vite")) { @@ -34,7 +34,7 @@ export function createCjsBundles( }, }, }, - plugins: [sentryVitePlugin(sentryUnpluginOptions)], + plugins: [sentryVitePlugin(sentryPluginOptions)], }); } @@ -42,7 +42,7 @@ export function createCjsBundles( void rollup .rollup({ input: entrypoints, - plugins: [sentryRollupPlugin(sentryUnpluginOptions)], + plugins: [sentryRollupPlugin(sentryPluginOptions)], }) .then((bundle) => bundle.write({ @@ -59,7 +59,7 @@ export function createCjsBundles( sourcemap: true, entryPoints: entrypoints, outdir: path.join(outFolder, "esbuild"), - plugins: [sentryEsbuildPlugin(sentryUnpluginOptions)], + plugins: [sentryEsbuildPlugin(sentryPluginOptions)], minify: true, bundle: true, format: "cjs", @@ -80,7 +80,7 @@ export function createCjsBundles( filename: "[name].js?[contenthash]", }, target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, (err) => { if (err) { @@ -103,7 +103,7 @@ export function createCjsBundles( }, }, mode: "production", - plugins: [sentryWebpackPlugin(sentryUnpluginOptions)], + plugins: [sentryWebpackPlugin(sentryPluginOptions)], }, (err) => { if (err) { diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 902051cdddef..3ae57bc7e299 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -15,7 +15,7 @@ import { CodeInjection, } from "@sentry/bundler-plugin-core"; import MagicString, { SourceMap } from "magic-string"; -import type { TransformHook } from "rollup"; +import type { TransformResult } from "rollup"; import * as path from "node:path"; import { createRequire } from "node:module"; @@ -125,14 +125,12 @@ export function _rollupPluginInternal( }); } - function transform(code: string, id: string): ReturnType { + async function transform(code: string, id: string): Promise { // Component annotations are only in user code and boolean flag replacements are // only in Sentry code. If we successfully add annotations, we can return early. if (transformAnnotations?.transform) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore TS complains about 'this' - const result = transformAnnotations.transform(code, id); + const result = await transformAnnotations.transform(code, id); if (result) { return result; } diff --git a/yarn.lock b/yarn.lock index 4c0e8a6ec7b5..cb4861b76d24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3334,7 +3334,19 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack4@npm:@types/webpack@^4", "@types/webpack@npm:@types/webpack@^4": +"@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" integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== @@ -3960,7 +3972,7 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: +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" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -4884,7 +4896,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1, chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@^3.4.1, chokidar@^3.5.1: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -12101,7 +12113,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12183,7 +12204,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12833,16 +12861,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unplugin@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" - integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA== - dependencies: - acorn "^8.8.1" - chokidar "^3.5.3" - webpack-sources "^3.2.3" - webpack-virtual-modules "^0.5.0" - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -13110,12 +13128,7 @@ webpack-sources@^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== -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== - -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4", "webpack@npm:webpack@^4": +"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== @@ -13204,6 +13217,35 @@ webpack-virtual-modules@^0.5.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +"webpack@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== + dependencies: + "@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" + 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" + whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13301,7 +13343,16 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 6944cf72b6accb35d24c522589a7c99fdcd5757d Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 17 Feb 2026 18:23:11 +0000 Subject: [PATCH 588/640] feat: Build with Rolldown (#872) --- .github/workflows/checks.yml | 21 + .gitignore | 3 +- .prettierignore | 2 + nx.json | 1 - package.json | 2 +- .../.babelrc.json | 3 - .../.eslintrc.js | 2 +- .../package.json | 10 +- .../rollup.config.js | 48 - .../rollup.config.mjs | 22 + packages/bundler-plugin-core/.babelrc.json | 3 - packages/bundler-plugin-core/.eslintrc.js | 5 +- packages/bundler-plugin-core/jest.config.js | 17 +- packages/bundler-plugin-core/package.json | 14 +- packages/bundler-plugin-core/rollup.config.js | 56 - .../bundler-plugin-core/rollup.config.mjs | 22 + .../src/build-plugin-manager.ts | 5 +- packages/bundler-plugin-core/src/globals.d.ts | 5 - .../src/sentry/telemetry.ts | 3 +- .../test/__snapshots__/utils.test.ts.snap | 2 +- packages/esbuild-plugin/.babelrc.json | 3 - packages/esbuild-plugin/.eslintrc.js | 2 +- packages/esbuild-plugin/package.json | 11 +- packages/esbuild-plugin/rollup.config.js | 48 - packages/esbuild-plugin/rollup.config.mjs | 22 + .../fixtures/telemetry/telemetry.test.ts | 2 +- packages/rollup-plugin/.babelrc.json | 3 - packages/rollup-plugin/.eslintrc.js | 2 +- packages/rollup-plugin/package.json | 11 +- packages/rollup-plugin/rollup.config.js | 48 - packages/rollup-plugin/rollup.config.mjs | 22 + packages/tsconfigs/base-config.json | 4 +- packages/vite-plugin/.babelrc.json | 3 - packages/vite-plugin/.eslintrc.js | 2 +- packages/vite-plugin/package.json | 11 +- packages/vite-plugin/rollup.config.js | 48 - packages/vite-plugin/rollup.config.mjs | 22 + packages/webpack-plugin/.babelrc.json | 3 - packages/webpack-plugin/.eslintrc.js | 2 +- packages/webpack-plugin/package.json | 11 +- packages/webpack-plugin/rollup.config.js | 52 - packages/webpack-plugin/rollup.config.mjs | 26 + yarn.lock | 1441 +++-------------- 43 files changed, 380 insertions(+), 1665 deletions(-) delete mode 100644 packages/babel-plugin-component-annotate/.babelrc.json delete mode 100644 packages/babel-plugin-component-annotate/rollup.config.js create mode 100644 packages/babel-plugin-component-annotate/rollup.config.mjs delete mode 100644 packages/bundler-plugin-core/.babelrc.json delete mode 100644 packages/bundler-plugin-core/rollup.config.js create mode 100644 packages/bundler-plugin-core/rollup.config.mjs delete mode 100644 packages/bundler-plugin-core/src/globals.d.ts delete mode 100644 packages/esbuild-plugin/.babelrc.json delete mode 100644 packages/esbuild-plugin/rollup.config.js create mode 100644 packages/esbuild-plugin/rollup.config.mjs delete mode 100644 packages/rollup-plugin/.babelrc.json delete mode 100644 packages/rollup-plugin/rollup.config.js create mode 100644 packages/rollup-plugin/rollup.config.mjs delete mode 100644 packages/vite-plugin/.babelrc.json delete mode 100644 packages/vite-plugin/rollup.config.js create mode 100644 packages/vite-plugin/rollup.config.mjs delete mode 100644 packages/webpack-plugin/.babelrc.json delete mode 100644 packages/webpack-plugin/rollup.config.js create mode 100644 packages/webpack-plugin/rollup.config.mjs diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 167fb5f87cb5..d32a731eeb3e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -33,6 +33,12 @@ jobs: run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn build + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages/*/dist + retention-days: 1 type-check: needs: build @@ -112,6 +118,11 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages - run: yarn test:unit test-integration: @@ -154,6 +165,11 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages - run: yarn test:integration test-e2e: @@ -187,6 +203,11 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages - run: yarn test:e2e lint: diff --git a/.gitignore b/.gitignore index 1bd2042962ab..1167a41d2c76 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ yarn-error.log .nxcache packages/**/yarn.lock -.DS_Store \ No newline at end of file +.DS_Store +packages/bundler-plugin-core/src/version.ts diff --git a/.prettierignore b/.prettierignore index 9c714247645a..1b7baff08588 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,5 @@ packages/e2e-tests/scenarios/*/ref/**/* packages/bundler-plugin-core/test/fixtures .nxcache +# current prettier version doesn't support import assertions +rollup.config.mjs diff --git a/nx.json b/nx.json index a69e473cb755..72e69d45b1c9 100644 --- a/nx.json +++ b/nx.json @@ -25,7 +25,6 @@ }, "test": { "inputs": ["sharedGlobals"], - "dependsOn": ["^build"], "outputs": [] }, "check:types": { diff --git a/package.json b/package.json index 85e45b917d19..01b9e6982e63 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ts-node": "^10.9.2" }, "volta": { - "node": "18.20.8", + "node": "22.22.0", "yarn": "1.22.22" } } diff --git a/packages/babel-plugin-component-annotate/.babelrc.json b/packages/babel-plugin-component-annotate/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/babel-plugin-component-annotate/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js index 01f80fed18eb..21c383c62724 100644 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ b/packages/babel-plugin-component-annotate/.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.js"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 26e9f2be70fc..59d9a52007b5 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -34,8 +34,8 @@ "scripts": { "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", @@ -51,11 +51,7 @@ }, "devDependencies": { "@babel/core": "7.18.5", - "@babel/preset-env": "7.18.2", "@babel/preset-react": "^7.23.3", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", @@ -66,7 +62,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.75.7", + "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/babel-plugin-component-annotate/rollup.config.js b/packages/babel-plugin-component-annotate/rollup.config.js deleted file mode 100644 index b7ede1e85db8..000000000000 --- a/packages/babel-plugin-component-annotate/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; -import modulePackage from "module"; - -const input = ["src/index.ts"]; - -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies ?? []), ...modulePackage.builtinModules], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/babel-plugin-component-annotate/rollup.config.mjs b/packages/babel-plugin-component-annotate/rollup.config.mjs new file mode 100644 index 000000000000..a005c229c5c3 --- /dev/null +++ b/packages/babel-plugin-component-annotate/rollup.config.mjs @@ -0,0 +1,22 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; + +export default { + platform: "node", + input: ["src/index.ts"], + external: Object.keys(packageJson.dependencies ?? []), + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/bundler-plugin-core/.babelrc.json b/packages/bundler-plugin-core/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/bundler-plugin-core/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 34addfe7dbc4..50041aab010e 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -8,7 +8,7 @@ module.exports = { ".eslintrc.js", "dist", "jest.config.js", - "rollup.config.js", + "rollup.config.mjs", "test/fixtures/**/*", "sentry-release-injection-file.js", "sentry-esbuild-debugid-injection-file.js", @@ -17,9 +17,6 @@ module.exports = { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], }, - globals: { - __PACKAGE_VERSION__: "readonly", - }, env: { node: true, }, diff --git a/packages/bundler-plugin-core/jest.config.js b/packages/bundler-plugin-core/jest.config.js index 4c779f6f98c9..5c3aa9d44500 100644 --- a/packages/bundler-plugin-core/jest.config.js +++ b/packages/bundler-plugin-core/jest.config.js @@ -4,21 +4,6 @@ module.exports = { testEnvironment: "node", modulePathIgnorePatterns: ["fixtures"], transform: { - "^.+\\.(t|j)sx?$": [ - "@swc/jest", - { - jsc: { - transform: { - optimizer: { - globals: { - vars: { - __PACKAGE_VERSION__: packageJson.version, - }, - }, - }, - }, - }, - }, - ], + "^.+\\.(t|j)sx?$": ["@swc/jest"], }, }; diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 90c1c6e9dad9..3f90e2231fc9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -33,10 +33,11 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { + "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts", "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", @@ -47,6 +48,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", + "pretest": "yarn prebuild", "test": "jest", "lint": "eslint ./src ./test", "fix": "eslint ./src ./test --format stylish --fix" @@ -61,12 +63,6 @@ "magic-string": "0.30.8" }, "devDependencies": { - "@babel/preset-env": "7.18.2", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-json": "4.1.0", - "@rollup/plugin-node-resolve": "13.3.0", - "@rollup/plugin-replace": "^4.0.0", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@sentry/core": "8.30.0", @@ -79,7 +75,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.75.7", + "rolldown": "^1.0.0-rc.4", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/bundler-plugin-core/rollup.config.js b/packages/bundler-plugin-core/rollup.config.js deleted file mode 100644 index 68697166b4b6..000000000000 --- a/packages/bundler-plugin-core/rollup.config.js +++ /dev/null @@ -1,56 +0,0 @@ -import babel from "@rollup/plugin-babel"; -import json from "@rollup/plugin-json"; -import resolve from "@rollup/plugin-node-resolve"; -import replace from "@rollup/plugin-replace"; -import modulePackage from "module"; -import packageJson from "./package.json"; - -const input = ["src/index.ts"]; -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - json(), - replace({ - preventAssignment: true, - values: { - __PACKAGE_VERSION__: JSON.stringify(packageJson.version), - }, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/bundler-plugin-core/rollup.config.mjs b/packages/bundler-plugin-core/rollup.config.mjs new file mode 100644 index 000000000000..e4fbed3c82f6 --- /dev/null +++ b/packages/bundler-plugin-core/rollup.config.mjs @@ -0,0 +1,22 @@ +import modulePackage from "module"; +import packageJson from "./package.json" with { type: "json" }; + +export default { + platform: "node", + input: ["src/index.ts"], + external: Object.keys(packageJson.dependencies), + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 6922153f1722..83a44a7df75d 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -28,6 +28,7 @@ import { } from "./utils"; import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; +import { LIB_VERSION } from "./version"; // Module-level guard to prevent duplicate deploy records when multiple bundler plugin // instances run in the same process (e.g. Next.js creates separate webpack compilers @@ -238,9 +239,7 @@ export function createSentryBuildPluginManager( }); // Set the User-Agent that Sentry CLI will use when interacting with Sentry - process.env[ - "SENTRY_PIPELINE" - ] = `${bundlerPluginMetaContext.buildTool}-plugin/${__PACKAGE_VERSION__}`; + process.env["SENTRY_PIPELINE"] = `${bundlerPluginMetaContext.buildTool}-plugin/${LIB_VERSION}`; // Propagate debug flag to Sentry CLI via environment variable // Only set if not already defined to respect user's explicit configuration diff --git a/packages/bundler-plugin-core/src/globals.d.ts b/packages/bundler-plugin-core/src/globals.d.ts deleted file mode 100644 index f0bf426dddfc..000000000000 --- a/packages/bundler-plugin-core/src/globals.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Variable injected during build process. Evaluates to the current version as provided in the package.json's version - * field. - */ -declare const __PACKAGE_VERSION__: string; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index e0d0e046cf1a..a467817982e8 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -6,6 +6,7 @@ import { Scope } from "@sentry/core"; import { createStackParser, nodeStackLineParser } from "@sentry/utils"; import { makeOptionallyEnabledNodeTransport } from "./transports"; import { getProjects } from "../utils"; +import { LIB_VERSION } from "../version"; const SENTRY_SAAS_HOSTNAME = "sentry.io"; @@ -26,7 +27,7 @@ export function createSentryInstance( tracesSampleRate: 1, sampleRate: 1, - release: __PACKAGE_VERSION__, + release: LIB_VERSION, integrations: [], tracePropagationTargets: ["sentry.io/api"], 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 0597ebcea6ef..c691de25c29a 100644 --- a/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap +++ b/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap @@ -6,4 +6,4 @@ exports[`generateModuleMetadataInjectorCode generates code with metadata object exports[`generateReleaseInjectorCode 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\\":18};}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/esbuild-plugin/.babelrc.json b/packages/esbuild-plugin/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/esbuild-plugin/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js index 66fc5593fe11..ec1068205048 100644 --- a/packages/esbuild-plugin/.eslintrc.js +++ b/packages/esbuild-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.js"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 6892b1d1b592..9e47ed3b6115 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -31,8 +31,8 @@ "scripts": { "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", @@ -52,11 +52,6 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@babel/core": "7.18.5", - "@babel/preset-env": "7.18.2", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", @@ -67,7 +62,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.75.7", + "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/esbuild-plugin/rollup.config.js b/packages/esbuild-plugin/rollup.config.js deleted file mode 100644 index 441dbce54c0a..000000000000 --- a/packages/esbuild-plugin/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; -import modulePackage from "module"; - -const input = ["src/index.ts"]; - -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/esbuild-plugin/rollup.config.mjs b/packages/esbuild-plugin/rollup.config.mjs new file mode 100644 index 000000000000..9ac495986fb1 --- /dev/null +++ b/packages/esbuild-plugin/rollup.config.mjs @@ -0,0 +1,22 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; + +export default { + platform: "node", + input: ["src/index.ts"], + external: Object.keys(packageJson.dependencies), + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 2eaee9ca34aa..75397718ad43 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": "2", + "bundler-major-version": "3", bundler: "rollup", }), sdk: expect.objectContaining({ diff --git a/packages/rollup-plugin/.babelrc.json b/packages/rollup-plugin/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/rollup-plugin/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js index 42b35d843948..6eebd0fcf927 100644 --- a/packages/rollup-plugin/.eslintrc.js +++ b/packages/rollup-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.js"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 4a50b7dc67fc..9b84a0a74e4a 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -32,8 +32,8 @@ "scripts": { "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", @@ -56,11 +56,6 @@ "rollup": ">=3.2.0" }, "devDependencies": { - "@babel/core": "7.18.5", - "@babel/preset-env": "7.18.2", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", @@ -70,7 +65,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.75.7", + "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/rollup-plugin/rollup.config.js b/packages/rollup-plugin/rollup.config.js deleted file mode 100644 index 441dbce54c0a..000000000000 --- a/packages/rollup-plugin/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; -import modulePackage from "module"; - -const input = ["src/index.ts"]; - -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/rollup-plugin/rollup.config.mjs b/packages/rollup-plugin/rollup.config.mjs new file mode 100644 index 000000000000..9ac495986fb1 --- /dev/null +++ b/packages/rollup-plugin/rollup.config.mjs @@ -0,0 +1,22 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; + +export default { + platform: "node", + input: ["src/index.ts"], + external: Object.keys(packageJson.dependencies), + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json index 4b0c8664669f..90e703de2427 100644 --- a/packages/tsconfigs/base-config.json +++ b/packages/tsconfigs/base-config.json @@ -2,12 +2,10 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "moduleResolution": "node", - "skipLibCheck": false, + "skipLibCheck": true, "isolatedModules": true, "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, "noPropertyAccessFromIndexSignature": true, "noUncheckedIndexedAccess": true, diff --git a/packages/vite-plugin/.babelrc.json b/packages/vite-plugin/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/vite-plugin/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js index 42b35d843948..6eebd0fcf927 100644 --- a/packages/vite-plugin/.eslintrc.js +++ b/packages/vite-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.js"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index ccdfc6fee70d..39f778350717 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -31,8 +31,8 @@ "scripts": { "build": "premove ./out && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", @@ -52,11 +52,6 @@ "@sentry/rollup-plugin": "4.9.1" }, "devDependencies": { - "@babel/core": "7.18.5", - "@babel/preset-env": "7.18.2", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-node-resolve": "13.3.0", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", @@ -66,7 +61,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.75.7", + "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/vite-plugin/rollup.config.js b/packages/vite-plugin/rollup.config.js deleted file mode 100644 index 441dbce54c0a..000000000000 --- a/packages/vite-plugin/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; -import modulePackage from "module"; - -const input = ["src/index.ts"]; - -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/vite-plugin/rollup.config.mjs b/packages/vite-plugin/rollup.config.mjs new file mode 100644 index 000000000000..9ac495986fb1 --- /dev/null +++ b/packages/vite-plugin/rollup.config.mjs @@ -0,0 +1,22 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; + +export default { + platform: "node", + input: ["src/index.ts"], + external: Object.keys(packageJson.dependencies), + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + { + file: packageJson.main, + format: "cjs", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/webpack-plugin/.babelrc.json b/packages/webpack-plugin/.babelrc.json deleted file mode 100644 index 0c20c06e021f..000000000000 --- a/packages/webpack-plugin/.babelrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/typescript"] -} diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js index 42b35d843948..6eebd0fcf927 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.js"], + ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index a344150434b4..2e623a7d68d1 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -36,8 +36,8 @@ "scripts": { "build": "premove ./dist && run-p build:rollup build:types", "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rollup --config rollup.config.js", - "build:rollup:watch": "rollup --config rollup.config.js --watch --no-watch.clearScreen", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "check:types": "run-p check:types:src check:types:test", @@ -57,11 +57,6 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@babel/core": "7.18.5", - "@babel/preset-env": "7.18.2", - "@babel/preset-typescript": "7.17.12", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.1", "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", @@ -73,7 +68,7 @@ "eslint": "^8.18.0", "jest": "^28.1.1", "premove": "^4.0.0", - "rollup": "2.79.2", + "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "npm:webpack@^4" diff --git a/packages/webpack-plugin/rollup.config.js b/packages/webpack-plugin/rollup.config.js deleted file mode 100644 index bb57a7d4dbb4..000000000000 --- a/packages/webpack-plugin/rollup.config.js +++ /dev/null @@ -1,52 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import babel from "@rollup/plugin-babel"; -import packageJson from "./package.json"; -import modulePackage from "module"; - -const input = ["src/index.ts", "src/webpack5.ts", "src/component-annotation-transform.ts"]; - -const extensions = [".ts"]; - -export default { - input, - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], - onwarn: (warning) => { - if (warning.code === "CIRCULAR_DEPENDENCY") { - // Circular dependencies are usually not a big deal for us so let's just warn about them - console.warn(warning.message); - return; - } - // Warnings are usually high-consequence for us so let's throw to catch them - throw new Error(warning.message); - }, - plugins: [ - resolve({ - extensions, - rootDir: "./src", - preferBuiltins: true, - }), - babel({ - extensions, - babelHelpers: "bundled", - include: ["src/**/*"], - }), - ], - output: [ - { - dir: "./dist/esm", - format: "esm", - exports: "named", - sourcemap: true, - entryFileNames: "[name].mjs", - chunkFileNames: "[name].mjs", - }, - { - dir: "./dist/cjs", - format: "cjs", - exports: "named", - sourcemap: true, - entryFileNames: "[name].js", - chunkFileNames: "[name].js", - }, - ], -}; diff --git a/packages/webpack-plugin/rollup.config.mjs b/packages/webpack-plugin/rollup.config.mjs new file mode 100644 index 000000000000..7615ed33cd09 --- /dev/null +++ b/packages/webpack-plugin/rollup.config.mjs @@ -0,0 +1,26 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; + +export default { + platform: "node", + input: ["src/index.ts", "src/component-annotation-transform.ts"], + external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], + output: [ + { + dir: "./dist/esm", + format: "esm", + exports: "named", + sourcemap: true, + entryFileNames: "[name].mjs", + chunkFileNames: "[name].mjs", + }, + { + dir: "./dist/cjs", + format: "cjs", + exports: "named", + sourcemap: true, + entryFileNames: "[name].js", + chunkFileNames: "[name].js", + }, + ], +}; diff --git a/yarn.lock b/yarn.lock index cb4861b76d24..34a8b06fcd72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,14 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -25,11 +18,6 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.17.10", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": - version "7.21.9" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" - integrity sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ== - "@babel/compat-data@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" @@ -56,28 +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.7.2", "@babel/core@^7.8.0": - version "7.21.8" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helpers" "^7.21.5" - "@babel/parser" "^7.21.8" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.18.5": +"@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": version "7.24.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== @@ -98,38 +65,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.23.5": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.18.2", "@babel/generator@^7.21.5", "@babel/generator@^7.7.2": - version "7.21.9" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" - integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== - dependencies: - "@babel/types" "^7.21.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.23.6": +"@babel/generator@^7.18.2", "@babel/generator@^7.23.6", "@babel/generator@^7.7.2": version "7.23.6" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== @@ -139,13 +75,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -153,25 +82,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" - integrity sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g== - dependencies: - "@babel/types" "^7.21.5" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" - integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== - dependencies: - "@babel/compat-data" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -182,60 +93,11 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": - version "7.21.8" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" - integrity sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.21.5" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.21.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - semver "^6.3.0" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.21.8" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" - integrity sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.3.1" - semver "^6.3.0" - -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" - integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== - "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -244,13 +106,6 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -258,42 +113,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" - integrity sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg== - dependencies: - "@babel/types" "^7.21.5" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - dependencies: - "@babel/types" "^7.21.4" - -"@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" - integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== - dependencies: - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-simple-access" "^7.21.5" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - -"@babel/helper-module-transforms@^7.23.3": +"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== @@ -304,52 +131,11 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" - integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== - -"@babel/helper-plugin-utils@^7.22.5": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" - integrity sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg== - dependencies: - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-member-expression-to-functions" "^7.21.5" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - -"@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== - dependencies: - "@babel/types" "^7.21.5" - "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -357,20 +143,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - version "7.20.0" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -378,65 +150,22 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== - "@babel/helper-string-parser@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== - "@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helper-wrap-function@^7.18.9": - version "7.20.5" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" - integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helpers@^7.18.2", "@babel/helpers@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" - integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/helpers@^7.24.0": +"@babel/helpers@^7.18.2", "@babel/helpers@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== @@ -445,15 +174,6 @@ "@babel/traverse" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -463,166 +183,11 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": - version "7.21.9" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" - integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== - -"@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/parser@^7.24.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" - integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.7" - -"@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" - integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.17.12", "@babel/plugin-proposal-optional-chaining@^7.20.7": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" - integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -637,41 +202,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.20.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -693,7 +230,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -707,7 +244,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -735,212 +272,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" - integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - -"@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" - integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.17.12": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" - integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.17.12": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" - integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.17.12": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" - integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/template" "^7.20.7" - -"@babel/plugin-transform-destructuring@^7.18.0": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" - integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.1": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" - integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - -"@babel/plugin-transform-function-name@^7.16.7": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.17.12": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.0": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" - integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== - dependencies: - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" - integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== - dependencies: - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-simple-access" "^7.21.5" - -"@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" - integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.20.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" - integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-new-target@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.17.12", "@babel/plugin-transform-parameters@^7.20.7": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" - integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-react-display-name@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" @@ -988,174 +333,6 @@ "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.18.0": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" - integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - regenerator-transform "^0.15.1" - -"@babel/plugin-transform-reserved-words@^7.17.12": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.17.12": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" - integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.17.12": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" - integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-typescript" "^7.20.0" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" - integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== - dependencies: - "@babel/helper-plugin-utils" "^7.21.5" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" - integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== - dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-async-generator-functions" "^7.17.12" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.18.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.17.12" - "@babel/plugin-proposal-json-strings" "^7.17.12" - "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.18.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-private-methods" "^7.17.12" - "@babel/plugin-proposal-private-property-in-object" "^7.17.12" - "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.17.12" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.17.12" - "@babel/plugin-transform-async-to-generator" "^7.17.12" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.17.12" - "@babel/plugin-transform-classes" "^7.17.12" - "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.18.0" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.17.12" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.18.1" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.17.12" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.18.0" - "@babel/plugin-transform-modules-commonjs" "^7.18.2" - "@babel/plugin-transform-modules-systemjs" "^7.18.0" - "@babel/plugin-transform-modules-umd" "^7.18.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" - "@babel/plugin-transform-new-target" "^7.17.12" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.17.12" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.18.0" - "@babel/plugin-transform-reserved-words" "^7.17.12" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.17.12" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.18.2" - "@babel/plugin-transform-typeof-symbol" "^7.17.12" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.2" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - "@babel/preset-react@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" @@ -1168,46 +345,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.23.3" -"@babel/preset-typescript@7.17.12": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" - integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.17.12" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.8.4": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" - integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": - version "7.21.9" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" - integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/parser" "^7.21.9" - "@babel/types" "^7.21.5" - -"@babel/template@^7.22.15", "@babel/template@^7.23.9": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/template@^7.24.0": +"@babel/template@^7.16.7", "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -1216,39 +354,7 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.18.5", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.5" - "@babel/types" "^7.21.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.24.0": +"@babel/traverse@^7.18.5", "@babel/traverse@^7.24.0", "@babel/traverse@^7.7.2": version "7.24.0" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== @@ -1264,25 +370,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== - dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9": - version "7.23.9" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.24.0": +"@babel/types@^7.0.0", "@babel/types@^7.18.4", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.24.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1303,6 +391,28 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@emnapi/core@^1.7.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" + integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.7.1": + version "1.8.1" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" + integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + "@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" @@ -2118,6 +1228,15 @@ write-pkg "4.0.0" yargs "16.2.0" +"@napi-rs/wasm-runtime@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz#c3705ab549d176b8dc5172723d6156c3dc426af2" + integrity sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A== + dependencies: + "@emnapi/core" "^1.7.1" + "@emnapi/runtime" "^1.7.1" + "@tybys/wasm-util" "^0.10.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -2598,6 +1717,11 @@ dependencies: "@octokit/openapi-types" "^17.2.0" +"@oxc-project/types@=0.113.0": + version "0.113.0" + resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz#e323164a2d0cdc72c3eb980cd2a471e641df8d52" + integrity sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA== + "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -2618,13 +1742,77 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@rollup/plugin-babel@5.3.1": - version "5.3.1" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" +"@rolldown/binding-android-arm64@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz#bb275690413cd0109d49ba5dd4491e1c0296ad0e" + integrity sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w== + +"@rolldown/binding-darwin-arm64@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz#cd59b855ee90e464e8b6e97919089d00d98590e1" + integrity sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q== + +"@rolldown/binding-darwin-x64@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz#5c1411b969c26ffd88b661b1a38bafcf1519a431" + integrity sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww== + +"@rolldown/binding-freebsd-x64@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz#5b06b2792df246bb3fcc64630bd92af9feff3f87" + integrity sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz#93d9a3259cc41054425c8134d8ba41c9f92984f1" + integrity sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz#aa9e8f5b3874dc29bf54940eb55cb23274956e32" + integrity sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A== + +"@rolldown/binding-linux-arm64-musl@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz#e3b56288dcb2ba9219c3e3ff62bf0395c0dc9de4" + integrity sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ== + +"@rolldown/binding-linux-x64-gnu@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz#003570df20ba503ed71f052d1b201535fd6a217d" + integrity sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg== + +"@rolldown/binding-linux-x64-musl@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz#e1e22ee0b8913e45bf769291a7c7db57aa20b7fe" + integrity sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g== + +"@rolldown/binding-openharmony-arm64@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz#494ee66307a2b1192f24d6876564c1300ec90241" + integrity sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ== + +"@rolldown/binding-wasm32-wasi@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz#dc98418ee2e5668f7dcc4bf4155523a079b34a80" + integrity sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw== + dependencies: + "@napi-rs/wasm-runtime" "^1.1.1" + +"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz#a294ee643275bb099c1128ad294bd6101bae1eca" + integrity sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ== + +"@rolldown/binding-win32-x64-msvc@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz#b9248d23625f6f59ec1af0b3140706cba6afc36c" + integrity sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g== + +"@rolldown/pluginutils@1.0.0-rc.4": + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz#267b477af268a082861c861e47f6a787dff59cc4" + integrity sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ== "@rollup/plugin-babel@^6.0.4": version "6.0.4" @@ -2634,19 +1822,6 @@ "@babel/helper-module-imports" "^7.18.6" "@rollup/pluginutils" "^5.0.1" -"@rollup/plugin-commonjs@22.0.1": - version "22.0.1" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" - integrity sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - "@rollup/plugin-commonjs@^25.0.7": version "25.0.7" resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" @@ -2659,25 +1834,6 @@ is-reference "1.2.1" magic-string "^0.30.3" -"@rollup/plugin-json@4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@13.3.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" - integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - deepmerge "^4.2.2" - is-builtin-module "^3.1.0" - is-module "^1.0.0" - resolve "^1.19.0" - "@rollup/plugin-node-resolve@^15.2.3": version "15.2.3" resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" @@ -2690,23 +1846,6 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" - integrity sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - "@rollup/pluginutils@^5.0.1": version "5.1.0" resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" @@ -3005,6 +2144,13 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" +"@tybys/wasm-util@^0.10.1": + version "0.10.1" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + "@types/axios@^0.14.0": version "0.14.0" resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" @@ -3012,18 +2158,7 @@ dependencies: axios "*" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.0" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.20.5": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -3092,11 +2227,6 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -3171,12 +2301,7 @@ expect "^28.0.0" pretty-format "^28.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json-schema@^7.0.5": +"@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" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3212,14 +2337,18 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": - version "20.2.3" - resolved "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" - integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== + version "22.19.11" + resolved "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz#7e1feaad24e4e36c52fa5558d5864bb4b272603e" + integrity sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w== + dependencies: + undici-types "~6.21.0" "@types/node@^18.6.3": - version "18.16.14" - resolved "https://registry.npmjs.org/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631" - integrity sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg== + version "18.19.130" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== + dependencies: + undici-types "~5.26.4" "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3260,13 +2389,6 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" @@ -4351,30 +3473,6 @@ babel-plugin-jest-hoist@^28.1.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - 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" @@ -4620,17 +3718,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -browserslist@^4.22.2: +browserslist@^4.14.5, browserslist@^4.22.2: version "4.22.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== @@ -4824,11 +3912,6 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001449: - version "1.0.30001489" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" - integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== - caniuse-lite@^1.0.30001580: version "1.0.30001581" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" @@ -4842,7 +3925,7 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -5304,13 +4387,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.30.2" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" - integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== - dependencies: - browserslist "^4.21.5" - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -5720,11 +4796,6 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.284: - version "1.4.404" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.404.tgz#16baf653a7a2613e221da61480ad02fe84e40231" - integrity sha512-te57sWvQdpxmyd1GiswaodKdXdPgn9cN4ht8JlNa04QgtrfnUdWEo1261rY2vaC6TKaiHn0E7QerJWPKFCvMVw== - electron-to-chromium@^1.4.648: version "1.4.653" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz#832ab25e80ad698ac09c1ca547bd9ee6cce7df10" @@ -6411,12 +5482,7 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1, estree-walker@^2.0.2: +estree-walker@^2.0.2: version "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== @@ -7176,7 +6242,7 @@ glob@^10.2.2, glob@^10.5.0: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7765,7 +6831,7 @@ is-buffer@^1.1.5: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: +is-builtin-module@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== @@ -7952,7 +7018,7 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-reference@1.2.1, is-reference@^1.2.1: +is-reference@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -8898,11 +7964,6 @@ jsesc@^2.5.1: resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -9250,11 +8311,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -9309,37 +8365,18 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -lru-cache@^9.1.1: - version "9.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" - integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@0.30.8: +magic-string@0.30.8, magic-string@^0.30.3: version "0.30.8" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -magic-string@^0.30.3: - version "0.30.6" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" - integrity sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - 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" @@ -9611,14 +8648,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -9714,11 +8744,6 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" - integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" @@ -9972,11 +8997,6 @@ 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.8: - version "2.0.11" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.11.tgz#59d7cef999d13f908e43b5a70001cf3129542f0f" - integrity sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q== - nopt@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" @@ -10759,7 +9779,7 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: +path-scurry@^1.11.1, path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -10767,14 +9787,6 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-scurry@^1.6.1: - version "1.9.2" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" - integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== - dependencies: - lru-cache "^9.1.1" - minipass "^5.0.0 || ^6.0.2" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -10808,7 +9820,7 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +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== @@ -11353,30 +10365,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== - dependencies: - "@babel/runtime" "^7.8.4" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -11394,25 +10382,6 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.2.0" functions-have-names "^1.2.3" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -11470,7 +10439,7 @@ resolve.exports@^1.1.0: resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.2" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -11540,19 +10509,27 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup@2.75.7: - version "2.75.7" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" - integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== +rolldown@^1.0.0-rc.4: + version "1.0.0-rc.4" + resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz#c22246260ab3da62caa209556e26d81fe516cf10" + integrity sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA== + dependencies: + "@oxc-project/types" "=0.113.0" + "@rolldown/pluginutils" "1.0.0-rc.4" optionalDependencies: - fsevents "~2.3.2" - -rollup@2.79.2: - version "2.79.2" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" - integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== - optionalDependencies: - fsevents "~2.3.2" + "@rolldown/binding-android-arm64" "1.0.0-rc.4" + "@rolldown/binding-darwin-arm64" "1.0.0-rc.4" + "@rolldown/binding-darwin-x64" "1.0.0-rc.4" + "@rolldown/binding-freebsd-x64" "1.0.0-rc.4" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.4" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.4" + "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.4" + "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.4" + "@rolldown/binding-linux-x64-musl" "1.0.0-rc.4" + "@rolldown/binding-openharmony-arm64" "1.0.0-rc.4" + "@rolldown/binding-wasm32-wasi" "1.0.0-rc.4" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.4" + "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.4" rollup@3.2.0: version "3.2.0" @@ -11692,12 +10669,7 @@ semver@7.3.8: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -11975,11 +10947,6 @@ source-map@^0.7.3: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -12568,26 +11535,7 @@ trim-newlines@^3.0.0: resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-node@^10.9.2: +ts-node@^10.9.1, ts-node@^10.9.2: version "10.9.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -12759,28 +11707,15 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== union-value@^1.0.0: version "1.0.1" @@ -12879,14 +11814,6 @@ upath@^1.1.1: resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.10: - version "1.0.11" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" From 79c165737e691b28ab040b639ba80a59e3990ba6 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 18 Feb 2026 15:07:12 +0000 Subject: [PATCH 589/640] chore: Migrate to oxfmt (#880) --- .devcontainer/devcontainer.json | 2 +- .oxfmtrc.json | 11 ++ .prettierignore | 5 - .prettierrc.json | 3 - .vscode/settings.json | 3 + package.json | 6 +- .../sentry-esbuild-debugid-injection-file.js | 12 +- .../src/sentry/telemetry.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 25 ++-- ...mponent-name-annotate-experimental.test.ts | 3 +- .../component-name-annotate.test.ts | 3 +- .../vite-mpa-extra-modules/input/index.html | 2 +- .../vite-mpa-extra-modules/input/page1.html | 2 +- .../vite-mpa-extra-modules/input/page2.html | 2 +- yarn.lock | 132 +++++++++++++++++- 15 files changed, 171 insertions(+), 42 deletions(-) create mode 100644 .oxfmtrc.json delete mode 100644 .prettierignore delete mode 100644 .prettierrc.json create mode 100644 .vscode/settings.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4bb1ca32196e..4877718afbc0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -30,7 +30,7 @@ }, "customizations": { "vscode": { - "extensions": ["esbenp.prettier-vscode", "SonarSource.sonarlint-vscode"] + "extensions": ["oxc.oxc-vscode", "SonarSource.sonarlint-vscode"] } } } diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 000000000000..9a803f10a600 --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,11 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "printWidth": 100, + "experimentalSortPackageJson": false, + "trailingComma": "es5", + "ignorePatterns": [ + "packages/e2e-tests/scenarios/*/ref/**/*", + "packages/bundler-plugin-core/test/fixtures", + ".nxcache" + ] +} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 1b7baff08588..000000000000 --- a/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -packages/e2e-tests/scenarios/*/ref/**/* -packages/bundler-plugin-core/test/fixtures -.nxcache -# current prettier version doesn't support import assertions -rollup.config.mjs diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index de753c537d23..000000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "printWidth": 100 -} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000000..e40b7be8e89c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.defaultFormatter": "oxc.oxc-vscode", +} diff --git a/package.json b/package.json index 01b9e6982e63..36b234076370 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ "test:integration": "nx run @sentry-internal/integration-tests:test", "test:e2e": "nx run @sentry-internal/bundler-plugin-e2e-tests:test", "lint": "nx run-many --target=lint --all", - "check:formatting": "prettier --check .", - "fix:formatting": "prettier --write ." + "check:formatting": "oxfmt --check .", + "fix:formatting": "oxfmt ." }, "devDependencies": { "@nrwl/cli": "14.5.10", "@nrwl/workspace": "14.5.10", "lerna": "^6.6.2", "nx": "14.5.10", - "prettier": "^2.7.1", + "oxfmt": "^0.33.0", "pretty-quick": "^3.1.3", "npm-run-all": "^4.1.5", "ts-node": "^10.9.2" diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index 61196856f94d..0bbd7d2acfc5 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -3,12 +3,12 @@ try { "undefined" != typeof window ? window : "undefined" != typeof global - ? global - : "undefined" != typeof globalThis - ? global - : "undefined" != typeof self - ? self - : {}; + ? global + : "undefined" != typeof globalThis + ? global + : "undefined" != typeof self + ? self + : {}; let stack = new globalObject.Error().stack; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index a467817982e8..984dd6c01993 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -110,7 +110,7 @@ export function setTelemetryDataOnScope( scope.setTags({ organization: org, - project: Array.isArray(project) ? project.join(", ") : project ?? "undefined", + project: Array.isArray(project) ? project.join(", ") : (project ?? "undefined"), bundler: buildTool, }); diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index 45d98ab4657f..a79a4f9038bc 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -120,16 +120,19 @@ export function getDependencies(packageJson: PackageJson): { const deps = Object.keys(dependencies).sort(); - const depsVersions: Record = deps.reduce((depsVersions, depName) => { - if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) { - const version = dependencies[depName] as string; - const majorVersion = parseMajorVersion(version); - if (majorVersion) { - depsVersions[depName] = majorVersion; + const depsVersions: Record = deps.reduce( + (depsVersions, depName) => { + if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) { + const version = dependencies[depName] as string; + const majorVersion = parseMajorVersion(version); + if (majorVersion) { + depsVersions[depName] = majorVersion; + } } - } - return depsVersions; - }, {} as Record); + return depsVersions; + }, + {} as Record + ); return { deps, depsVersions }; } @@ -414,8 +417,8 @@ export function serializeIgnoreOptions(ignoreValue: string | string[] | undefine const ignoreOptions: string[] = Array.isArray(ignoreValue) ? ignoreValue : typeof ignoreValue === "string" - ? [ignoreValue] - : DEFAULT_IGNORE; + ? [ignoreValue] + : DEFAULT_IGNORE; return ignoreOptions.reduce( (acc, value) => acc.concat(["--ignore", String(value)]), 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 5227d8346d02..ac7a790e0297 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 @@ -2,8 +2,7 @@ import childProcess from "child_process"; import path from "path"; import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; -// prettier-ignore -const SNAPSHOT = `"
Component A
"` +const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { 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 3f2496c96182..79417c635343 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 @@ -2,8 +2,7 @@ import childProcess from "child_process"; import path from "path"; import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; -// prettier-ignore -const SNAPSHOT = `"
Component A
"` +const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html index ae984747be10..b18731ac6fab 100644 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html @@ -1,4 +1,4 @@ - + diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html index 7c8bbff00d70..44cb873cef18 100644 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html @@ -1,4 +1,4 @@ - + diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html index d37e99087eb0..6cac57fe9b22 100644 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html @@ -1,4 +1,4 @@ - + diff --git a/yarn.lock b/yarn.lock index 34a8b06fcd72..1df6471ce420 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1722,6 +1722,101 @@ resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz#e323164a2d0cdc72c3eb980cd2a471e641df8d52" integrity sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA== +"@oxfmt/binding-android-arm-eabi@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.33.0.tgz#916a010c5d5cb89926da9288dcc078b00910e3c3" + integrity sha512-ML6qRW8/HiBANteqfyFAR1Zu0VrJu+6o4gkPLsssq74hQ7wDMkufBYJXI16PGSERxEYNwKxO5fesCuMssgTv9w== + +"@oxfmt/binding-android-arm64@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.33.0.tgz#606e35d0dfafc2ce18bd6b60769a892fe0c8ddc6" + integrity sha512-WimmcyrGpTOntj7F7CO9RMssncOKYall93nBnzJbI2ZZDhVRuCkvFwTpwz80cZqwYm5udXRXfF40ZXcCxjp9jg== + +"@oxfmt/binding-darwin-arm64@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.33.0.tgz#022e34ff2429b4bee1ecc4d9a3e639089836ad30" + integrity sha512-PorspsX9O5ISstVaq34OK4esN0LVcuU4DVg+XuSqJsfJ//gn6z6WH2Tt7s0rTQaqEcp76g7+QdWQOmnJDZsEVg== + +"@oxfmt/binding-darwin-x64@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.33.0.tgz#2e370a9d6d65e1b99080e92a57a8965cd47cde68" + integrity sha512-8278bqQtOcHRPhhzcqwN9KIideut+cftBjF8d2TOsSQrlsJSFx41wCCJ38mFmH9NOmU1M+x9jpeobHnbRP1okw== + +"@oxfmt/binding-freebsd-x64@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.33.0.tgz#e2fd3aed8ffd7674b029e3e62fd3ee9fa13f6688" + integrity sha512-BiqYVwWFHLf5dkfg0aCKsXa9rpi//vH1+xePCpd7Ulz9yp9pJKP4DWgS5g+OW8MaqOtt7iyAszhxtk/j1nDKHQ== + +"@oxfmt/binding-linux-arm-gnueabihf@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.33.0.tgz#240d6309203feb48b39479eb7a1d1cd43147258d" + integrity sha512-oAVmmurXx0OKbNOVv71oK92LsF1LwYWpnhDnX0VaAy/NLsCKf4B7Zo7lxkJh80nfhU20TibcdwYfoHVaqlStPQ== + +"@oxfmt/binding-linux-arm-musleabihf@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.33.0.tgz#c1eec538c5e14f9ba2217b787b418e1cd260f7ab" + integrity sha512-YB6S8CiRol59oRxnuclJiWoV6l+l8ru/NsuQNYjXZnnPXfSTXKtMLWHCnL/figpCFYA1E7JyjrBbar1qxe2aZg== + +"@oxfmt/binding-linux-arm64-gnu@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.33.0.tgz#59ca12cf1d535754853ee4d57d6d4f06118e6440" + integrity sha512-hrYy+FpWoB6N24E9oGRimhVkqlls9yeqcRmQakEPUHoAbij6rYxsHHYIp3+FHRiQZFAOUxWKn/CCQoy/Mv3Dgw== + +"@oxfmt/binding-linux-arm64-musl@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.33.0.tgz#c76d1e098d3184db04e5a144e2be7986404410ae" + integrity sha512-O1YIzymGRdWj9cG5iVTjkP7zk9/hSaVN8ZEbqMnWZjLC1phXlv54cUvANGGXndgJp2JS4W9XENn7eo5I4jZueg== + +"@oxfmt/binding-linux-ppc64-gnu@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.33.0.tgz#53037342bded42f36bee74725d2886158cc8c1dd" + integrity sha512-2lrkNe+B0w1tCgQTaozfUNQCYMbqKKCGcnTDATmWCZzO77W2sh+3n04r1lk9Q1CK3bI+C3fPwhFPUR2X2BvlyQ== + +"@oxfmt/binding-linux-riscv64-gnu@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.33.0.tgz#cfe21dee920934c0779b6a07df166f13a278d4d4" + integrity sha512-8DSG1q0M6097vowHAkEyHnKed75/BWr1IBtgCJfytnWQg+Jn1X4DryhfjqonKZOZiv74oFQl5J8TCbdDuXXdtQ== + +"@oxfmt/binding-linux-riscv64-musl@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.33.0.tgz#902784bbbed87c3eb9490c4b130ec4a930c5ecab" + integrity sha512-eWaxnpPz7+p0QGUnw7GGviVBDOXabr6Cd0w7S/vnWTqQo9z1VroT7XXFnJEZ3dBwxMB9lphyuuYi/GLTCxqxlg== + +"@oxfmt/binding-linux-s390x-gnu@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.33.0.tgz#2f30f4833f5cdee1055a777c71364c125fed08a5" + integrity sha512-+mH8cQTqq+Tu2CdoB2/Wmk9CqotXResi+gPvXpb+AAUt/LiwpicTQqSolMheQKogkDTYHPuUiSN23QYmy7IXNQ== + +"@oxfmt/binding-linux-x64-gnu@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.33.0.tgz#4999dff1eac46e574cdef36277189a479ae3aaf3" + integrity sha512-fjyslAYAPE2+B6Ckrs5LuDQ6lB1re5MumPnzefAXsen3JGwiRilra6XdjUmszTNoExJKbewoxxd6bcLSTpkAJQ== + +"@oxfmt/binding-linux-x64-musl@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.33.0.tgz#2c6c39e71aaaa46b87bba9d63ada27ba3555b41d" + integrity sha512-ve/jGBlTt35Jl/I0A0SfCQX3wKnadzPDdyOFEwe2ZgHHIT9uhqhAv1PaVXTenSBpauICEWYH8mWy+ittzlVE/A== + +"@oxfmt/binding-openharmony-arm64@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.33.0.tgz#0021245d4515a396b998d158d58caa124787365f" + integrity sha512-lsWRgY9e+uPvwXnuDiJkmJ2Zs3XwwaQkaALJ3/SXU9kjZP0Qh8/tGW8Tk/Z6WL32sDxx+aOK5HuU7qFY9dHJhg== + +"@oxfmt/binding-win32-arm64-msvc@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.33.0.tgz#7b6a03bc0748bb466b18f552b7bb7ff80f3dc9f3" + integrity sha512-w8AQHyGDRZutxtQ7IURdBEddwFrtHQiG6+yIFpNJ4HiMyYEqeAWzwBQBfwSAxtSNh6Y9qqbbc1OM2mHN6AB3Uw== + +"@oxfmt/binding-win32-ia32-msvc@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.33.0.tgz#0ec1faf5ca8896fd12d238dd6ae72c5e81aff2cc" + integrity sha512-j2X4iumKVwDzQtUx3JBDkaydx6eLuncgUZPl2ybZ8llxJMFbZIniws70FzUQePMfMtzLozIm7vo4bjkvQFsOzw== + +"@oxfmt/binding-win32-x64-msvc@0.33.0": + version "0.33.0" + resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" + integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== + "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -9490,6 +9585,33 @@ os-tmpdir@~1.0.2: resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +oxfmt@^0.33.0: + version "0.33.0" + resolved "https://registry.npmjs.org/oxfmt/-/oxfmt-0.33.0.tgz#6712d25c10d78b2313bf92d4a38a3a34952f7f5f" + integrity sha512-ogxBXA9R4BFeo8F1HeMIIxHr5kGnQwKTYZ5k131AEGOq1zLxInNhvYSpyRQ+xIXVMYfCN7yZHKff/lb5lp4auQ== + dependencies: + tinypool "2.1.0" + optionalDependencies: + "@oxfmt/binding-android-arm-eabi" "0.33.0" + "@oxfmt/binding-android-arm64" "0.33.0" + "@oxfmt/binding-darwin-arm64" "0.33.0" + "@oxfmt/binding-darwin-x64" "0.33.0" + "@oxfmt/binding-freebsd-x64" "0.33.0" + "@oxfmt/binding-linux-arm-gnueabihf" "0.33.0" + "@oxfmt/binding-linux-arm-musleabihf" "0.33.0" + "@oxfmt/binding-linux-arm64-gnu" "0.33.0" + "@oxfmt/binding-linux-arm64-musl" "0.33.0" + "@oxfmt/binding-linux-ppc64-gnu" "0.33.0" + "@oxfmt/binding-linux-riscv64-gnu" "0.33.0" + "@oxfmt/binding-linux-riscv64-musl" "0.33.0" + "@oxfmt/binding-linux-s390x-gnu" "0.33.0" + "@oxfmt/binding-linux-x64-gnu" "0.33.0" + "@oxfmt/binding-linux-x64-musl" "0.33.0" + "@oxfmt/binding-openharmony-arm64" "0.33.0" + "@oxfmt/binding-win32-arm64-msvc" "0.33.0" + "@oxfmt/binding-win32-ia32-msvc" "0.33.0" + "@oxfmt/binding-win32-x64-msvc" "0.33.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -9906,11 +10028,6 @@ premove@^4.0.0: resolved "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz#813a87462dca591946e60ebd97c95092f0743aee" integrity sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ== -prettier@^2.7.1: - version "2.8.8" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - pretty-format@29.4.3: version "29.4.3" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" @@ -11437,6 +11554,11 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +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== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" From 1176013977d644ac0747dc59423d5a3df666033d Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:31:57 +0100 Subject: [PATCH 590/640] ref: Avoid direct usage of glob, extract into `globFiles` helper (#883) The idea is that we can test against globFiles and eventually replace glob. --- .../src/build-plugin-manager.ts | 14 +- packages/bundler-plugin-core/src/glob.ts | 8 + packages/bundler-plugin-core/src/index.ts | 14 +- .../test/build-plugin-manager.test.ts | 22 ++- .../bundler-plugin-core/test/glob.test.ts | 161 ++++++++++++++++++ packages/rollup-plugin/src/index.ts | 10 +- 6 files changed, 195 insertions(+), 34 deletions(-) create mode 100644 packages/bundler-plugin-core/src/glob.ts create mode 100644 packages/bundler-plugin-core/test/glob.test.ts diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 83a44a7df75d..25bca86fff24 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -26,8 +26,8 @@ import { serializeIgnoreOptions, stripQueryAndHashFromPath, } from "./utils"; -import { glob } from "glob"; import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; +import { globFiles } from "./glob"; import { LIB_VERSION } from "./version"; // Module-level guard to prevent duplicate deploy records when multiple bundler plugin @@ -678,12 +678,7 @@ export function createSentryBuildPluginManager( const globResult = await startSpan( { name: "glob", scope: sentryScope }, - async () => - await glob(globAssets, { - absolute: true, - nodir: true, // We need individual files for preparation - ignore: options.sourcemaps?.ignore, - }) + async () => await globFiles(globAssets, { ignore: options.sourcemaps?.ignore }) ); const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { @@ -810,10 +805,7 @@ export function createSentryBuildPluginManager( try { const filesToDelete = await options.sourcemaps?.filesToDeleteAfterUpload; if (filesToDelete !== undefined) { - const filePathsToDelete = await glob(filesToDelete, { - absolute: true, - nodir: true, - }); + const filePathsToDelete = await globFiles(filesToDelete); logger.debug( "Waiting for dependencies on generated files to be freed before deleting..." diff --git a/packages/bundler-plugin-core/src/glob.ts b/packages/bundler-plugin-core/src/glob.ts new file mode 100644 index 000000000000..b413e2c64141 --- /dev/null +++ b/packages/bundler-plugin-core/src/glob.ts @@ -0,0 +1,8 @@ +import { glob } from "glob"; + +export function globFiles( + patterns: string | string[], + options?: { root?: string; ignore?: string | string[] } +): Promise { + return glob(patterns, { absolute: true, nodir: true, ...options }); +} diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index 4009360de188..be30893c5cb8 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -5,7 +5,6 @@ import componentNameAnnotatePlugin, { import SentryCli from "@sentry/cli"; import { logger } from "@sentry/utils"; import * as fs from "fs"; -import { glob } from "glob"; import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; /** @@ -63,18 +62,7 @@ export function shouldSkipCodeInjection( return false; } -export function globFiles(outputDir: string): Promise { - return glob( - ["/**/*.js", "/**/*.mjs", "/**/*.cjs", "/**/*.js.map", "/**/*.mjs.map", "/**/*.cjs.map"].map( - (q) => `${q}?(\\?*)?(#*)` - ), // We want to allow query and hashes strings at the end of files - { - root: outputDir, - absolute: true, - nodir: true, - } - ); -} +export { globFiles } from "./glob"; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function createComponentNameAnnotateHooks( 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 6c320b6ca234..04967c4cb1fb 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -3,7 +3,7 @@ import { _resetDeployedReleasesForTesting, } from "../src/build-plugin-manager"; import fs from "fs"; -import { glob } from "glob"; +import { globFiles } from "../src/glob"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; const mockCliExecute = jest.fn(); @@ -37,10 +37,10 @@ jest.mock("@sentry/core", () => ({ startSpan: jest.fn((options: unknown, callback: () => unknown) => callback()), })); -jest.mock("glob"); +jest.mock("../src/glob"); jest.mock("../src/debug-id-upload"); -const mockGlob = glob as jest.MockedFunction; +const mockGlobFiles = globFiles as jest.MockedFunction; const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as jest.MockedFunction< typeof prepareBundleForDebugIdUpload >; @@ -302,7 +302,7 @@ describe("createSentryBuildPluginManager", () => { }) ); // Should not glob when prepareArtifacts is false - expect(mockGlob).not.toHaveBeenCalled(); + expect(mockGlobFiles).not.toHaveBeenCalled(); expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); }); @@ -340,7 +340,7 @@ describe("createSentryBuildPluginManager", () => { live: "rejectOnError", }) ); - expect(mockGlob).not.toHaveBeenCalled(); + expect(mockGlobFiles).not.toHaveBeenCalled(); expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); }); @@ -359,7 +359,7 @@ describe("createSentryBuildPluginManager", () => { await manager.uploadSourcemaps([".next"], { prepareArtifacts: false }); expect(mockCliUploadSourceMaps).not.toHaveBeenCalled(); - expect(mockGlob).not.toHaveBeenCalled(); + expect(mockGlobFiles).not.toHaveBeenCalled(); expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); }); @@ -378,14 +378,18 @@ describe("createSentryBuildPluginManager", () => { await manager.uploadSourcemaps([".next"]); expect(mockCliUploadSourceMaps).not.toHaveBeenCalled(); - expect(mockGlob).not.toHaveBeenCalled(); + expect(mockGlobFiles).not.toHaveBeenCalled(); expect(mockPrepareBundleForDebugIdUpload).not.toHaveBeenCalled(); }); it("prepares into temp folder and uploads when prepareArtifacts is true (default)", async () => { mockCliUploadSourceMaps.mockResolvedValue(undefined); - mockGlob.mockResolvedValue(["/app/dist/a.js", "/app/dist/a.js.map", "/app/dist/other.txt"]); + mockGlobFiles.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); @@ -472,7 +476,7 @@ describe("createSentryBuildPluginManager", () => { describe("uploadSourcemaps with multiple projects", () => { beforeEach(() => { jest.clearAllMocks(); - mockGlob.mockResolvedValue(["/path/to/bundle.js"]); + mockGlobFiles.mockResolvedValue(["/path/to/bundle.js"]); mockPrepareBundleForDebugIdUpload.mockResolvedValue(undefined); mockCliUploadSourceMaps.mockResolvedValue(undefined); diff --git a/packages/bundler-plugin-core/test/glob.test.ts b/packages/bundler-plugin-core/test/glob.test.ts new file mode 100644 index 000000000000..9a32b4ef5ff9 --- /dev/null +++ b/packages/bundler-plugin-core/test/glob.test.ts @@ -0,0 +1,161 @@ +import * as fs from "fs"; +import * as path from "path"; +import * as os from "os"; +import { globFiles } from "../src/glob"; + +let tmpDir: string; + +beforeEach(async () => { + tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "glob-test-")); +}); + +afterEach(async () => { + await fs.promises.rm(tmpDir, { recursive: true, force: true }); +}); + +/** Helper: create a file (and any parent dirs) under tmpDir. */ +async function touch(...segments: string[]): Promise { + const filePath = path.join(tmpDir, ...segments); + await fs.promises.mkdir(path.dirname(filePath), { recursive: true }); + await fs.promises.writeFile(filePath, ""); + return filePath; +} + +describe("globFiles", () => { + describe("core behavior", () => { + it("returns absolute paths", async () => { + await touch("a.js"); + const result = await globFiles(path.join(tmpDir, "**/*.js")); + expect(result).toHaveLength(1); + expect(path.isAbsolute(result[0]!)).toBe(true); + }); + + it("excludes directories (nodir)", async () => { + // Create a directory that matches the glob pattern + await fs.promises.mkdir(path.join(tmpDir, "subdir.js"), { recursive: true }); + await touch("real.js"); + const result = await globFiles(path.join(tmpDir, "**/*.js")); + expect(result).toEqual([path.join(tmpDir, "real.js")]); + }); + + it("returns [] for no matches", async () => { + await touch("a.txt"); + const result = await globFiles(path.join(tmpDir, "**/*.js")); + expect(result).toEqual([]); + }); + + it("returns [] for nonexistent pattern path", async () => { + const result = await globFiles(path.join(tmpDir, "nonexistent/**/*.js")); + expect(result).toEqual([]); + }); + + it("matches deeply nested files", async () => { + const filePath = await touch("a", "b", "c", "deep.js"); + const result = await globFiles(path.join(tmpDir, "**/*.js")); + expect(result).toEqual([filePath]); + }); + + it("works with a string pattern", async () => { + await touch("single.js"); + const result = await globFiles(path.join(tmpDir, "*.js")); + expect(result).toHaveLength(1); + }); + + it("works with an array of patterns", async () => { + const jsFile = await touch("a.js"); + const mapFile = await touch("a.js.map"); + await touch("b.css"); + + const result = await globFiles([ + path.join(tmpDir, "**/*.js"), + path.join(tmpDir, "**/*.js.map"), + ]); + result.sort(); + expect(result).toEqual([jsFile, mapFile].sort()); + }); + }); + + describe("root option", () => { + it("scopes results to root directory", async () => { + await touch("file.js"); + // Patterns starting with / are resolved relative to root + const result = await globFiles("/**/*.js", { root: tmpDir }); + expect(result).toEqual([path.join(tmpDir, "file.js")]); + }); + }); + + describe("ignore option", () => { + it("excludes files matching ignore string pattern", async () => { + await touch("keep.js"); + await touch("node_modules", "dep.js"); + + const result = await globFiles(path.join(tmpDir, "**/*.js"), { + ignore: path.join(tmpDir, "node_modules/**"), + }); + expect(result).toEqual([path.join(tmpDir, "keep.js")]); + }); + + it("excludes files matching ignore array patterns", async () => { + await touch("keep.js"); + await touch("node_modules", "dep.js"); + await touch("dist", "bundle.js"); + + const result = await globFiles(path.join(tmpDir, "**/*.js"), { + ignore: [path.join(tmpDir, "node_modules/**"), path.join(tmpDir, "dist/**")], + }); + expect(result).toEqual([path.join(tmpDir, "keep.js")]); + }); + }); + + describe("rollup JS/map patterns", () => { + const JS_AND_MAP_PATTERNS = [ + "/**/*.js", + "/**/*.mjs", + "/**/*.cjs", + "/**/*.js.map", + "/**/*.mjs.map", + "/**/*.cjs.map", + ].map((q) => `${q}?(\\?*)?(#*)`); + + it("matches .js, .mjs, .cjs and their .map variants", async () => { + const files = await Promise.all([ + touch("a.js"), + touch("b.mjs"), + touch("c.cjs"), + touch("a.js.map"), + touch("b.mjs.map"), + touch("c.cjs.map"), + ]); + + const result = await globFiles(JS_AND_MAP_PATTERNS, { root: tmpDir }); + result.sort(); + expect(result).toEqual(files.sort()); + }); + + it("does NOT match .css, .ts, .json, etc.", async () => { + await touch("style.css"); + await touch("types.ts"); + await touch("data.json"); + await touch("readme.md"); + + const result = await globFiles(JS_AND_MAP_PATTERNS, { root: tmpDir }); + expect(result).toEqual([]); + }); + + it("works in nested subdirectories", async () => { + const files = await Promise.all([ + touch("src", "deep", "a.js"), + touch("src", "deep", "a.js.map"), + ]); + + const result = await globFiles(JS_AND_MAP_PATTERNS, { root: tmpDir }); + result.sort(); + expect(result).toEqual(files.sort()); + }); + + it("returns [] for empty directory", async () => { + const result = await globFiles(JS_AND_MAP_PATTERNS, { root: tmpDir }); + expect(result).toEqual([]); + }); + }); +}); diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 3ae57bc7e299..9d33ae3c38f1 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -208,7 +208,15 @@ export function _rollupPluginInternal( if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { if (outputOptions.dir) { const outputDir = outputOptions.dir; - const buildArtifacts = await globFiles(outputDir); + const JS_AND_MAP_PATTERNS = [ + "/**/*.js", + "/**/*.mjs", + "/**/*.cjs", + "/**/*.js.map", + "/**/*.mjs.map", + "/**/*.cjs.map", + ].map((q) => `${q}?(\\?*)?(#*)`); // We want to allow query and hash strings at the end of files + const buildArtifacts = await globFiles(JS_AND_MAP_PATTERNS, { root: outputDir }); await upload(buildArtifacts); } else if (outputOptions.file) { await upload([outputOptions.file]); From e924c1256108bab65b4abb645ff3a15a60b90f21 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 23 Feb 2026 11:02:21 +0000 Subject: [PATCH 591/640] feat!: Remove support for Node < v18 and webpack v4 (#886) * feat!: Remove support for Node < v18 * Fix dependency review --- .github/dependency-review-config.yml | 4 + .github/workflows/checks.yml | 12 +- README.md | 2 +- packages/e2e-tests/package.json | 4 +- packages/e2e-tests/utils/bundlers.ts | 2 +- .../e2e-tests/utils/create-cjs-bundles.ts | 41 +- .../after-upload-deletion.test.ts | 7 +- .../after-upload-deletion-promise/setup.ts | 2 +- .../after-upload-deletion.test.ts | 9 +- .../fixtures/after-upload-deletion/setup.ts | 2 +- .../metadata-injection.test.ts | 7 +- .../application-key-injection/setup.ts | 2 +- .../application-key-with-debug-id.test.ts | 7 +- .../application-key-with-debug-id/setup.ts | 2 +- .../basic-release-injection.test.ts | 8 +- .../build-information-injection.test.ts | 20 +- .../bundle-size-optimizations.test.ts | 16 +- ...mponent-name-annotate-experimental.test.ts | 8 +- .../component-name-annotate.test.ts | 8 +- .../debug-id-injection.test.ts | 12 +- .../debug-ids-already-injected.test.ts | 7 +- .../input/webpack5/webpack.config.js | 2 +- .../{build-webpack5.ts => build-webpack.ts} | 6 +- .../deterministic-debug-ids/build-webpack4.ts | 25 - .../deterministic-debug-ids.test.ts | 15 +- .../disabled-debug-id-injection.test.ts | 12 +- .../disabled-release-injection.test.ts | 8 +- .../dont-mess-up-user-code.test.ts | 8 +- .../{build-webpack5.ts => build-webpack.ts} | 6 +- .../fixtures/errorhandling/build-webpack4.ts | 26 - .../errorhandling/error-no-handler.test.ts | 6 +- .../injection-with-query-param.test.ts | 15 +- .../metadata-injection.test.ts | 9 +- .../fixtures/metadata-injection/setup.ts | 2 +- .../metadata-with-debug-id.test.ts | 9 +- .../fixtures/metadata-with-debug-id/setup.ts | 2 +- .../release-value-with-quotes.test.ts | 9 +- .../release-value-with-quotes/setup.ts | 2 +- packages/integration-tests/package.json | 4 +- .../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/webpack-plugin/package.json | 4 +- packages/webpack-plugin/src/index.ts | 3 - .../webpack-plugin/test/public-api.test.ts | 4 +- packages/webpack-plugin/test/webpack5.test.ts | 4 +- yarn.lock | 2095 +++-------------- 51 files changed, 378 insertions(+), 2278 deletions(-) create mode 100644 .github/dependency-review-config.yml 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/utils/testIf.ts rename packages/playground/{build-webpack5.js => build-webpack.js} (82%) delete mode 100644 packages/playground/build-webpack4.js diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml new file mode 100644 index 000000000000..1fd9ecb9e49c --- /dev/null +++ b/.github/dependency-review-config.yml @@ -0,0 +1,4 @@ +fail-on-severity: "critical" +allow-ghsas: + # If we support webpack v5.0.0, we need to use those types and test that version + - GHSA-hc6q-2mpp-qw7j diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index d32a731eeb3e..953d2b956f04 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -131,17 +131,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [ - # nx uses a `yargs-parser` versision which isn't compatible with node 10 - # "10.24.1", - # vite uses optional chaining which isn't compatible with node 12 - # "12.22.12", - "14", - "16", - "18", - "20", - "22", - ] + node-version: ["18", "20", "22"] os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: diff --git a/README.md b/README.md index df0e6b8ed7fc..5c3cb7f499c5 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Sentry Bundler Plugins -Sentry plugins for various JavaScript bundlers. Currently supporting Rollup, Vite, esbuild, Webpack 4 and Webpack 5. +Sentry plugins for various JavaScript bundlers. Currently supporting Rollup, Vite, esbuild, Webpack 5. Check out the individual packages for more information and examples: diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c21cd238f769..b8d98bccb81b 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -28,7 +28,6 @@ "@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", @@ -37,8 +36,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/utils/bundlers.ts b/packages/e2e-tests/utils/bundlers.ts index 358ebbb13c33..32cea7898b47 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 c66cdd456832..6cda63ac1ec1 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,43 +90,13 @@ 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, entry: entrypoints, output: { - path: path.join(outFolder, "webpack5"), + path: path.join(outFolder, "webpack"), library: { type: "commonjs", }, @@ -137,10 +106,10 @@ export function createCjsBundles( sentryWebpackPlugin({ ...sentryPluginOptions, release: { - name: `${sentryPluginOptions.release.name!}-webpack5`, + name: `${sentryPluginOptions.release.name!}-webpack`, uploadLegacySourcemaps: `${ sentryPluginOptions.release.uploadLegacySourcemaps as string - }/webpack5`, + }/webpack`, }, }), ], 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 0930d47479b0..f45085853c10 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 @@ -2,15 +2,10 @@ /* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; 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); + 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 140a11cbf72c..ef723d4fb881 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 cf0955025f12..7790fa26d8b9 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 @@ -2,15 +2,10 @@ /* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; 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 e28f10b98b1e..acb799e8c2e0 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 85fc09dee743..198d64635de7 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -16,12 +15,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")); + 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 a745efa23e53..72bf9bc2b58e 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 57eb798a7dc3..364fe8c290ff 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; interface BundleOutput { debugIds: Record | undefined; @@ -35,12 +34,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")); + 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 8b33efecfc08..f648e4a9b98c 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 db3bc356f658..9dd9a6c99777 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,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -28,12 +27,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/build-information-injection/build-information-injection.test.ts b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts index e2a0761617ad..7ae4d03255bc 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,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -15,14 +14,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 +37,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/bundle-size-optimizations/bundle-size-optimizations.test.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts index fb7549433bb8..3db34fc26d56 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; const expectedOutputs: Record> = { esbuild: { @@ -24,11 +23,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 +54,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"); + 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 ac7a790e0297..0586dfdd5889 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,6 +1,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; @@ -25,12 +24,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "./out/vite/index.js")); }); -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")); + checkBundle(path.join(__dirname, "./out/webpack/index.js")); }); 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 79417c635343..3c862e3053d3 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,6 +1,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; @@ -25,12 +24,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "./out/vite/index.js")); }); -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")); + checkBundle(path.join(__dirname, "./out/webpack/index.js")); }); 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 c3605db7e722..dc248828be01 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -51,16 +50,9 @@ test("vite bundle", () => { ); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 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 c88b05be9400..fa5dbf0090fd 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 @@ -2,7 +2,6 @@ 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"; function createTempDir() { @@ -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,7 +64,7 @@ describeNode18Plus("vite 6 bundle", () => { }); }); -describeNode18Plus("webpack 5 bundle", () => { +describe("webpack 5 bundle", () => { const webpackRoot = path.join(__dirname, "input", "webpack5"); const tempDir = createTempDir(); @@ -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/webpack.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js index ae1d088210d8..e4beac2ffe95 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/webpack5/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 37bb553d8865..7914e4f4e184 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 e6e60b5cc7c1..000000000000 --- 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 9a557f40390a..e99e23cfe7ce 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 @@ -4,9 +4,6 @@ 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); - function executeAndGetDebugIds(bundlePath: string): string[] { const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); const debugIdMap = JSON.parse(processOutput) as Record; @@ -25,11 +22,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 +44,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 09c22d011394..5d894dc5d2f1 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath1: string, bundlePath2: string) { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -34,17 +33,10 @@ describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () = ); }); - testIfNodeMajorVersionIsLessThan18("webpack 4 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 9586dd202927..7630d8e84db2 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,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -28,12 +27,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/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 bf1c3b2298c1..44f51e06f516 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,5 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; /** * Runs a node file in a seprate process. @@ -29,12 +28,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 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 c2c31a707301..ec0722d3b128 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 46db8686ecd4..000000000000 --- 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 7aaaa82b4c46..7f7918ec9a44 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -27,11 +27,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/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 41d97bfe91d0..ccbda2a45c88 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundleForDebugIds(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -56,19 +55,11 @@ function checkBundleForRelease(bundlePath: string): void { checkBundleForRelease(path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz")); }); - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundleForDebugIds( - path.join(__dirname, "out", "webpack4", "bundle1.js"), - path.join(__dirname, "out", "webpack4", "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") + path.join(__dirname, "out", "webpack", "bundle1.js"), + path.join(__dirname, "out", "webpack", "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 4b08baf133c4..cd1d57d3250d 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -20,12 +19,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 6f7c31d16c99..45a7dcb625cf 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 534397a9422b..53d724908113 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; interface BundleOutput { debugIds: Record | undefined; @@ -34,12 +33,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 75d1fc4bf451..fb65cab60a15 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 509db17c78e5..0ed6ef0d5936 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 @@ -2,7 +2,6 @@ /* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -10,12 +9,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 4782d2843d11..648e7bda6813 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/package.json b/packages/integration-tests/package.json index 5641e6a4bb48..3feb576e8035 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -29,7 +29,6 @@ "@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", @@ -41,8 +40,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" }, "devDependencies": { "premove": "^4.0.0" 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 095784e834e1..631c82defd8e 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, @@ -79,51 +74,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", }, @@ -159,7 +116,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 59b549941112..93f28d444d55 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 631fa2881c7d..ddf714793159 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 8f47bc788d0f..000000000000 --- 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 6f95647f20d1..d201d95997f8 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 089820beb750..000000000000 --- 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 f0be5c569d8b..11317b527826 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.74.0" }, "devDependencies": { "premove": "^4.0.0" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2e623a7d68d1..5de1ef197a7a 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -71,10 +71,10 @@ "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", "typescript": "^4.7.4", - "webpack": "npm:webpack@^4" + "webpack": "5.0.0" }, "peerDependencies": { - "webpack": ">=4.40.0" + "webpack": ">=5.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index a13d9b2b1627..42a567bfacf0 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,7 +1,4 @@ import { SentryWebpackPluginOptions, sentryWebpackPluginFactory } from "./webpack4and5"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore webpack is a peer dep import * as webpack4or5 from "webpack"; const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPlugin; diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index 3340b2f15e7a..380af10780ce 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"; test("Webpack plugin should exist", () => { @@ -12,7 +12,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 09d7df0579d3..79b0c2124a54 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -1,4 +1,4 @@ -import { Plugin } from "webpack"; +import { WebpackPluginInstance } from "webpack"; import { sentryWebpackPlugin } from "../src/webpack5"; jest.mock("webpack", () => { @@ -16,7 +16,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 1df6471ce420..ae407f630aeb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -670,7 +670,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== @@ -1083,6 +1083,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" @@ -1093,6 +1101,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" @@ -1106,6 +1119,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" @@ -1116,6 +1137,11 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + 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" @@ -1132,6 +1158,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" @@ -1297,6 +1331,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" @@ -1354,6 +1396,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" @@ -2301,6 +2351,14 @@ dependencies: "@types/node" "*" +"@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" @@ -2322,6 +2380,11 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@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" @@ -2551,18 +2614,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" @@ -2704,14 +2755,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" @@ -2726,11 +2769,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" @@ -2741,11 +2779,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" @@ -2756,11 +2789,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" @@ -2794,25 +2822,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" @@ -2828,16 +2842,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" @@ -2855,13 +2859,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" @@ -2876,13 +2873,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" @@ -2895,11 +2885,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" @@ -2933,20 +2918,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" @@ -2958,17 +2929,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" @@ -2990,16 +2950,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" @@ -3022,18 +2972,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" @@ -3066,14 +3004,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" @@ -3179,16 +3109,16 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^7.1.1: version "7.4.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" @@ -3223,17 +3153,12 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3289,14 +3214,6 @@ ansi-styles@^6.1.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -3310,11 +3227,6 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" @@ -3348,21 +3260,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -3402,11 +3299,6 @@ array-union@^2.1.0: resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - array.prototype.flatmap@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" @@ -3438,34 +3330,6 @@ arrify@^2.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -async-each@^1.0.1: - version "1.0.6" - resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" - integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== - async@^3.2.3: version "3.2.4" resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -3481,11 +3345,6 @@ at-least-node@^1.0.0: resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -3607,23 +3466,15 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.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" @@ -3645,23 +3496,11 @@ bin-links@^4.0.1: read-cmd-shim "^4.0.0" write-file-atomic "^5.0.0" -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -3671,21 +3510,6 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - body-parser@1.20.1: version "1.20.1" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -3719,22 +3543,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -3742,76 +3550,21 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +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: - pako "~1.0.5" + 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" @@ -3835,20 +3588,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -3870,11 +3609,6 @@ builtin-modules@^3.3.0: resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - builtins@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -3897,26 +3631,29 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== +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: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" + 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 "^2.6.3" - ssri "^6.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" unique-filename "^1.1.1" - y18n "^4.0.0" cacache@^16.1.0: version "16.1.3" @@ -3960,21 +3697,6 @@ cacache@^17.0.0, cacache@^17.0.4: tar "^6.1.11" unique-filename "^3.0.0" -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -4012,6 +3734,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== + chalk@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -4055,26 +3782,7 @@ chardet@^0.7.0: resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1, chokidar@^3.5.1: +chokidar@^3.5.1: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4089,11 +3797,6 @@ chokidar@^3.4.1, chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chownr@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -4114,29 +3817,11 @@ ci-info@^3.2.0, ci-info@^3.6.1: resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -4218,14 +3903,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -4293,26 +3970,11 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -4331,21 +3993,11 @@ config-chain@1.1.12: ini "^1.3.4" proto-list "~1.2.1" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -4465,23 +4117,6 @@ cookie@^0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -4498,37 +4133,6 @@ cosmiconfig@7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -4554,23 +4158,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -4603,11 +4190,6 @@ csstype@^3.0.2: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== - dargs@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -4627,7 +4209,7 @@ dateformat@^3.0.0: resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4659,11 +4241,6 @@ decimal.js@^10.2.1: resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - dedent@0.7.0, dedent@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -4699,28 +4276,6 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - del@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" @@ -4755,14 +4310,6 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -4793,15 +4340,6 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4823,11 +4361,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -4864,16 +4397,6 @@ duplexer@^0.1.1: resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -4896,18 +4419,10 @@ 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== -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +electron-to-chromium@^1.5.263: + version "1.5.286" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" + integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== emittery@^0.10.2: version "0.10.2" @@ -4946,23 +4461,14 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - 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== @@ -4970,6 +4476,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" @@ -4992,13 +4506,6 @@ err-code@^2.0.2: resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -5051,11 +4558,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-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" @@ -5395,6 +4897,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" @@ -5465,7 +4972,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== @@ -5473,14 +4980,6 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-scope@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" @@ -5560,7 +5059,7 @@ esquery@^1.0.1, esquery@^1.4.2: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -5602,19 +5101,11 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" @@ -5665,19 +5156,6 @@ exit@^0.1.2: resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - expect@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" @@ -5736,21 +5214,6 @@ express@^4.18.1: utils-merge "1.0.1" vary "~1.1.2" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -5760,20 +5223,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -5825,11 +5274,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5844,11 +5288,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - file-url@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" @@ -5861,16 +5300,6 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5891,15 +5320,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -5924,13 +5344,6 @@ find-up@^2.0.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5957,14 +5370,6 @@ flatted@^3.1.0: resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@^1.0.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" @@ -5977,11 +5382,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -6013,26 +5413,11 @@ forwarded@0.2.0: resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - fresh@0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -6080,29 +5465,11 @@ fs-minipass@^3.0.0: dependencies: minipass "^5.0.0" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -6221,11 +5588,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - git-raw-commits@^2.0.8: version "2.0.11" resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" @@ -6282,14 +5644,6 @@ glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -6494,37 +5848,6 @@ has-unicode@2.0.1, has-unicode@^2.0.1: resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - has@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -6532,32 +5855,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -6646,11 +5943,6 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -6697,16 +5989,11 @@ identity-obj-proxy@3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - ignore-walk@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" @@ -6757,7 +6044,7 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6770,21 +6057,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - ini@^1.3.2, ini@^1.3.4: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -6864,20 +6141,6 @@ ipaddr.js@1.9.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -6899,13 +6162,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -6921,11 +6177,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-builtin-module@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" @@ -6952,20 +6203,6 @@ is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-mo dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -6973,42 +6210,12 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== @@ -7023,13 +6230,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -7064,13 +6264,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -7096,7 +6289,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -7201,16 +6394,6 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -7218,7 +6401,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -7228,14 +6411,7 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== @@ -7973,6 +7149,15 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" +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: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -8094,7 +7279,7 @@ json-stringify-safe@^5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1, json5@^1.0.2: +json5@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -8148,26 +7333,7 @@ just-diff@^6.0.0: resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -8341,25 +7507,16 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.4.0: - version "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" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.2.3: - version "1.4.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" @@ -8384,14 +7541,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -8479,7 +7628,7 @@ make-dir@3.1.0, make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -8542,11 +7691,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - map-obj@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -8557,43 +7701,11 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -8636,25 +7748,6 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -8663,14 +7756,6 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -8698,16 +7783,6 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@3.0.5: version "3.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -8808,7 +7883,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== @@ -8852,30 +7927,6 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" @@ -8885,13 +7936,6 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -8902,18 +7946,6 @@ modify-values@^1.0.0: resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - mri@^1.1.5: version "1.2.0" resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -8961,33 +7993,11 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: - version "2.17.0" - resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - nanoid@^3.3.6: version "3.3.8" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -9003,7 +8013,7 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9058,40 +8068,16 @@ node-int64@^0.4.0: resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-releases@^2.0.14: version "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" @@ -9146,13 +8132,6 @@ normalize-package-data@^5.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -9428,15 +8407,6 @@ object-assign@^4.1.1: resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -9447,13 +8417,6 @@ object-keys@^1.1.1: resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -9490,13 +8453,6 @@ object.hasown@^1.1.2: define-properties "^1.1.4" es-abstract "^1.20.4" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - object.values@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" @@ -9575,11 +8531,6 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -9624,7 +8575,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -9645,13 +8596,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -9773,20 +8717,6 @@ pacote@^15.0.0, pacote@^15.0.8: ssri "^10.0.0" tar "^6.1.11" -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -9794,17 +8724,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-conflict-json@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" @@ -9856,21 +8775,6 @@ parseurl@~1.3.3: resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -9926,22 +8830,16 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - picocolors@^1.0.0: version "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" @@ -9977,13 +8875,6 @@ pirates@^4.0.4: resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -9991,11 +8882,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - postcss-selector-parser@^6.0.10: version "6.0.13" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" @@ -10163,36 +9049,11 @@ proxy-from-env@^1.1.0: resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - psl@^1.1.33: version "1.9.0" resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -10201,25 +9062,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -10237,16 +9079,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -10262,21 +9094,13 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -10426,19 +9250,6 @@ read@1, read@^1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -10458,14 +9269,18 @@ readable-stream@^4.1.0: events "^3.3.0" process "^0.11.10" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" readdirp@~3.6.0: version "3.6.0" @@ -10482,14 +9297,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexp.prototype.flags@^1.4.3: version "1.5.0" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -10499,21 +9306,6 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.2.0" functions-have-names "^1.2.3" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -10541,11 +9333,6 @@ resolve-from@^4.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - resolve.exports@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" @@ -10582,11 +9369,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -10597,13 +9379,6 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -10618,14 +9393,6 @@ rimraf@^4.4.1: dependencies: glob "^9.2.0" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - rolldown@^1.0.0-rc.4: version "1.0.0-rc.4" resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz#c22246260ab3da62caa209556e26d81fe516cf10" @@ -10674,13 +9441,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - rxjs@^6.5.4: version "6.6.7" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -10695,7 +9455,7 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10714,14 +9474,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10740,15 +9493,6 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" @@ -10758,7 +9502,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== @@ -10817,10 +9570,10 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +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" @@ -10846,34 +9599,11 @@ set-blocking@^2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -10953,36 +9683,6 @@ smart-buffer@^4.2.0: resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -11007,7 +9707,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== @@ -11017,17 +9717,6 @@ 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-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - 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" @@ -11036,7 +9725,7 @@ source-map-support@0.5.13: 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: +source-map-support@^0.5.6, 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" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -11044,16 +9733,6 @@ source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.2 buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -11090,13 +9769,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - split2@^3.0.0: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -11130,12 +9802,12 @@ ssri@^10.0.0, ssri@^10.0.1: dependencies: minipass "^5.0.0" -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: - figgy-pudding "^3.5.1" + minipass "^3.1.1" stack-utils@^2.0.3: version "2.0.6" @@ -11144,51 +9816,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -11274,7 +9906,7 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -11384,10 +10016,10 @@ symbol-tree@^3.2.4: resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^1.0.0, tapable@^1.1.3: - version "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" @@ -11417,6 +10049,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" @@ -11458,22 +10102,22 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== +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 "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" + 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 "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^5.3.4" + webpack-sources "^1.4.3" -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.7: +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== @@ -11484,15 +10128,6 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.7: serialize-javascript "^6.0.1" terser "^5.16.8" -terser@^4.1.2: - version "4.8.1" - resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@^5.16.8: version "5.17.5" resolved "https://registry.npmjs.org/terser/-/terser-5.17.5.tgz#557141b662b5978ac3d6a2f3d6455a26267ddcd4" @@ -11503,6 +10138,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" @@ -11547,13 +10192,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - tinypool@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/tinypool/-/tinypool-2.1.0.tgz#303a671d6ef68d03c9512cdc9a47c86b8a85f20c" @@ -11578,31 +10216,11 @@ tmpl@1.0.5: resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -11610,16 +10228,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -11712,11 +10320,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - tuf-js@^1.1.3: version "1.1.6" resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.6.tgz#ad3e7a20237b83b51c2a8f9d1ddf093279a10fc2" @@ -11839,16 +10442,6 @@ undici-types@~6.21.0: resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -11918,24 +10511,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - upath@2.0.1, upath@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -11944,6 +10524,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" @@ -11951,11 +10539,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - url-parse@^1.5.3: version "1.5.10" resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -11964,38 +10547,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@0.10.3: - version "0.10.3" - resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -12085,11 +10641,6 @@ vite@3.0.0: optionalDependencies: fsevents "~2.3.2" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -12116,23 +10667,13 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +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" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" watchpack@^2.4.0: version "2.4.0" @@ -12164,7 +10705,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.3: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12172,71 +10713,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== @@ -12266,35 +10786,6 @@ webpack-sources@^3.2.3: watchpack "^2.4.0" webpack-sources "^3.2.3" -"webpack@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== - dependencies: - "@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" - 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" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -12385,13 +10876,6 @@ wordwrap@^1.0.0: resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -12503,16 +10987,11 @@ xmlchars@^2.2.0: resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@~4.0.1: +xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From 8781545574906787eb9e54af37fcbe2655489ea2 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 23 Feb 2026 03:43:09 -0800 Subject: [PATCH 592/640] chore!: updating minimatch (#885) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: updating minimatch (#885) Add minimatch@10.2.2 dev dep in the root to push outdated versions into duplicates, and local packages were updated to use minimatch v10. The following packages depend on minimatch v3: - @eslint/eslintrc - @humanwhocodes/config-array - @jest/core - copy-concurrently - eslint - eslint-plugin-react - jest-circus - jest-config - jest-runner - move-concurrently - rimraf - terser-webpack-plugin - test-exclude Finally, `@rollup/plugin-commonjs` depends on minimatch 5.1.6. A fix will be backported to resolve the ReDOS on v3 and v5, which can then be updated here. * Bump balanced-match in lockfile to 4.0.4 * Bump minimatch v3 and v5 usages * Bump minimatch and brace-expansion in lockfile to patched versions - minimatch 3.1.2 → 3.1.3 - minimatch 5.1.6 → 5.1.7 - brace-expansion 5.0.2 → 5.0.3 --------- Co-authored-by: Andrei Borza --- package.json | 3 +- packages/bundler-plugin-core/package.json | 2 +- packages/e2e-tests/package.json | 3 +- yarn.lock | 84 ++++++++++++++--------- 4 files changed, 57 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 36b234076370..5755d369a734 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,11 @@ "@nrwl/cli": "14.5.10", "@nrwl/workspace": "14.5.10", "lerna": "^6.6.2", + "minimatch": "^10.2.2", + "npm-run-all": "^4.1.5", "nx": "14.5.10", "oxfmt": "^0.33.0", "pretty-quick": "^3.1.3", - "npm-run-all": "^4.1.5", "ts-node": "^10.9.2" }, "volta": { diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3f90e2231fc9..bd4878b7970c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -59,7 +59,7 @@ "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", - "glob": "^10.5.0", + "glob": "^13.0.6", "magic-string": "0.30.8" }, "devDependencies": { diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index b8d98bccb81b..ed466da8aa7a 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -26,11 +26,10 @@ "@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", "esbuild": "0.14.49", "eslint": "^8.18.0", - "glob": "8.0.3", + "glob": "^13.0.6", "jest": "^28.1.3", "premove": "^4.0.0", "rollup": "3.2.0", diff --git a/yarn.lock b/yarn.lock index ae407f630aeb..abba9271c143 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2410,14 +2410,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" - integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": version "4.1.6" resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" @@ -2479,11 +2471,6 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -3466,6 +3453,11 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3543,6 +3535,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +brace-expansion@^5.0.2: + version "5.0.3" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz#6a9c6c268f85b53959ec527aeafe0f7300258eef" + integrity sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA== + dependencies: + balanced-match "^4.0.2" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -5668,18 +5667,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@8.0.3: - version "8.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@^10.2.2, glob@^10.5.0: +glob@^10.2.2: version "10.5.0" resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== @@ -5691,6 +5679,15 @@ glob@^10.2.2, glob@^10.5.0: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" +glob@^13.0.6: + version "13.0.6" + resolved "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" + integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== + dependencies: + minimatch "^10.2.2" + minipass "^7.1.3" + path-scurry "^2.0.2" + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -7590,6 +7587,11 @@ lru-cache@^10.2.0: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== +lru-cache@^11.0.0: + version "11.2.6" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58" + integrity sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7790,17 +7792,24 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@^10.2.2: + version "10.2.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" + integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== + dependencies: + brace-expansion "^5.0.2" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + version "3.1.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624" + integrity sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + version "5.1.7" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz#9bce540b26998f278d34784a3dd25d96f5054d6d" + integrity sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA== dependencies: brace-expansion "^2.0.1" @@ -7919,6 +7928,11 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^7.1.3: + version "7.1.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -8813,6 +8827,14 @@ path-scurry@^1.11.1, path-scurry@^1.6.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" From 6263272f1eb49748983950e4b2ba97fffc8c6ea7 Mon Sep 17 00:00:00 2001 From: andreiborza <168741329+andreiborza@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:52:58 +0000 Subject: [PATCH 593/640] release: 5.0.0 --- CHANGELOG.md | 21 +++++++++++++++++++ lerna.json | 2 +- .../package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 +++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 ++++++------- packages/esbuild-plugin/package.json | 8 +++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 +++++++------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 +++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 ++++----- packages/webpack-plugin/package.json | 8 +++---- 14 files changed, 66 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ae118c3f6cd..b255a62b77bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 5.0.0 + +### Breaking Changes 🛠 + +- Updating minimatch by @isaacs in [#885](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/885) +- Remove support for Node < v18 and webpack v4 by @timfish in [#886](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/886) + +### Bug Fixes 🐛 + +- (webpack) Deduplicate webpack deploys by @chargome in [#875](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/875) + +### Internal Changes 🔧 + +- Avoid direct usage of glob, extract into `globFiles` helper by @andreiborza in [#883](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/883) +- Migrate to oxfmt by @timfish in [#880](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/880) +- Build with Rolldown by @timfish in [#872](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/872) +- Remove unplugin by @timfish in [#876](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/876) +- Rollup/Vite no longer uses unplugin by @timfish in [#858](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/858) +- Esbuild no longer uses unplugin by @timfish in [#871](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/871) +- Webpack no longer uses unplugin by @timfish in [#870](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/870) + ## 4.9.1 ### New Features ✨ diff --git a/lerna.json b/lerna.json index a8d5c562c74a..9fbc16c09f8f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "4.9.1", + "version": "5.0.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 59d9a52007b5..aedff9aaca8a 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "4.9.1", + "version": "5.0.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -52,8 +52,8 @@ "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bd4878b7970c..a74a44bd85d0 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "4.9.1", + "version": "5.0.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.9.1", + "@sentry/babel-plugin-component-annotate": "5.0.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 31ecc1c97736..4f0d849331d1 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index ed466da8aa7a..380866fbf2a5 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "4.9.1", - "@sentry/rollup-plugin": "4.9.1", - "@sentry/vite-plugin": "4.9.1", - "@sentry/webpack-plugin": "4.9.1", + "@sentry/esbuild-plugin": "5.0.0", + "@sentry/rollup-plugin": "5.0.0", + "@sentry/vite-plugin": "5.0.0", + "@sentry/webpack-plugin": "5.0.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/jest": "^28.1.3", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 9e47ed3b6115..8efd6357f0c4 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "4.9.1", + "version": "5.0.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.1", + "@sentry/bundler-plugin-core": "5.0.0", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 71c499ff902a..54e21cd40bd4 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3feb576e8035..a1c2c8b758a7 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", - "@sentry/bundler-plugin-core": "4.9.1", - "@sentry/esbuild-plugin": "4.9.1", - "@sentry/rollup-plugin": "4.9.1", - "@sentry/vite-plugin": "4.9.1", - "@sentry/webpack-plugin": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/esbuild-plugin": "5.0.0", + "@sentry/rollup-plugin": "5.0.0", + "@sentry/vite-plugin": "5.0.0", + "@sentry/webpack-plugin": "5.0.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 11317b527826..dd881b0f365f 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.1", + "@sentry/bundler-plugin-core": "5.0.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 9b84a0a74e4a..eef47c9dd24f 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "4.9.1", + "version": "5.0.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,15 +49,15 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.1", + "@sentry/bundler-plugin-core": "5.0.0", "magic-string": "0.30.8" }, "peerDependencies": { "rollup": ">=3.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index eab9f503579f..5475f80124a7 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "4.9.1", + "version": "5.0.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 39f778350717..0b3b41ea0ebf 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "4.9.1", + "version": "5.0.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.1", - "@sentry/rollup-plugin": "4.9.1" + "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/rollup-plugin": "5.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 5de1ef197a7a..327c69dc5db5 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "4.9.1", + "version": "5.0.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,12 +53,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "4.9.1", + "@sentry/bundler-plugin-core": "5.0.0", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "4.9.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", + "@sentry-internal/eslint-config": "5.0.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 6c8364869d920cbd415e47a53f4ebc014b90e546 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:08:19 +0100 Subject: [PATCH 594/640] feat: Bump @sentry/cli from 2.57.0 to 2.58.5 (#890) --- packages/bundler-plugin-core/package.json | 2 +- yarn.lock | 104 +++++++++++----------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a74a44bd85d0..e4e5f90a1e1a 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -56,7 +56,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "5.0.0", - "@sentry/cli": "^2.57.0", + "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^13.0.6", diff --git a/yarn.lock b/yarn.lock index abba9271c143..eb84759f71aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2010,50 +2010,50 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/cli-darwin@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.57.0.tgz#1aaf0c72573926082ed281aef1d42edc40a1baca" - integrity sha512-v1wYQU3BcCO+Z3OVxxO+EnaW4oQhuOza6CXeYZ0z5ftza9r0QQBLz3bcZKTVta86xraNm0z8GDlREwinyddOxQ== - -"@sentry/cli-linux-arm64@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.57.0.tgz#9d923b92e86597d03f0fa52c9b3f71faca810390" - integrity sha512-Kh1jTsMV5Fy/RvB381N/woXe1qclRMqsG6kM3Gq6m6afEF/+k3PyQdNW3HXAola6d63EptokLtxPG2xjWQ+w9Q== - -"@sentry/cli-linux-arm@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.57.0.tgz#98ec9ef22a18bc42eb903c46ca05190cad993597" - integrity sha512-uNHB8xyygqfMd1/6tFzl9NUkuVefg7jdZtM/vVCQVaF/rJLWZ++Wms+LLhYyKXKN8yd7J9wy7kTEl4Qu4jWbGQ== - -"@sentry/cli-linux-i686@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.57.0.tgz#d374072ccfcffb1d75f35b2dfb32279c33f6ccf6" - integrity sha512-EYXghoK/tKd0zqz+KD/ewXXE3u1HLCwG89krweveytBy/qw7M5z58eFvw+iGb1Vnbl1f/fRD0G4E0AbEsPfmpg== - -"@sentry/cli-linux-x64@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.57.0.tgz#6c46d95f0eb86f9dd154c05df3edfc129df354ee" - integrity sha512-CyZrP/ssHmAPLSzfd4ydy7icDnwmDD6o3QjhkWwVFmCd+9slSBMQxpIqpamZmrWE6X4R+xBRbSUjmdoJoZ5yMw== - -"@sentry/cli-win32-arm64@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.57.0.tgz#4c9019c6cdab327e4f7cf4382f13fd770cc17a11" - integrity sha512-wji/GGE4Lh5I/dNCsuVbg6fRvttvZRG6db1yPW1BSvQRh8DdnVy1CVp+HMqSq0SRy/S4z60j2u+m4yXMoCL+5g== - -"@sentry/cli-win32-i686@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.57.0.tgz#e01b0021f8ee6cb59b34cfd04cc74b13110d2e48" - integrity sha512-hWvzyD7bTPh3b55qvJ1Okg3Wbl0Km8xcL6KvS7gfBl6uss+I6RldmQTP0gJKdHSdf/QlJN1FK0b7bLnCB3wHsg== - -"@sentry/cli-win32-x64@2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.57.0.tgz#ed4f0f8563507e503553fe84796dcb9323332814" - integrity sha512-QWYV/Y0sbpDSTyA4XQBOTaid4a6H2Iwa1Z8UI+qNxFlk0ADSEgIqo2NrRHDU8iRnghTkecQNX1NTt/7mXN3f/A== - -"@sentry/cli@^2.57.0": - version "2.57.0" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.57.0.tgz#55c7c826bcc1f6c67cb2fc087bdf4e6facb523b5" - integrity sha512-oC4HPrVIX06GvUTgK0i+WbNgIA9Zl5YEcwf9N4eWFJJmjonr2j4SML9Hn2yNENbUWDgwepy4MLod3P8rM4bk/w== +"@sentry/cli-darwin@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.5.tgz#ea9c4ab41161f15c636d0d2dcf126202cb49a588" + integrity sha512-lYrNzenZFJftfwSya7gwrHGxtE+Kob/e1sr9lmHMFOd4utDlmq0XFDllmdZAMf21fxcPRI1GL28ejZ3bId01fQ== + +"@sentry/cli-linux-arm64@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.5.tgz#38e866ee11ca88f6fb2164a6afd6cff4156b33d4" + integrity sha512-/4gywFeBqRB6tR/iGMRAJ3HRqY6Z7Yp4l8ZCbl0TDLAfHNxu7schEw4tSnm2/Hh9eNMiOVy4z58uzAWlZXAYBQ== + +"@sentry/cli-linux-arm@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.5.tgz#12da36dd10166c09275b8a91366ad0906a8482fd" + integrity sha512-KtHweSIomYL4WVDrBrYSYJricKAAzxUgX86kc6OnlikbyOhoK6Fy8Vs6vwd52P6dvWPjgrMpUYjW2M5pYXQDUw== + +"@sentry/cli-linux-i686@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.5.tgz#9434360fb67fee3028886de2b143fbed93c627ac" + integrity sha512-G7261dkmyxqlMdyvyP06b+RTIVzp1gZNgglj5UksxSouSUqRd/46W/2pQeOMPhloDYo9yLtCN2YFb3Mw4aUsWw== + +"@sentry/cli-linux-x64@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.5.tgz#405d1740dd2774d7f139e217f628d11e7446fd04" + integrity sha512-rP04494RSmt86xChkQ+ecBNRYSPbyXc4u0IA7R7N1pSLCyO74e5w5Al+LnAq35cMfVbZgz5Sm0iGLjyiUu4I1g== + +"@sentry/cli-win32-arm64@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.5.tgz#0807783f9fa67b32703154533c31c09355149d3c" + integrity sha512-AOJ2nCXlQL1KBaCzv38m3i2VmSHNurUpm7xVKd6yAHX+ZoVBI8VT0EgvwmtJR2TY2N2hNCC7UrgRmdUsQ152bA== + +"@sentry/cli-win32-i686@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.5.tgz#79586eab70341ebde3bbcb0be6d436da3840ef64" + integrity sha512-EsuboLSOnlrN7MMPJ1eFvfMDm+BnzOaSWl8eYhNo8W/BIrmNgpRUdBwnWn9Q2UOjJj5ZopukmsiMYtU/D7ml9g== + +"@sentry/cli-win32-x64@2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.5.tgz#4937c0821abfd346da50a3cf1ecbd752f75f8ef4" + integrity sha512-IZf+XIMiQwj+5NzqbOQfywlOitmCV424Vtf9c+ep61AaVScUFD1TSrQbOcJJv5xGxhlxNOMNgMeZhdexdzrKZg== + +"@sentry/cli@^2.58.5": + version "2.58.5" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.5.tgz#160a89235ba2add4c198f666d8c14547a1459ae8" + integrity sha512-tavJ7yGUZV+z3Ct2/ZB6mg339i08sAk6HDkgqmSRuQEu2iLS5sl9HIvuXfM6xjv8fwlgFOSy++WNABNAcGHUbg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2061,14 +2061,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.57.0" - "@sentry/cli-linux-arm" "2.57.0" - "@sentry/cli-linux-arm64" "2.57.0" - "@sentry/cli-linux-i686" "2.57.0" - "@sentry/cli-linux-x64" "2.57.0" - "@sentry/cli-win32-arm64" "2.57.0" - "@sentry/cli-win32-i686" "2.57.0" - "@sentry/cli-win32-x64" "2.57.0" + "@sentry/cli-darwin" "2.58.5" + "@sentry/cli-linux-arm" "2.58.5" + "@sentry/cli-linux-arm64" "2.58.5" + "@sentry/cli-linux-i686" "2.58.5" + "@sentry/cli-linux-x64" "2.58.5" + "@sentry/cli-win32-arm64" "2.58.5" + "@sentry/cli-win32-i686" "2.58.5" + "@sentry/cli-win32-x64" "2.58.5" "@sentry/core@7.50.0": version "7.50.0" From c32e26be523645da76bbc3a71689570d442bb9b0 Mon Sep 17 00:00:00 2001 From: andreiborza <168741329+andreiborza@users.noreply.github.com> Date: Tue, 24 Feb 2026 09:09:34 +0000 Subject: [PATCH 595/640] release: 5.1.0 --- CHANGELOG.md | 6 ++++++ lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 +++++----- packages/webpack-plugin/package.json | 8 ++++---- 14 files changed, 51 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b255a62b77bc..074a0a71c702 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 5.1.0 + +### New Features ✨ + +- Bump @sentry/cli from 2.57.0 to 2.58.5 by @andreiborza in [#890](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/890) + ## 5.0.0 ### Breaking Changes 🛠 diff --git a/lerna.json b/lerna.json index 9fbc16c09f8f..e890a35970d8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "5.0.0", + "version": "5.1.0", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index aedff9aaca8a..2042e75e7913 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "5.0.0", + "version": "5.1.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -52,8 +52,8 @@ "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index e4e5f90a1e1a..44257c8c0fa9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "5.0.0", + "version": "5.1.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.0.0", + "@sentry/babel-plugin-component-annotate": "5.1.0", "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 4f0d849331d1..cfb91d3cac43 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 380866fbf2a5..00996700d957 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "5.0.0", - "@sentry/rollup-plugin": "5.0.0", - "@sentry/vite-plugin": "5.0.0", - "@sentry/webpack-plugin": "5.0.0", + "@sentry/esbuild-plugin": "5.1.0", + "@sentry/rollup-plugin": "5.1.0", + "@sentry/vite-plugin": "5.1.0", + "@sentry/webpack-plugin": "5.1.0", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/jest": "^28.1.3", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 8efd6357f0c4..11d44e035d10 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "5.0.0", + "version": "5.1.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/bundler-plugin-core": "5.1.0", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 54e21cd40bd4..4b7210da3374 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index a1c2c8b758a7..8cd2eab44002 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", - "@sentry/bundler-plugin-core": "5.0.0", - "@sentry/esbuild-plugin": "5.0.0", - "@sentry/rollup-plugin": "5.0.0", - "@sentry/vite-plugin": "5.0.0", - "@sentry/webpack-plugin": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/esbuild-plugin": "5.1.0", + "@sentry/rollup-plugin": "5.1.0", + "@sentry/vite-plugin": "5.1.0", + "@sentry/webpack-plugin": "5.1.0", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index dd881b0f365f..b14d982e6d84 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/bundler-plugin-core": "5.1.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index eef47c9dd24f..3f1e850ae084 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "5.0.0", + "version": "5.1.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,15 +49,15 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/bundler-plugin-core": "5.1.0", "magic-string": "0.30.8" }, "peerDependencies": { "rollup": ">=3.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 5475f80124a7..fd75ea8dcf2b 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 0b3b41ea0ebf..890e69d9ea4c 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "5.0.0", + "version": "5.1.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.0.0", - "@sentry/rollup-plugin": "5.0.0" + "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/rollup-plugin": "5.1.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 327c69dc5db5..245ee3fe640d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "5.0.0", + "version": "5.1.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,12 +53,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.0.0", + "@sentry/bundler-plugin-core": "5.1.0", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.0.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.0.0", + "@sentry-internal/eslint-config": "5.1.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From 635b5843d3a7b6f86d221ded189353baa2913aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Peer=20St=C3=B6cklmair?= Date: Thu, 26 Feb 2026 08:57:55 +0100 Subject: [PATCH 596/640] chore: Use version range for magic-string (#891) --- packages/bundler-plugin-core/package.json | 2 +- packages/rollup-plugin/package.json | 2 +- yarn.lock | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 44257c8c0fa9..262b2eb3d3fb 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -60,7 +60,7 @@ "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^13.0.6", - "magic-string": "0.30.8" + "magic-string": "~0.30.8" }, "devDependencies": { "@sentry-internal/eslint-config": "5.1.0", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 3f1e850ae084..3f2144a707cd 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -50,7 +50,7 @@ }, "dependencies": { "@sentry/bundler-plugin-core": "5.1.0", - "magic-string": "0.30.8" + "magic-string": "~0.30.8" }, "peerDependencies": { "rollup": ">=3.2.0" diff --git a/yarn.lock b/yarn.lock index eb84759f71aa..10248adeb8a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1137,7 +1137,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": +"@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== @@ -7616,12 +7616,12 @@ lru_map@^0.3.3: resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@0.30.8, magic-string@^0.30.3: - version "0.30.8" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" - integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== +magic-string@^0.30.3, magic-string@~0.30.8: + 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.4.15" + "@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" From 16275643a96c2da8bc7e24df98f402e8311ac7d6 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 26 Feb 2026 09:07:45 +0000 Subject: [PATCH 597/640] fix: Align `engines` with Node support (#893) --- packages/babel-plugin-component-annotate/package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- packages/esbuild-plugin/package.json | 2 +- packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 2042e75e7913..e7dd51d8a886 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -70,6 +70,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" } } diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 262b2eb3d3fb..db51d551bd8c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -82,7 +82,7 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "sideEffects": [ "./sentry-release-injection-file.js", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 11d44e035d10..7e2c0d69a0d4 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -70,6 +70,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" } } diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 3f2144a707cd..700abc0b6879 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -73,6 +73,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" } } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 890e69d9ea4c..c675a965b951 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -69,6 +69,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" } } diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 245ee3fe640d..01513449f4da 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -80,6 +80,6 @@ "extends": "../../package.json" }, "engines": { - "node": ">= 14" + "node": ">= 18" } } From b0a97c7e98b98b6d1477396e732a35c9b97904bb Mon Sep 17 00:00:00 2001 From: timfish <1150298+timfish@users.noreply.github.com> Date: Thu, 26 Feb 2026 11:00:29 +0000 Subject: [PATCH 598/640] release: 5.1.1 --- CHANGELOG.md | 10 ++++++++++ lerna.json | 2 +- .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++++------- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 +++++----- packages/webpack-plugin/package.json | 8 ++++---- 14 files changed, 55 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 074a0a71c702..34aad1b08714 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 5.1.1 + +### Bug Fixes 🐛 + +- Align `engines` with Node support by @timfish in [#893](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/893) + +### Internal Changes 🔧 + +- Use version range for magic-string by @JPeer264 in [#891](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/891) + ## 5.1.0 ### New Features ✨ diff --git a/lerna.json b/lerna.json index e890a35970d8..cab871e8244a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "5.1.0", + "version": "5.1.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e7dd51d8a886..a12c957708d3 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "5.1.0", + "version": "5.1.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -52,8 +52,8 @@ "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index db51d551bd8c..136fcf68e07b 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "5.1.0", + "version": "5.1.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.1.0", + "@sentry/babel-plugin-component-annotate": "5.1.1", "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index cfb91d3cac43..80a023fff8ec 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 00996700d957..bdb1f321f68a 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "5.1.0", - "@sentry/rollup-plugin": "5.1.0", - "@sentry/vite-plugin": "5.1.0", - "@sentry/webpack-plugin": "5.1.0", + "@sentry/esbuild-plugin": "5.1.1", + "@sentry/rollup-plugin": "5.1.1", + "@sentry/vite-plugin": "5.1.1", + "@sentry/webpack-plugin": "5.1.1", "axios": "^1.1.3" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/jest": "^28.1.3", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 7e2c0d69a0d4..687290b4dbf2 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "5.1.0", + "version": "5.1.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/bundler-plugin-core": "5.1.1", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 4b7210da3374..c51472e0b569 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 8cd2eab44002..af66ad385c8c 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@sentry/bundler-plugin-core": "5.1.0", - "@sentry/esbuild-plugin": "5.1.0", - "@sentry/rollup-plugin": "5.1.0", - "@sentry/vite-plugin": "5.1.0", - "@sentry/webpack-plugin": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry/bundler-plugin-core": "5.1.1", + "@sentry/esbuild-plugin": "5.1.1", + "@sentry/rollup-plugin": "5.1.1", + "@sentry/vite-plugin": "5.1.1", + "@sentry/webpack-plugin": "5.1.1", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", "@types/react": "^18.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index b14d982e6d84..b0f4bd49bd53 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/bundler-plugin-core": "5.1.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 700abc0b6879..6d70b44cb9fc 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "5.1.0", + "version": "5.1.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,15 +49,15 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/bundler-plugin-core": "5.1.1", "magic-string": "~0.30.8" }, "peerDependencies": { "rollup": ">=3.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index fd75ea8dcf2b..91ebe370b2ce 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c675a965b951..f13a62fa1986 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "5.1.0", + "version": "5.1.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.0", - "@sentry/rollup-plugin": "5.1.0" + "@sentry/bundler-plugin-core": "5.1.1", + "@sentry/rollup-plugin": "5.1.1" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 01513449f4da..a05762db39db 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "5.1.0", + "version": "5.1.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,12 +53,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.0", + "@sentry/bundler-plugin-core": "5.1.1", "uuid": "^9.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", "@swc/core": "^1.2.205", "@swc/jest": "^0.2.21", "@types/jest": "^28.1.3", From ad180c30c1076571c5024b6550981b09c981ac8b Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 26 Feb 2026 12:26:20 +0000 Subject: [PATCH 599/640] feat: use `crypto.randomUUID` rather than `uuid` (#892) --- packages/babel-plugin-component-annotate/package.json | 1 - packages/esbuild-plugin/jest.config.js | 3 --- packages/esbuild-plugin/package.json | 4 +--- packages/esbuild-plugin/src/index.ts | 6 +++--- packages/webpack-plugin/jest.config.js | 3 --- packages/webpack-plugin/package.json | 4 +--- packages/webpack-plugin/src/webpack4and5.ts | 4 ++-- yarn.lock | 10 ---------- 8 files changed, 7 insertions(+), 28 deletions(-) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a12c957708d3..0e76f6d4fab1 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -58,7 +58,6 @@ "@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", "premove": "^4.0.0", diff --git a/packages/esbuild-plugin/jest.config.js b/packages/esbuild-plugin/jest.config.js index a04cbd13b5c1..160178bbd22f 100644 --- a/packages/esbuild-plugin/jest.config.js +++ b/packages/esbuild-plugin/jest.config.js @@ -3,7 +3,4 @@ module.exports = { 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 687290b4dbf2..ea8bdd6c546d 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -48,8 +48,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1", - "uuid": "^9.0.0" + "@sentry/bundler-plugin-core": "5.1.1" }, "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", @@ -58,7 +57,6 @@ "@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", "premove": "^4.0.0", diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index d1c731604eef..965bc90410b1 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -9,7 +9,7 @@ import { } from "@sentry/bundler-plugin-core"; import * as path from "node:path"; import { createRequire } from "node:module"; -import { v4 as uuidv4 } from "uuid"; +import { randomUUID } from "node:crypto"; interface EsbuildOnResolveArgs { path: string; @@ -268,7 +268,7 @@ export function sentryEsbuildPlugin(userOptions: Options = {}): any { sideEffects: true, pluginName, namespace: "sentry-debug-id-stub", - suffix: "?sentry-module-id=" + uuidv4(), + suffix: "?sentry-module-id=" + randomUUID(), }; }); @@ -278,7 +278,7 @@ export function sentryEsbuildPlugin(userOptions: Options = {}): any { return { loader: "js", pluginName, - contents: getDebugIdSnippet(uuidv4()).code(), + contents: getDebugIdSnippet(randomUUID()).code(), }; } ); diff --git a/packages/webpack-plugin/jest.config.js b/packages/webpack-plugin/jest.config.js index a04cbd13b5c1..160178bbd22f 100644 --- a/packages/webpack-plugin/jest.config.js +++ b/packages/webpack-plugin/jest.config.js @@ -3,7 +3,4 @@ module.exports = { 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 a05762db39db..407ce5a14aa7 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -53,8 +53,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1", - "uuid": "^9.0.0" + "@sentry/bundler-plugin-core": "5.1.1" }, "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", @@ -63,7 +62,6 @@ "@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", diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index 4b75a103d4de..cd6ee3c3a649 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -12,7 +12,7 @@ import { import * as path from "node:path"; import { fileURLToPath } from "node:url"; import { createRequire } from "node:module"; -import { v4 as uuidv4 } from "uuid"; +import { randomUUID } from "node:crypto"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore Rollup transpiles import.meta for us for CJS @@ -240,7 +240,7 @@ export function sentryWebpackPluginFactory({ const codeToInject = staticInjectionCode.clone(); if (sourcemapsEnabled) { const hash = arg?.chunk?.contentHash?.javascript ?? arg?.chunk?.hash; - const debugId = hash ? stringToUUID(hash) : uuidv4(); + const debugId = hash ? stringToUUID(hash) : randomUUID(); codeToInject.append(getDebugIdSnippet(debugId)); } return codeToInject.code(); diff --git a/yarn.lock b/yarn.lock index 10248adeb8a9..4bd0ff4d3c81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2587,11 +2587,6 @@ dependencies: source-map "^0.6.1" -"@types/uuid@^9.0.1": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz#98586dc36aee8dacc98cc396dbca8d0429647aa6" - integrity sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA== - "@types/webpack-sources@*": version "3.2.0" resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" @@ -10584,11 +10579,6 @@ uuid@8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" From f551c705b3166851d79f5adf4734be89061e7da8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 26 Feb 2026 12:44:28 +0000 Subject: [PATCH 600/640] test: Migrate to Vitest (#894) --- .github/workflows/checks.yml | 16 +- .../.eslintrc.js | 11 +- .../jest.config.js | 6 - .../package.json | 7 +- .../__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 | 10 +- packages/bundler-plugin-core/jest.config.js | 9 - packages/bundler-plugin-core/package.json | 7 +- .../test/__snapshots__/utils.test.ts.snap | 10 +- .../test/build-plugin-manager.test.ts | 96 +- .../bundler-plugin-core/test/glob.test.ts | 1 + .../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 | 17 +- packages/e2e-tests/README.md | 4 +- packages/e2e-tests/jest.config.js | 6 - packages/e2e-tests/package.json | 9 +- .../__snapshots__/basic-upload.test.ts.snap | 28 +- .../basic-upload/basic-upload.test.ts | 1 + packages/e2e-tests/tsconfig.json | 2 +- .../e2e-tests/utils/create-cjs-bundles.ts | 2 +- packages/esbuild-plugin/.eslintrc.js | 11 +- packages/esbuild-plugin/jest.config.js | 6 - packages/esbuild-plugin/package.json | 7 +- .../esbuild-plugin/test/public-api.test.ts | 1 + packages/esbuild-plugin/test/tsconfig.json | 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 | 5 +- .../after-upload-deletion.test.ts | 3 +- .../metadata-injection.test.ts | 5 +- .../application-key-with-debug-id.test.ts | 5 +- .../basic-release-injection.test.ts | 3 +- .../build-information-injection.test.ts | 1 + .../bundle-size-optimizations.test.ts | 5 +- ...mponent-name-annotate-experimental.test.ts | 19 +- .../component-name-annotate.test.ts | 19 +- .../debug-id-injection.test.ts | 5 +- .../debug-ids-already-injected.test.ts | 18 +- .../input/{webpack5 => webpack}/package.json | 0 .../{webpack5 => webpack}/webpack.config.js | 0 .../deterministic-debug-ids/build-vite.ts | 2 +- .../deterministic-debug-ids.test.ts | 3 +- .../disabled-debug-id-injection.test.ts | 5 +- .../disabled-release-injection.test.ts | 3 +- .../dont-mess-up-user-code.test.ts | 3 +- .../fixtures/errorhandling/build-vite.ts | 2 +- .../errorhandling/error-no-handler.test.ts | 19 +- .../esbuild-inject-compat.test.ts | 1 + .../injection-with-query-param.test.ts | 5 +- .../metadata-injection.test.ts | 3 +- .../metadata-with-debug-id.test.ts | 3 +- .../release-value-with-quotes.test.ts | 3 +- .../fixtures/telemetry/telemetry.test.ts | 5 +- .../build-vite-with-plugin.ts | 2 +- .../vite-mpa-extra-modules.test.ts | 1 + packages/integration-tests/jest.config.js | 7 - packages/integration-tests/package.json | 8 +- packages/integration-tests/tsconfig.json | 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 | 11 +- packages/rollup-plugin/jest.config.js | 6 - packages/rollup-plugin/package.json | 7 +- .../__snapshots__/public-api.test.ts.snap | 11 + .../rollup-plugin/test/public-api.test.ts | 25 +- packages/rollup-plugin/test/tsconfig.json | 2 +- packages/vite-plugin/.eslintrc.js | 11 +- packages/vite-plugin/jest.config.js | 6 - packages/vite-plugin/package.json | 7 +- 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 | 11 +- packages/webpack-plugin/jest.config.js | 6 - packages/webpack-plugin/package.json | 7 +- .../webpack-plugin/test/public-api.test.ts | 1 + packages/webpack-plugin/test/tsconfig.json | 2 +- packages/webpack-plugin/test/webpack5.test.ts | 7 +- yarn.lock | 1375 +++++++---------- 92 files changed, 1208 insertions(+), 1564 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/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 (100%) delete mode 100644 packages/integration-tests/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 953d2b956f04..5d734ca4a429 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: @@ -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: @@ -144,7 +144,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: @@ -182,7 +182,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: @@ -214,7 +214,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 21c383c62724..e616bbf586ba 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"], + extends: ["@sentry-internal/eslint-config/base"], + 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 160178bbd22f..000000000000 --- 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 0e76f6d4fab1..e38e2222250f 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": { @@ -54,12 +54,9 @@ "@babel/preset-react": "^7.23.3", "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.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/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 8a2951dca0a8..5d626df16274 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 2f2fa189ad76..121582fff165 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 a453da779e81..cb9b61eb4865 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 b73d9b533da9..b2d8716fb980 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 50041aab010e..3bd3df603054 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -1,13 +1,10 @@ -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", - "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 5c3aa9d44500..000000000000 --- 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 136fcf68e07b..db6b7e6505da 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" }, @@ -68,12 +68,9 @@ "@sentry/core": "8.30.0", "@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 c691de25c29a..e35bb4f57a37 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 04967c4cb1fb..f5b7b476fde9 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 { globFiles } from "../src/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("../src/glob"); -jest.mock("../src/debug-id-upload"); +vi.mock("../src/glob"); +vi.mock("../src/debug-id-upload"); -const mockGlobFiles = globFiles as jest.MockedFunction; -const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as jest.MockedFunction< - typeof prepareBundleForDebugIdUpload ->; +const mockGlobFiles = globFiles as MockedFunction; +const mockPrepareBundleForDebugIdUpload = + prepareBundleForDebugIdUpload as unknown as MockedFunction; describe("createSentryBuildPluginManager", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); // 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( { @@ -391,10 +389,10 @@ describe("createSentryBuildPluginManager", () => { "/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); @@ -475,20 +473,20 @@ describe("createSentryBuildPluginManager", () => { describe("uploadSourcemaps with multiple projects", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); mockGlobFiles.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 () => { @@ -568,7 +566,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( { @@ -593,7 +591,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( { @@ -618,7 +616,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( { @@ -644,7 +642,7 @@ describe("createSentryBuildPluginManager", () => { describe("createRelease deploy deduplication", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); _resetDeployedReleasesForTesting(); }); diff --git a/packages/bundler-plugin-core/test/glob.test.ts b/packages/bundler-plugin-core/test/glob.test.ts index 9a32b4ef5ff9..808d3e91ff90 100644 --- a/packages/bundler-plugin-core/test/glob.test.ts +++ b/packages/bundler-plugin-core/test/glob.test.ts @@ -2,6 +2,7 @@ import * as fs from "fs"; import * as path from "path"; import * as os from "os"; import { globFiles } from "../src/glob"; +import { describe, it, expect, beforeEach, afterEach } from "vitest"; let tmpDir: string; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 45cf107dbbb6..fe4c03f0465d 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 921bcd1e366e..d07563147804 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 d63d3bcdcb7d..1bb5d4147a62 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 b8e5c30971fd..8a9530f8a5bb 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 77b977a127c9..0c4ee3a15a6b 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 20225819627e..190ab95499d7 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 df2bbc949331..11a32135bbc2 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 86e33dacdbc6..0bb8feae9794 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 0b67f986effc..c0340602ec8b 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", - ], + extends: ["@sentry-internal/eslint-config/base"], + 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/README.md b/packages/e2e-tests/README.md index 5e5e921450c5..de8a2e6ea78d 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/jest.config.js b/packages/e2e-tests/jest.config.js deleted file mode 100644 index 160178bbd22f..000000000000 --- 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 bdb1f321f68a..165e8e1ca70a 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,13 +24,12 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", - "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", - "@types/jest": "^28.1.3", + "@types/glob": "8.0.0", "esbuild": "0.14.49", "eslint": "^8.18.0", "glob": "^13.0.6", - "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/__snapshots__/basic-upload.test.ts.snap b/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap index e7c776120378..51eb0c893262 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,29 +77,15 @@ Array [ ] `; -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack4 1`] = ` +exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using webpack 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\\")}])); + "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-webpack\\"}}},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})})(); //# 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`] = ` -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})})(); -//# sourceMappingURL=index.js.map", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/../bundler-plugin-core/sentry-release-injection-file.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// 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-webpack5\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAMwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCb3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", + "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/../bundler-plugin-core/sentry-release-injection-file.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// 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-webpack\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAMwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCb3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", "name": "~/index.js.map", }, ] 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 6a3f90b8d69d..3626dc737b57 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/tsconfig.json b/packages/e2e-tests/tsconfig.json index 79bc94be3707..b472a5524ce5 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/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index 6cda63ac1ec1..931a886298c7 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -42,7 +42,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 ec1068205048..1efff870dd1b 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"], + extends: ["@sentry-internal/eslint-config/base"], + 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 160178bbd22f..000000000000 --- a/packages/esbuild-plugin/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index ea8bdd6c546d..d48ae29f8511 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" }, @@ -53,12 +53,9 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.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/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index c9408006bc4f..6a095c8742b0 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 b73d9b533da9..b2d8716fb980 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/eslint-configs/jest.js b/packages/eslint-configs/jest.js deleted file mode 100644 index 37b0cb5cc725..000000000000 --- 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 c51472e0b569..c84ab03a3319 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 9213808a6bc8..eca9a3468d5d 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 aedffc3ffdbb..ced94ead72d2 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 f45085853c10..218ed700191e 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,10 +1,9 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; +import { describe, test, expect } from "vitest"; describe("Deletes files with `filesToDeleteAfterUpload` set to a promise", () => { - test("webpack 5 bundle", () => { + test("webpack bundle", () => { expect(fs.existsSync(path.join(__dirname, "out", "webpack", "bundle.js.map"))).toBe(false); }); 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 7790fa26d8b9..44eed1e27c71 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; +import { describe, test, expect } from "vitest"; describe("Deletes with `filesToDeleteAfterUpload` even without uploading anything", () => { test("webpack bundle", () => { 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 198d64635de7..eacbbb1880b2 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -15,7 +14,7 @@ function checkBundle(bundlePath: string): void { } describe("appKey injection", () => { - test("webpack 5 bundle", () => { + test("webpack bundle", () => { checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); 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 364fe8c290ff..614d271c9d4e 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; interface BundleOutput { debugIds: Record | undefined; @@ -34,7 +33,7 @@ function checkBundle(bundlePath: string): void { } describe("applicationKey with debug ID injection", () => { - test("webpack 5 bundle", () => { + test("webpack bundle", () => { checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); 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 9dd9a6c99777..c9bc1a4c4ca1 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,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -27,7 +28,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/build-information-injection/build-information-injection.test.ts b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts index 7ae4d03255bc..000185cc1839 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,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. 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 3db34fc26d56..162d0c97db6b 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; +import { describe, test, expect } from "vitest"; const expectedOutputs: Record> = { esbuild: { @@ -54,7 +53,7 @@ test("vite bundle", () => { checkBundle("vite", "bundle2.js"); }); -test("webpack 5 bundle", () => { +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 0586dfdd5889..815f5b4056e5 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,30 +1,33 @@ import childProcess from "child_process"; import path from "path"; +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); }); -test("webpack 5 bundle", () => { +test("webpack bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack/index.js")); + 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 3c862e3053d3..b57f6e25ca03 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,30 +1,33 @@ import childProcess from "child_process"; import path from "path"; +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); }); -test("webpack 5 bundle", () => { +test("webpack bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack/index.js")); + 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 dc248828be01..ce6a6338f176 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; +import { test, expect } from "vitest"; function checkBundle(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -50,7 +49,7 @@ test("vite bundle", () => { ); }); -test("webpack 5 bundle", () => { +test("webpack bundle", () => { checkBundle( 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 fa5dbf0090fd..20c51c2f9527 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,8 +1,8 @@ -/* eslint-disable jest/expect-expect */ import * as path from "path"; import * as fs from "fs"; import * as os from "os"; 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-")); @@ -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(); @@ -53,7 +53,7 @@ describe("vite 6 bundle", () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); test("check vite 6 bundle", () => { expected(tempDir); @@ -64,8 +64,8 @@ describe("vite 6 bundle", () => { }); }); -describe("webpack 5 bundle", () => { - const webpackRoot = path.join(__dirname, "input", "webpack5"); +describe("webpack bundle", { timeout: 30_000 }, () => { + const webpackRoot = path.join(__dirname, "input", "webpack"); const tempDir = createTempDir(); beforeEach(() => { @@ -75,9 +75,9 @@ describe("webpack 5 bundle", () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); - test("check webpack 5 bundle", () => { + test("check webpack bundle", () => { expected(tempDir); }); @@ -86,7 +86,7 @@ describe("webpack 5 bundle", () => { }); }); -describe("rollup bundle", () => { +describe("rollup bundle", { timeout: 30_000 }, () => { const rollupRoot = path.join(__dirname, "input", "rollup4"); const tempDir = createTempDir(); @@ -97,7 +97,7 @@ describe("rollup bundle", () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); test("check rollup bundle", () => { expected(tempDir); 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 100% 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 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 4d53ff980ec5..8c6715b22596 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/deterministic-debug-ids/deterministic-debug-ids.test.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts index e99e23cfe7ce..7ad1bf41df30 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,8 +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"; +import { describe, test, expect, beforeEach, afterEach } from "vitest"; function executeAndGetDebugIds(bundlePath: string): string[] { const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); 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 5d894dc5d2f1..bcafe20956d7 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath1: string, bundlePath2: string) { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -33,7 +32,7 @@ describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () = ); }); - test("webpack 5 bundle", () => { + test("webpack bundle", () => { checkBundle( 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 7630d8e84db2..c591dfbec5cd 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,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -27,7 +28,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/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 44f51e06f516..c610b86440ce 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,5 +1,6 @@ import childProcess from "child_process"; import path from "path"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -28,7 +29,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -test("webpack 5 bundle", () => { +test("webpack bundle", () => { expect.assertions(2); checkBundle(path.join(__dirname, "out", "webpack", "index.js")); }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-vite.ts b/packages/integration-tests/fixtures/errorhandling/build-vite.ts index a5489beb4fd2..f16e75ba1971 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/errorhandling/error-no-handler.test.ts b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts index 7f7918ec9a44..03a0f61d33f2 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -1,11 +1,8 @@ -/* 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")], { @@ -15,12 +12,14 @@ describe("Error throwing by default (no errorHandler)", () => { shell: true, }); + const serverStarted = new Promise((resolve) => + sentryServer.on("spawn", () => { + resolve(); + }) + ); + beforeAll(async () => { - await new Promise((resolve) => - sentryServer.on("spawn", () => { - resolve(); - }) - ); + await serverStarted; }); afterAll(() => { 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 00daa6428902..099a1cc48507 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 ccbda2a45c88..3953d6e1fe35 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; function checkBundleForDebugIds(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -55,7 +54,7 @@ function checkBundleForRelease(bundlePath: string): void { checkBundleForRelease(path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz")); }); - test("webpack 5 bundle", () => { + test("webpack bundle", () => { checkBundleForDebugIds( path.join(__dirname, "out", "webpack", "bundle1.js"), path.join(__dirname, "out", "webpack", "bundle2.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 cd1d57d3250d..60c097ece4cb 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -1,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); 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 53d724908113..acd9ff5b91a5 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; interface BundleOutput { debugIds: Record | undefined; 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 0ed6ef0d5936..344e279cee05 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,7 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 75397718ad43..68d5f0ce8a52 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[]; @@ -112,7 +111,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({ 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 fc9b426d933b..04c3edddad0a 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/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 6e6bbc56ed32..069d66bea892 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 73ed904f25e6..000000000000 --- 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 af66ad385c8c..38fd71abf1cd 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", "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", @@ -26,15 +26,13 @@ "@sentry/rollup-plugin": "5.1.1", "@sentry/vite-plugin": "5.1.1", "@sentry/webpack-plugin": "5.1.1", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/react": "^18.2.0", "@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", diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json index 79bc94be3707..b472a5524ce5 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 631c82defd8e..dc18be8a5022 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts @@ -33,7 +33,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 93f28d444d55..bec26dc9a8cd 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts @@ -27,7 +27,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 ddf714793159..648ec6be0e34 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -31,7 +31,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 6eebd0fcf927..cfbd657597d1 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"], + extends: ["@sentry-internal/eslint-config/base"], + 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 160178bbd22f..000000000000 --- 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 6d70b44cb9fc..87d12eb8cbed 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" }, @@ -58,12 +58,9 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.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 000000000000..cd0ad570649f --- /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' 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' 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' 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 e470d965c414..812b82e1d3b7 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");" `); }); @@ -64,14 +65,12 @@ 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 }); 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 b73d9b533da9..b2d8716fb980 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 6eebd0fcf927..cfbd657597d1 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"], + extends: ["@sentry-internal/eslint-config/base"], + 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 160178bbd22f..000000000000 --- 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 f13a62fa1986..4699c649038e 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" }, @@ -54,12 +54,9 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.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 cfa3856db92d..e0d3a792ce42 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 cc7092922918..285cb4ce4b8a 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 b73d9b533da9..b2d8716fb980 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 6eebd0fcf927..cfbd657597d1 100644 --- a/packages/webpack-plugin/.eslintrc.js +++ b/packages/webpack-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"], + extends: ["@sentry-internal/eslint-config/base"], + 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/webpack-plugin/jest.config.js b/packages/webpack-plugin/jest.config.js deleted file mode 100644 index 160178bbd22f..000000000000 --- a/packages/webpack-plugin/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 407ce5a14aa7..19ab18e70c80 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" }, @@ -58,13 +58,10 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", - "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "@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 380af10780ce..a54c63a6af9e 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,5 +1,6 @@ import { WebpackPluginInstance } 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 b73d9b533da9..b2d8716fb980 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 79b0c2124a54..179a9e267059 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -1,9 +1,6 @@ import { WebpackPluginInstance } from "webpack"; -import { sentryWebpackPlugin } from "../src/webpack5"; - -jest.mock("webpack", () => { - throw new Error("Webpack 5 version of the plugin should use module from compiler."); -}); +import { sentryWebpackPlugin } from "../src/index"; +import { describe, it, expect, test } from "vitest"; test("Webpack plugin should exist", () => { expect(sentryWebpackPlugin).toBeDefined(); diff --git a/yarn.lock b/yarn.lock index 4bd0ff4d3c81..ed24fafd5b95 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== @@ -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" @@ -744,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" @@ -808,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" @@ -845,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" @@ -866,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" @@ -906,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" @@ -960,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" @@ -979,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" @@ -999,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" @@ -1030,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" @@ -1062,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" @@ -1132,7 +1062,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -1150,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== @@ -2000,6 +1930,131 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz#a6742c74c7d9d6d604ef8a48f99326b4ecda3d82" + integrity sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg== + +"@rollup/rollup-android-arm64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz#97247be098de4df0c11971089fd2edf80a5da8cf" + integrity sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q== + +"@rollup/rollup-darwin-arm64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz#674852cf14cf11b8056e0b1a2f4e872b523576cf" + integrity sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg== + +"@rollup/rollup-darwin-x64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz#36dfd7ed0aaf4d9d89d9ef983af72632455b0246" + integrity sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w== + +"@rollup/rollup-freebsd-arm64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz#2f87c2074b4220260fdb52a9996246edfc633c22" + integrity sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA== + +"@rollup/rollup-freebsd-x64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz#9b5a26522a38a95dc06616d1939d4d9a76937803" + integrity sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg== + +"@rollup/rollup-linux-arm-gnueabihf@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz#86aa4859385a8734235b5e40a48e52d770758c3a" + integrity sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw== + +"@rollup/rollup-linux-arm-musleabihf@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz#cbe70e56e6ece8dac83eb773b624fc9e5a460976" + integrity sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA== + +"@rollup/rollup-linux-arm64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz#d14992a2e653bc3263d284bc6579b7a2890e1c45" + integrity sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA== + +"@rollup/rollup-linux-arm64-musl@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz#2fdd1ddc434ea90aeaa0851d2044789b4d07f6da" + integrity sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA== + +"@rollup/rollup-linux-loong64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz#8a181e6f89f969f21666a743cd411416c80099e7" + integrity sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg== + +"@rollup/rollup-linux-loong64-musl@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz#904125af2babc395f8061daa27b5af1f4e3f2f78" + integrity sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q== + +"@rollup/rollup-linux-ppc64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz#a57970ac6864c9a3447411a658224bdcf948be22" + integrity sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA== + +"@rollup/rollup-linux-ppc64-musl@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz#bb84de5b26870567a4267666e08891e80bb56a63" + integrity sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA== + +"@rollup/rollup-linux-riscv64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz#72d00d2c7fb375ce3564e759db33f17a35bffab9" + integrity sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg== + +"@rollup/rollup-linux-riscv64-musl@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz#4c166ef58e718f9245bd31873384ba15a5c1a883" + integrity sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg== + +"@rollup/rollup-linux-s390x-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz#bb5025cde9a61db478c2ca7215808ad3bce73a09" + integrity sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w== + +"@rollup/rollup-linux-x64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz#9b66b1f9cd95c6624c788f021c756269ffed1552" + integrity sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg== + +"@rollup/rollup-linux-x64-musl@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz#b007ca255dc7166017d57d7d2451963f0bd23fd9" + integrity sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg== + +"@rollup/rollup-openbsd-x64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz#e8b357b2d1aa2c8d76a98f5f0d889eabe93f4ef9" + integrity sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ== + +"@rollup/rollup-openharmony-arm64@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz#96c2e3f4aacd3d921981329831ff8dde492204dc" + integrity sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA== + +"@rollup/rollup-win32-arm64-msvc@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz#2d865149d706d938df8b4b8f117e69a77646d581" + integrity sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A== + +"@rollup/rollup-win32-ia32-msvc@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz#abe1593be0fa92325e9971c8da429c5e05b92c36" + integrity sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA== + +"@rollup/rollup-win32-x64-gnu@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz#c4af3e9518c9a5cd4b1c163dc81d0ad4d82e7eab" + integrity sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA== + +"@rollup/rollup-win32-x64-msvc@4.59.0": + version "4.59.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz#4584a8a87b29188a4c1fe987a9fcf701e256d86c" + integrity sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA== + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -2141,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" @@ -2165,86 +2215,10 @@ 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" - -"@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" - -"@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" +"@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== "@tootallnate/once@1": version "1.1.2" @@ -2344,6 +2318,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" @@ -2351,6 +2333,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.0": version "3.7.7" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" @@ -2380,6 +2367,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.45": version "0.0.45" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" @@ -2410,7 +2402,15 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": +"@types/glob@8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" + integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@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== @@ -2443,14 +2443,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" @@ -2471,6 +2463,13 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +"@types/minimatch@*": + version "6.0.0" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" + integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== + dependencies: + minimatch "*" + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -2620,13 +2619,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" @@ -2643,13 +2635,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" @@ -2729,6 +2714,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" @@ -3312,6 +3355,11 @@ arrify@^2.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== +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== + async@^3.2.3: version "3.2.4" resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -3355,19 +3403,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" @@ -3399,16 +3434,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" @@ -3435,14 +3460,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" @@ -3733,6 +3750,11 @@ caniuse-lite@^1.0.30001759: 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" + integrity sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg== + chalk@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -4324,11 +4346,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" @@ -4418,11 +4435,6 @@ electron-to-chromium@^1.5.263: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== -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" @@ -4552,6 +4564,11 @@ 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.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" @@ -4886,6 +4903,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" @@ -4933,13 +4982,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" @@ -5075,6 +5117,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" @@ -5150,6 +5199,11 @@ exit@^0.1.2: resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== +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" @@ -5160,17 +5214,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" @@ -5268,6 +5311,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== + figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5469,6 +5517,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" @@ -6469,14 +6522,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" @@ -6502,49 +6547,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" @@ -6575,34 +6577,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" @@ -6613,16 +6587,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" @@ -6630,13 +6594,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" @@ -6648,17 +6605,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" @@ -6684,28 +6630,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" @@ -6726,25 +6655,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" @@ -6776,14 +6686,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" @@ -6794,16 +6696,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" @@ -6819,21 +6711,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" @@ -6842,14 +6719,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" @@ -6860,19 +6729,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" @@ -6889,21 +6745,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" @@ -6931,33 +6772,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" @@ -6986,34 +6800,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" @@ -7050,35 +6836,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" @@ -7091,18 +6848,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" @@ -7115,32 +6860,6 @@ 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== - 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" - jest-worker@^26.5.0: version "26.6.2" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -7159,25 +6878,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.1, 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" @@ -7288,7 +6988,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== @@ -7330,11 +7030,6 @@ 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" @@ -7611,7 +7306,7 @@ lru_map@^0.3.3: resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@^0.30.3, magic-string@~0.30.8: +magic-string@^0.30.21, magic-string@^0.30.3, magic-string@~0.30.8: 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== @@ -7780,6 +7475,13 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimatch@*, minimatch@^10.2.2: + version "10.2.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" + integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== + dependencies: + brace-expansion "^5.0.2" + minimatch@3.0.5: version "3.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -7787,13 +7489,6 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" -minimatch@^10.2.2: - version "10.2.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" - integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== - dependencies: - brace-expansion "^5.0.2" - minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624" @@ -8002,6 +7697,11 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +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" @@ -8471,6 +8171,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" @@ -8591,7 +8296,7 @@ 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== @@ -8847,6 +8552,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== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -8862,6 +8572,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^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" @@ -8916,6 +8631,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" @@ -8949,16 +8673,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" @@ -9019,14 +8733,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" @@ -9446,6 +9152,40 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" +rollup@^4.43.0: + version "4.59.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f" + integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.59.0" + "@rollup/rollup-android-arm64" "4.59.0" + "@rollup/rollup-darwin-arm64" "4.59.0" + "@rollup/rollup-darwin-x64" "4.59.0" + "@rollup/rollup-freebsd-arm64" "4.59.0" + "@rollup/rollup-freebsd-x64" "4.59.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.59.0" + "@rollup/rollup-linux-arm-musleabihf" "4.59.0" + "@rollup/rollup-linux-arm64-gnu" "4.59.0" + "@rollup/rollup-linux-arm64-musl" "4.59.0" + "@rollup/rollup-linux-loong64-gnu" "4.59.0" + "@rollup/rollup-linux-loong64-musl" "4.59.0" + "@rollup/rollup-linux-ppc64-gnu" "4.59.0" + "@rollup/rollup-linux-ppc64-musl" "4.59.0" + "@rollup/rollup-linux-riscv64-gnu" "4.59.0" + "@rollup/rollup-linux-riscv64-musl" "4.59.0" + "@rollup/rollup-linux-s390x-gnu" "4.59.0" + "@rollup/rollup-linux-x64-gnu" "4.59.0" + "@rollup/rollup-linux-x64-musl" "4.59.0" + "@rollup/rollup-openbsd-x64" "4.59.0" + "@rollup/rollup-openharmony-arm64" "4.59.0" + "@rollup/rollup-win32-arm64-msvc" "4.59.0" + "@rollup/rollup-win32-ia32-msvc" "4.59.0" + "@rollup/rollup-win32-x64-gnu" "4.59.0" + "@rollup/rollup-win32-x64-msvc" "4.59.0" + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -9666,6 +9406,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" @@ -9685,11 +9430,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" @@ -9734,13 +9474,10 @@ 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-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-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-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" @@ -9833,11 +9570,21 @@ 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== + statuses@2.0.1: version "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== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -10209,11 +9956,34 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +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" @@ -10598,15 +10368,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" @@ -10653,6 +10414,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" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -10672,7 +10473,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== @@ -10871,6 +10672,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" @@ -10947,14 +10756,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" @@ -11057,7 +10858,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 bdc534556bbf472974881707c4d138b09ab7f31e Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 27 Feb 2026 14:18:33 +0000 Subject: [PATCH 601/640] chore: Remove lerna (#895) --- .gitignore | 1 + lerna.json | 6 - nx.json | 22 +- package.json | 19 +- scripts/bump-version.js | 93 + scripts/craft-pre-release.sh | 9 +- yarn.lock | 5286 +++------------------------------- 7 files changed, 572 insertions(+), 4864 deletions(-) delete mode 100644 lerna.json create mode 100644 scripts/bump-version.js diff --git a/.gitignore b/.gitignore index 1167a41d2c76..36c57e3130b6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ yarn-error.log *.tgz .nxcache +.nx packages/**/yarn.lock .DS_Store diff --git a/lerna.json b/lerna.json deleted file mode 100644 index cab871e8244a..000000000000 --- a/lerna.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "5.1.1", - "npmClient": "yarn", - "useWorkspaces": true -} diff --git a/nx.json b/nx.json index 72e69d45b1c9..b3f81064fd30 100644 --- a/nx.json +++ b/nx.json @@ -1,14 +1,5 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", - "tasksRunnerOptions": { - "default": { - "runner": "nx/tasks-runners/default", - "options": { - "cacheableOperations": ["build", "lint", "test"], - "cacheDirectory": ".nxcache" - } - } - }, "namedInputs": { "sharedGlobals": ["{workspaceRoot}/*.js", "{workspaceRoot}/*.json", "{workspaceRoot}/yarn.lock"] }, @@ -16,16 +7,19 @@ "build": { "inputs": ["sharedGlobals"], "dependsOn": ["^build"], - "outputs": ["{projectRoot}/dist"] + "outputs": ["{projectRoot}/dist"], + "cache": true }, "lint": { "inputs": ["sharedGlobals"], "dependsOn": ["^build", "build"], - "outputs": [] + "outputs": [], + "cache": true }, "test": { "inputs": ["sharedGlobals"], - "outputs": [] + "outputs": [], + "cache": true }, "check:types": { "inputs": ["sharedGlobals"], @@ -35,5 +29,9 @@ "build:npm": { "dependsOn": ["build", "^build"] } + }, + "cacheDirectory": ".nxcache", + "tui": { + "autoExit": true } } diff --git a/package.json b/package.json index 5755d369a734..ac81fe63095d 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,18 @@ "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins", "private": true, "workspaces": [ - "packages/*" + "packages/babel-plugin-component-annotate", + "packages/bundler-plugin-core", + "packages/dev-utils", + "packages/e2e-tests", + "packages/esbuild-plugin", + "packages/eslint-configs", + "packages/integration-tests", + "packages/playground", + "packages/rollup-plugin", + "packages/tsconfigs", + "packages/vite-plugin", + "packages/webpack-plugin" ], "scripts": { "build": "nx run-many --target=build --all", @@ -26,14 +37,10 @@ "fix:formatting": "oxfmt ." }, "devDependencies": { - "@nrwl/cli": "14.5.10", - "@nrwl/workspace": "14.5.10", - "lerna": "^6.6.2", "minimatch": "^10.2.2", "npm-run-all": "^4.1.5", - "nx": "14.5.10", + "nx": "22.5.2", "oxfmt": "^0.33.0", - "pretty-quick": "^3.1.3", "ts-node": "^10.9.2" }, "volta": { diff --git a/scripts/bump-version.js b/scripts/bump-version.js new file mode 100644 index 000000000000..d4a4b1c8b46d --- /dev/null +++ b/scripts/bump-version.js @@ -0,0 +1,93 @@ +const fs = require("fs"); +const path = require("path"); + +function readJson(filePath) { + return JSON.parse(fs.readFileSync(filePath, "utf-8")); +} + +/** + * Bumps the version of all workspace packages and their internal dependencies. + * This replicates the behavior of: + * lerna version --force-publish --exact --no-git-tag-version --no-push --include-merged-tags --yes + * + * Specifically: + * - Updates `version` in every workspace package.json to newVersion + * - Updates all internal workspace dependency references (dependencies, devDependencies, peerDependencies) + * to the new exact version (no ^ or ~ prefix), matching lerna's --exact flag + * - --force-publish: all packages are updated regardless of whether they changed + * - No git tags, commits, or pushes are made + */ +function bumpVersions(rootDir, newVersion) { + const rootPkgPath = path.join(rootDir, "package.json"); + const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, "utf-8")); + const workspaces = rootPkg.workspaces; + + if (!workspaces || !Array.isArray(workspaces)) { + throw new Error("Could not find workspaces in root package.json"); + } + + // Read all workspace package.json files upfront. + // This ensures we fail early if any workspace is unreadable, + // before writing any changes (no partial updates). + const workspacePackages = []; + const workspaceNames = new Set(); + for (const workspace of workspaces) { + const pkgPath = path.join(rootDir, workspace, "package.json"); + const pkg = readJson(pkgPath); + workspaceNames.add(pkg.name); + workspacePackages.push({ pkgPath, pkg }); + } + + // Apply version bumps + for (const { pkgPath, pkg } of workspacePackages) { + pkg.version = newVersion; + + // Update internal workspace dependency versions (exact, no ^) + // This covers dependencies, devDependencies, and peerDependencies + for (const depType of ["dependencies", "devDependencies", "peerDependencies"]) { + if (!pkg[depType]) { + continue; + } + + for (const [dep, ver] of Object.entries(pkg[depType])) { + // Update all workspace dependencies to the new exact version, + // matching lerna's --force-publish --exact behavior + if (workspaceNames.has(dep) && !ver.startsWith("workspace:")) { + pkg[depType][dep] = newVersion; + } + } + } + + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n"); + } + + return workspacePackages.length; +} + +// CLI entry point +if (require.main === module) { + const newVersion = process.argv[2]; + + if (!newVersion) { + console.error("Usage: node scripts/bump-version.js "); + process.exit(1); + } + + const rootDir = path.join(__dirname, ".."); + const updatedCount = bumpVersions(rootDir, newVersion); + + // Write a .version file used by the gitflow sync workflow to detect version bumps + const versionFile = { + _comment: + "Auto-generated by scripts/bump-version.js. Used by the gitflow sync workflow to detect version bumps. Do not edit manually.", + version: newVersion, + }; + fs.writeFileSync( + path.join(rootDir, ".version.json"), + JSON.stringify(versionFile, null, 2) + "\n" + ); + + console.log(`Updated ${updatedCount} packages to version ${newVersion}`); +} + +module.exports = { bumpVersions }; diff --git a/scripts/craft-pre-release.sh b/scripts/craft-pre-release.sh index 75df3de94eef..e3f4c740a181 100755 --- a/scripts/craft-pre-release.sh +++ b/scripts/craft-pre-release.sh @@ -11,10 +11,5 @@ NEW_VERSION="${2}" export npm_config_git_tag_version=false yarn install --frozen-lockfile -# --force-publish - force publish all packages, this will skip the lerna changed check for changed packages and forces a package that didn't have a git diff change to be updated. -# --exact - specify updated dependencies in updated packages exactly (with no punctuation), instead of as semver compatible (with a ^). -# --no-git-tag-version - don't commit changes to package.json files and don't tag the release. -# --no-push - don't push committed and tagged changes. -# --include-merged-tags - include tags from merged branches when detecting changed packages. -# --yes - skip all confirmation prompts -yarn lerna version --force-publish --exact --no-git-tag-version --no-push --include-merged-tags --yes "${NEW_VERSION}" +# Bump version in all workspace packages (exact versions, no git tags or commits) +node scripts/bump-version.js "${NEW_VERSION}" diff --git a/yarn.lock b/yarn.lock index ed24fafd5b95..88230a3a8918 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -44,7 +44,7 @@ json5 "^2.2.1" semver "^6.3.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": +"@babel/core@^7.18.5", "@babel/core@^7.23.5": version "7.24.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== @@ -65,7 +65,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.18.2", "@babel/generator@^7.23.6", "@babel/generator@^7.7.2": +"@babel/generator@^7.18.2", "@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== @@ -131,7 +131,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -183,46 +183,11 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-jsx@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" @@ -230,62 +195,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" - integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-transform-react-display-name@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" @@ -345,7 +254,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.23.3" -"@babel/template@^7.16.7", "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": +"@babel/template@^7.16.7", "@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -354,7 +263,7 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.18.5", "@babel/traverse@^7.24.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.18.5", "@babel/traverse@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== @@ -370,7 +279,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.4", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": +"@babel/types@^7.0.0", "@babel/types@^7.18.4", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -379,11 +288,6 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -391,7 +295,7 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@emnapi/core@^1.7.1": +"@emnapi/core@^1.1.0", "@emnapi/core@^1.7.1": version "1.8.1" resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== @@ -399,7 +303,7 @@ "@emnapi/wasi-threads" "1.1.0" tslib "^2.4.0" -"@emnapi/runtime@^1.7.1": +"@emnapi/runtime@^1.1.0", "@emnapi/runtime@^1.7.1": version "1.8.1" resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== @@ -800,7 +704,7 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": +"@gar/promisify@^1.0.1": 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== @@ -824,185 +728,34 @@ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@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" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - 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-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== - dependencies: - "@sinclair/typebox" "^0.25.16" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== -"@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" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@isaacs/brace-expansion@^5.0.0": + version "5.0.1" + resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#0ef5a92d91f2fff2a37646ce54da9e5f599f6eff" + integrity sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "@isaacs/balanced-match" "^4.0.1" -"@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" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - 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 "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz#4fcb4dc2ebcf0811be1c04fd1cb79c2dba431cbc" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "@sinclair/typebox" "^0.34.0" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" @@ -1096,101 +849,14 @@ "@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" - integrity sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag== +"@napi-rs/wasm-runtime@0.2.4": + version "0.2.4" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" - -"@lerna/create@6.6.2": - version "6.6.2" - resolved "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz#39a36d80cddb355340c297ed785aa76f4498177f" - integrity sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ== - dependencies: - "@lerna/child-process" "6.6.2" - dedent "^0.7.0" - fs-extra "^9.1.0" - init-package-json "^3.0.2" - npm-package-arg "8.1.1" - p-reduce "^2.1.0" - pacote "15.1.1" - pify "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^4.0.0" - yargs-parser "20.2.4" - -"@lerna/legacy-package-management@6.6.2": - version "6.6.2" - resolved "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz#411c395e72e563ab98f255df77e4068627a85bb0" - integrity sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg== - dependencies: - "@npmcli/arborist" "6.2.3" - "@npmcli/run-script" "4.1.7" - "@nrwl/devkit" ">=15.5.2 < 16" - "@octokit/rest" "19.0.3" - byte-size "7.0.0" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "5.0.0" - columnify "1.6.0" - config-chain "1.1.12" - conventional-changelog-core "4.2.4" - conventional-recommended-bump "6.1.0" - cosmiconfig "7.0.0" - dedent "0.7.0" - dot-prop "6.0.1" - execa "5.0.0" - file-url "3.0.0" - find-up "5.0.0" - fs-extra "9.1.0" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.10" - has-unicode "2.0.1" - inquirer "8.2.4" - is-ci "2.0.0" - is-stream "2.0.0" - libnpmpublish "7.1.4" - load-json-file "6.2.0" - make-dir "3.1.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "14.0.3" - npmlog "6.0.2" - p-map "4.0.0" - p-map-series "2.1.0" - p-queue "6.6.2" - p-waterfall "2.1.1" - pacote "15.1.1" - pify "5.0.0" - pretty-format "29.4.3" - read-cmd-shim "3.0.0" - read-package-json "5.0.1" - resolve-from "5.0.0" - semver "7.3.8" - signal-exit "3.0.7" - slash "3.0.0" - ssri "9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - tempy "1.0.0" - upath "2.0.1" - uuid "8.3.2" - write-file-atomic "4.0.1" - write-pkg "4.0.0" - yargs "16.2.0" + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" "@napi-rs/wasm-runtime@^1.1.1": version "1.1.1" @@ -1222,45 +888,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/arborist@6.2.3": - version "6.2.3" - resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" - integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/fs" "^3.1.0" - "@npmcli/installed-package-contents" "^2.0.0" - "@npmcli/map-workspaces" "^3.0.2" - "@npmcli/metavuln-calculator" "^5.0.0" - "@npmcli/name-from-folder" "^2.0.0" - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^3.0.0" - "@npmcli/query" "^3.0.0" - "@npmcli/run-script" "^6.0.0" - bin-links "^4.0.1" - cacache "^17.0.4" - common-ancestor-path "^1.0.1" - hosted-git-info "^6.1.1" - json-parse-even-better-errors "^3.0.0" - json-stringify-nice "^1.1.4" - minimatch "^6.1.6" - nopt "^7.0.0" - npm-install-checks "^6.0.0" - npm-package-arg "^10.1.0" - npm-pick-manifest "^8.0.1" - npm-registry-fetch "^14.0.3" - npmlog "^7.0.1" - pacote "^15.0.8" - parse-conflict-json "^3.0.0" - proc-log "^3.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^1.0.1" - read-package-json-fast "^3.0.2" - semver "^7.3.7" - ssri "^10.0.1" - 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" @@ -1269,63 +896,6 @@ "@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" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/fs@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" - integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== - dependencies: - semver "^7.3.5" - -"@npmcli/git@^4.0.0": - version "4.0.4" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" - integrity sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg== - dependencies: - "@npmcli/promise-spawn" "^6.0.0" - lru-cache "^7.4.4" - npm-pick-manifest "^8.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^3.0.0" - -"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": - version "2.0.2" - resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" - integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/map-workspaces@^3.0.2": - version "3.0.4" - resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz#15ad7d854292e484f7ba04bc30187a8320dba799" - integrity sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg== - dependencies: - "@npmcli/name-from-folder" "^2.0.0" - glob "^10.2.2" - minimatch "^9.0.0" - read-package-json-fast "^3.0.0" - -"@npmcli/metavuln-calculator@^5.0.0": - version "5.0.1" - resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz#426b3e524c2008bcc82dbc2ef390aefedd643d76" - integrity sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q== - dependencies: - cacache "^17.0.0" - json-parse-even-better-errors "^3.0.0" - 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" @@ -1334,368 +904,55 @@ 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" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/name-from-folder@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" - integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== - -"@npmcli/node-gyp@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" - integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/package-json@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.1.0.tgz#d9eb34083be4275520f3844d17fc74926d47cae1" - integrity sha512-qNPy6Yf9ruFST99xcrl5EWAvrb7qFrwgVbwdzcTJlIgxbArKOq5e/bgZ6rTL1X9hDgAdPbvL8RWx/OTLSB0ToA== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.1" - -"@npmcli/promise-spawn@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" - integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": - version "6.0.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" - integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== - dependencies: - which "^3.0.0" - -"@npmcli/query@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz#51a0dfb85811e04f244171f164b6bc83b36113a7" - integrity sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA== - dependencies: - postcss-selector-parser "^6.0.10" - -"@npmcli/run-script@4.1.7": - version "4.1.7" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" - integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== - dependencies: - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/promise-spawn" "^3.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^2.0.3" - which "^2.0.2" - -"@npmcli/run-script@^6.0.0": - version "6.0.2" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" - integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^6.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^3.0.0" - which "^3.0.0" - -"@nrwl/cli@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.10.tgz#826c06a9a272523424f0c5690f5d745260ed1ea1" - integrity sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ== - dependencies: - nx "14.5.10" - -"@nrwl/cli@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz#63b600dff1cdc126f234d16978a888f72c22a00c" - integrity sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw== - dependencies: - nx "15.9.4" - -"@nrwl/devkit@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.10.tgz#b87bc3dad8e6d019c76adf7f65a56af19df70283" - integrity sha512-YVT0MRvyXwe0uczUZK4XUi1f2iLAqklFMfAoqwfgcgWToH8xN06NSlyUphD4eLHFgem3Sd0kimAJVsnse/PTlA== - dependencies: - "@phenomnomnominal/tsquery" "4.1.1" - ejs "^3.1.7" - ignore "^5.0.4" - semver "7.3.4" - tslib "^2.3.0" - -"@nrwl/devkit@>=15.5.2 < 16": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz#3f0a43a9637fcd0a46c06df2a9c36012b27f006b" - integrity sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ== - dependencies: - ejs "^3.1.7" - ignore "^5.0.4" - semver "7.3.4" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nrwl/jest@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/jest/-/jest-14.5.10.tgz#1e808608665660c59e4b3026ba0eab7f86153163" - integrity sha512-gGqghwDcpBhk8TNK2Gfp/5PWqnnAPUjNfSCOz39kk9ZBtsyloozGwjg/VEF3k2p9uCifRfAyZOpDrSdALxBpdA== - dependencies: - "@jest/reporters" "27.5.1" - "@jest/test-result" "27.5.1" - "@nrwl/devkit" "14.5.10" - "@phenomnomnominal/tsquery" "4.1.1" - chalk "4.1.0" - dotenv "~10.0.0" - identity-obj-proxy "3.0.0" - jest-config "27.5.1" - jest-resolve "27.5.1" - jest-util "27.5.1" - resolve.exports "1.1.0" - rxjs "^6.5.4" - tslib "^2.3.0" - -"@nrwl/linter@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/linter/-/linter-14.5.10.tgz#c9c78c796667f985ebbc4e126dc37ae5b14f0921" - integrity sha512-3c6KhSLJmt8wMkYZw+f/KayPHkM+KV/z+QaYQL59XY5o9DdYyq6jHjnvu/CuW2JzU97yHkacYbwkSFQlDKCyIg== - dependencies: - "@nrwl/devkit" "14.5.10" - "@nrwl/jest" "14.5.10" - "@phenomnomnominal/tsquery" "4.1.1" - nx "14.5.10" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nrwl/nx-darwin-arm64@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz#e5a2f39d42a60397a01140a251f894788f5d1fda" - integrity sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ== - -"@nrwl/nx-darwin-x64@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz#97a810d4ff6b4bf395a43e4740890c0def2372da" - integrity sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw== - -"@nrwl/nx-linux-arm-gnueabihf@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz#b8dd23b8c755b7e640d744945ab2dec3fd3eda65" - integrity sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA== - -"@nrwl/nx-linux-arm64-gnu@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz#5bc150c2bdb2e0a2eaf8721b3c5fdb2eb93f8739" - integrity sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow== - -"@nrwl/nx-linux-arm64-musl@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz#df2f18f813828000dc52f1b7668339947b1a0862" - integrity sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w== - -"@nrwl/nx-linux-x64-gnu@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz#55547b07e6aeb0c36a43e05bd07c15b013f2de9f" - integrity sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg== - -"@nrwl/nx-linux-x64-musl@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz#29cd644736f643566d9c0e1a1171c49a62a08c09" - integrity sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q== - -"@nrwl/nx-win32-arm64-msvc@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz#55a38bf5dc201e9088729fb03e505dc63caf8b3a" - integrity sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA== - -"@nrwl/nx-win32-x64-msvc@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz#56bb859bfe47d08d14f8d5822d9a31d9098d95a9" - integrity sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw== - -"@nrwl/tao@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.10.tgz#69c90f8b6e13f2bb521840a5903f7eb4884285ff" - integrity sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA== - dependencies: - nx "14.5.10" - -"@nrwl/tao@15.9.4": - version "15.9.4" - resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz#5e384af06d1fb68e326eda2c6a5d8f99ce1583b8" - integrity sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg== - dependencies: - nx "15.9.4" - -"@nrwl/workspace@14.5.10": - version "14.5.10" - resolved "https://registry.npmjs.org/@nrwl/workspace/-/workspace-14.5.10.tgz#cf224886a983c53eded62fa3d5e55c80863eca64" - integrity sha512-bJK2O5NcIYhU7z1mmWoONo2+tOt1VUYyOQUUrAcI00hiBhMJPOTwPPN+W5BbJsue95ndH6mRLo2UhTz20U2tNA== - dependencies: - "@nrwl/devkit" "14.5.10" - "@nrwl/jest" "14.5.10" - "@nrwl/linter" "14.5.10" - "@parcel/watcher" "2.0.4" - chalk "4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - dotenv "~10.0.0" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^10.1.0" - glob "7.1.4" - ignore "^5.0.4" - minimatch "3.0.5" - npm-run-path "^4.0.1" - nx "14.5.10" - open "^8.4.0" - rxjs "^6.5.4" - semver "7.3.4" - tmp "~0.2.1" - tslib "^2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" - -"@octokit/auth-token@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" - integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== - dependencies: - "@octokit/types" "^9.0.0" - -"@octokit/core@^4.0.0": - version "4.2.1" - resolved "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz#fee6341ad0ce60c29cc455e056cd5b500410a588" - integrity sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^7.0.0": - version "7.0.5" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" - integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== - dependencies: - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^5.0.0": - version "5.0.6" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" - integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== - dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^9.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/openapi-types@^14.0.0": - version "14.0.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" - integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== - -"@octokit/openapi-types@^17.2.0": - version "17.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.2.0.tgz#f1800b5f9652b8e1b85cc6dfb1e0dc888810bdb5" - integrity sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ== - -"@octokit/plugin-enterprise-rest@6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== - -"@octokit/plugin-paginate-rest@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" - integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== - dependencies: - "@octokit/types" "^6.41.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@^6.0.0": - version "6.8.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" - integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== - dependencies: - "@octokit/types" "^8.1.1" - deprecation "^2.3.1" - -"@octokit/request-error@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" - integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== - dependencies: - "@octokit/types" "^9.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^6.0.0": - version "6.2.5" - resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.5.tgz#7beef1065042998f7455973ef3f818e7b84d6ec2" - integrity sha512-z83E8UIlPNaJUsXpjD8E0V5o/5f+vJJNbNcBwVZsX3/vC650U41cOkTLjq4PKk9BYonQGOnx7N17gvLyNjgGcQ== - dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@19.0.3": - version "19.0.3" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" - integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== - dependencies: - "@octokit/core" "^4.0.0" - "@octokit/plugin-paginate-rest" "^3.0.0" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^6.0.0" - -"@octokit/types@^6.41.0": - version "6.41.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== - dependencies: - "@octokit/openapi-types" "^12.11.0" - -"@octokit/types@^8.1.1": - version "8.2.1" - resolved "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" - integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== - dependencies: - "@octokit/openapi-types" "^14.0.0" - -"@octokit/types@^9.0.0": - version "9.2.3" - resolved "https://registry.npmjs.org/@octokit/types/-/types-9.2.3.tgz#d0af522f394d74b585cefb7efd6197ca44d183a9" - integrity sha512-MMeLdHyFIALioycq+LFcA71v0S2xpQUX2cw6pPbHQjaibcHYwLnmK/kMZaWuGfGfjBJZ3wRUq+dOaWsvrPJVvA== - dependencies: - "@octokit/openapi-types" "^17.2.0" +"@nx/nx-darwin-arm64@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz#beff47093c7d95bfb98631db85a3f680ceda8522" + integrity sha512-CPtgK/s4FQ0Y/6WmHpJccOTANve5UjlFajLp+S8Z538zHdc5a5MjJBcXo9oRzKNvhTHoGijr/fCMU2erMrYYtg== + +"@nx/nx-darwin-x64@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.2.tgz#301d7ddd106af5485a1c86778bfeee3bf1d06f7d" + integrity sha512-YuFGIpmtMPbMM3QchJttlLFE5oNenE+3mRCWcMNrXPOixsw28flvYWhFcHE3CPV8q/E+Yg0FsOG+8u1p7eEgWg== + +"@nx/nx-freebsd-x64@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.2.tgz#b603f93b8e95b357b9c58bfb976c8c41badd535b" + integrity sha512-Oy3jejPB7lszxAf4rdTpJfOBVgAUtkUZJCLTdGdnpveF/m3s9MN9DaeEXgUs0mMp1qV3Y0KE3KcVHqII54AoBQ== + +"@nx/nx-linux-arm-gnueabihf@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.2.tgz#276e86ddcdb02a1b8a8454befc81184f97dc9537" + integrity sha512-38bZGStG6bZ+R7ZbGxvnDVjVrV6bRTsiX8rr3fmM/AkEfvgyhWgE3R+xqUHoJVM4PK0I2YlYoSjIny4gFeOBxQ== + +"@nx/nx-linux-arm64-gnu@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.2.tgz#2dbf04bf2a23fdcd2894e55c36ac1fd1308f23f0" + integrity sha512-D+tPXB0tkSuDPsuXvyQIsF3f3PBWfAwIe9FkBWtVoDVYqE+jbz+tVGsjQMNWGafLE4sC8ZQdjhsxyT8I53Anbw== + +"@nx/nx-linux-arm64-musl@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.2.tgz#23d0ed24b16b9d3d3832a3c4482c92e60aa972c9" + integrity sha512-UbO527qqa8KLBi13uXto5SmxcZv1Smer7sPexJonshDlmrJsyvx5m8nm6tcSv04W5yQEL90vPlTux8dNvEDWrw== + +"@nx/nx-linux-x64-gnu@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.2.tgz#cc30fff1e986c6d3f58de6957b1bdbaeaa5acee6" + integrity sha512-wR6596Vr/Z+blUAmjLHG2TCQMs4O1oi9JXK1J/PoPeO9UqdHwStCJBAd61zDFSUYJe0x+dkeRQu96fE5BW8Kcg== + +"@nx/nx-linux-x64-musl@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.2.tgz#5bb3ebcda315fb1d97dc2c1e3ac24d9ea2f21200" + integrity sha512-MBXOw4AH4FWl4orwVykj/e75awTNDePogrl3pXNX9NcQLdj6JzS4e2jaALQeRBQLxQzeFvFQV/W4PBzoPV6/NA== + +"@nx/nx-win32-arm64-msvc@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.2.tgz#a671ea98b107670930c7cf59164460d45f8c4f20" + integrity sha512-SaWSZkRH5uV8vP2lj6RRv+kw2IzaIDXkutReOXpooshIWZl9KjrQELNTCZTYyhLDsMlcyhSvLFlTiA4NkZ8udw== + +"@nx/nx-win32-x64-msvc@22.5.2": + version "22.5.2" + resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz#0b3867776cd7fdb86068b2dd733e6621ded5165a" + integrity sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw== "@oxc-project/types@=0.113.0": version "0.113.0" @@ -1797,26 +1054,6 @@ resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== -"@parcel/watcher@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" - integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@phenomnomnominal/tsquery@4.1.1": - version "4.1.1" - resolved "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" - integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== - dependencies: - esquery "^1.0.1" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "@rolldown/binding-android-arm64@1.0.0-rc.4": version "1.0.0-rc.4" resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz#bb275690413cd0109d49ba5dd4491e1c0296ad0e" @@ -2191,45 +1428,16 @@ dependencies: "@sentry/types" "8.30.0" -"@sigstore/protobuf-specs@^0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" - integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== - -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== - -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" +"@sinclair/typebox@^0.34.0": + version "0.34.48" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz#75b0ead87e59e1adbd6dccdc42bad4fddee73b59" + integrity sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA== "@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== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -2250,19 +1458,6 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@tufjs/canonical-json@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" - integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== - -"@tufjs/models@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" - integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== - dependencies: - "@tufjs/canonical-json" "1.0.0" - minimatch "^9.0.0" - "@tybys/wasm-util@^0.10.1": version "0.10.1" resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" @@ -2270,6 +1465,13 @@ dependencies: tslib "^2.4.0" +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/axios@^0.14.0": version "0.14.0" resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" @@ -2277,7 +1479,7 @@ dependencies: axios "*" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": +"@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -2303,7 +1505,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*": version "7.18.5" resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== @@ -2410,13 +1612,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@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== - dependencies: - "@types/node" "*" - "@types/http-proxy@^1.17.9": version "1.17.11" resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" @@ -2424,35 +1619,11 @@ dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - "@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" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - "@types/mime@*": version "3.0.1" resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -2470,16 +1641,6 @@ dependencies: minimatch "*" -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - "@types/node@*": version "22.19.11" resolved "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz#7e1feaad24e4e36c52fa5558d5864bb4b272603e" @@ -2494,21 +1655,6 @@ dependencies: undici-types "~5.26.4" -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^2.1.5": - version "2.7.2" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== - "@types/prop-types@*": version "15.7.11" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" @@ -2569,11 +1715,6 @@ resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - "@types/tapable@^1": version "1.0.8" resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" @@ -2607,18 +1748,6 @@ anymatch "^3.0.0" source-map "^0.6.0" -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== - 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" @@ -3053,66 +2182,28 @@ resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0-rc.44" - resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.44.tgz#43bf7943c039681da8f343cc6d73c2ab3184978b" - integrity sha512-UVAt9Icc8zfGXioeYJ8XMoSTxOYVmlal2TRNxy9Uh91taS72kQFalK7LpIslcvEBKy4XtarmfIwcFIU3ZY64lw== +"@yarnpkg/parsers@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" + integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== dependencies: js-yaml "^3.10.0" tslib "^2.4.0" -"@zkochan/js-yaml@0.0.6": - version "0.0.6" - resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" - integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== +"@zkochan/js-yaml@0.0.7": + version "0.0.7" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" + integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== dependencies: argparse "^2.0.1" -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-import-assertions@^1.7.6: version "1.9.0" @@ -3124,52 +2215,28 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.1.1: - version "7.4.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: +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" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - -agent-base@6, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== - dependencies: - debug "^4.1.0" - depd "^2.0.0" - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -3198,23 +2265,11 @@ ansi-colors@^4.1.1: resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -3229,17 +2284,12 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^5.0.0: +ansi-styles@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.0: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3247,27 +2297,6 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" - integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== - dependencies: - delegates "^1.0.0" - readable-stream "^4.1.0" - arg@^4.1.0: version "4.1.3" resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -3293,21 +2322,11 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" @@ -3345,16 +2364,6 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.1.3" -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - assertion-error@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" @@ -3370,17 +2379,12 @@ asynckit@^0.4.0: resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@*, axios@^1.0.0, axios@^1.1.3: +axios@*, axios@^1.1.3: version "1.4.0" resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== @@ -3389,19 +2393,14 @@ axios@*, axios@^1.0.0, axios@^1.1.3: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" +axios@^1.12.0: + version "1.13.5" + resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" + integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" babel-loader@^8.0.0: version "8.3.0" @@ -3413,53 +2412,6 @@ babel-loader@^8.0.0: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@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" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - 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" @@ -3480,32 +2432,12 @@ baseline-browser-mapping@^2.9.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" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" - integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== - dependencies: - cmd-shim "^6.0.0" - npm-normalize-package-bin "^3.0.0" - read-cmd-shim "^4.0.0" - write-file-atomic "^5.0.0" - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.0.3, bl@^4.1.0: +bl@^4.0.3: version "4.1.0" resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -3554,18 +2486,13 @@ brace-expansion@^5.0.2: dependencies: balanced-match "^4.0.2" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserslist@^4.14.3: version "4.28.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" @@ -3587,13 +2514,6 @@ browserslist@^4.14.5, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3607,36 +2527,11 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -builtins@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -byte-size@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" - integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== - bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -3666,47 +2561,13 @@ cacache@^15.0.5: 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" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -cacache@^17.0.0, cacache@^17.0.4: - version "17.1.3" - resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -3721,25 +2582,6 @@ callsites@^3.0.0: resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-lite@^1.0.30001580: version "1.0.30001581" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" @@ -3755,14 +2597,6 @@ chai@^6.2.1: 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" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3772,15 +2606,7 @@ chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3788,31 +2614,6 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^3.5.1: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chownr@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -3823,21 +2624,6 @@ chrome-trace-event@^1.0.2: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0, ci-info@^3.6.1: - version "3.8.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -3860,20 +2646,6 @@ cli-spinners@^2.5.0: resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -3883,42 +2655,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - clone@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -cmd-shim@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" - integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -cmd-shim@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" - integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -3943,19 +2684,6 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -columnify@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3968,52 +2696,16 @@ commander@^2.20.0: resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -4026,89 +2718,7 @@ content-type@~1.0.4: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -conventional-changelog-angular@5.0.12: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-core@4.2.4: - version "4.2.4" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-recommended-bump@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -4133,22 +2743,6 @@ cookie@^0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -4165,7 +2759,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4174,57 +2768,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - csstype@^3.0.2: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4232,37 +2780,14 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.2.1: - version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -dedent@0.7.0, dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -4292,60 +2817,21 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -del@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0, depd@^2.0.0: +depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^27.5.1: - version "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@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -4372,46 +2858,36 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -dot-prop@6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== +dotenv-expand@~11.0.6: + version "11.0.7" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== dependencies: - is-obj "^2.0.0" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" + dotenv "^16.4.5" dotenv@^16.3.1: version "16.3.1" resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@^16.4.5: + version "16.6.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +dotenv@~16.4.5: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" ee-first@1.1.1: version "1.1.1" @@ -4435,21 +2911,11 @@ electron-to-chromium@^1.5.263: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4460,14 +2926,7 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4497,21 +2956,6 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -4559,6 +3003,16 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -4569,6 +3023,13 @@ es-module-lexer@^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-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + 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" @@ -4578,6 +3039,16 @@ es-set-tostringtag@^2.0.1: has "^1.0.3" has-tostringtag "^1.0.0" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -4955,28 +3426,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@^8.3.0: version "8.8.0" resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" @@ -5083,12 +3537,12 @@ espree@^9.5.2: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.4.2: +esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -5134,86 +3588,21 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0, events@^3.3.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - 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" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - express@^4.18.1: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" @@ -5251,31 +3640,11 @@ express@^4.18.1: utils-merge "1.0.1" vary "~1.1.2" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" @@ -5292,7 +3661,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -5304,19 +3673,12 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - 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== -figures@3.2.0, figures@^3.0.0: +figures@3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -5330,11 +3692,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-url@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" - integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== - filelist@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -5371,22 +3728,7 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5394,6 +3736,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5417,6 +3767,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.15.0: resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -5424,30 +3779,24 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== +form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" forwarded@0.2.0: @@ -5460,59 +3809,31 @@ fresh@0.5.2: resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +front-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" + integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== + dependencies: + js-yaml "^3.13.1" + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@9.1.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" -fs-minipass@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" - integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== - dependencies: - minipass "^5.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5527,6 +3848,11 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -5542,34 +3868,6 @@ functions-have-names@^1.2.2, functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gauge@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz#1efc801b8ff076b86ef3e9a7a280a975df572112" - integrity sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^4.0.1" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -5590,42 +3888,29 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" get-symbol-description@^1.0.0: version "1.0.0" @@ -5635,56 +3920,7 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -git-up@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" - integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== - dependencies: - is-ssh "^1.4.0" - parse-url "^8.1.0" - -git-url-parse@13.1.0: - version "13.1.0" - resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" - integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== - dependencies: - git-up "^7.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== - dependencies: - ini "^1.3.2" - -glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5703,30 +3939,6 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.4: - version "7.1.4" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^10.2.2: - version "10.5.0" - resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - glob@^13.0.6: version "13.0.6" resolved "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" @@ -5736,7 +3948,7 @@ glob@^13.0.6: minipass "^7.1.3" path-scurry "^2.0.2" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5748,7 +3960,7 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.0.3: +glob@^8.0.3: version "8.1.0" resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -5759,16 +3971,6 @@ glob@^8.0.1, glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@^9.2.0: - version "9.3.5" - resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5788,7 +3990,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@11.1.0, globby@^11.0.1, globby@^11.1.0: +globby@^11.1.0: version "11.1.0" resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -5807,12 +4009,12 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5827,28 +4029,6 @@ graphemer@^1.4.0: resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -5881,6 +4061,11 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -5888,10 +4073,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@2.0.1, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" has@^1.0.3: version "1.0.3" @@ -5900,56 +4087,18 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" - integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" - integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== - dependencies: - lru-cache "^7.5.1" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -5961,24 +4110,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" @@ -5996,68 +4127,28 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" - integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== - dependencies: - minimatch "^5.0.1" - -ignore-walk@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz#0fcdb6decaccda35e308a7b0948645dd9523b7bb" - integrity sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0: +ignore@^5.2.0: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +ignore@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + immediate@~3.0.5: version "3.0.6" resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -6071,14 +4162,6 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6102,71 +4185,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.2, ini@^1.3.4: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -init-package-json@3.0.2, init-package-json@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" - integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== - dependencies: - npm-package-arg "^9.0.1" - promzard "^0.3.0" - read "^1.0.7" - read-package-json "^5.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^4.0.0" - -inquirer@8.2.4: - version "8.2.4" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" - integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - -inquirer@^8.2.4: - version "8.2.5" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - internal-slot@^1.0.3, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -6176,11 +4199,6 @@ internal-slot@^1.0.3, internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -6207,13 +4225,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -6234,14 +4245,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.11.0, is-core-module@^2.9.0: version "2.12.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== @@ -6270,12 +4274,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -6287,11 +4286,6 @@ is-interactive@^1.0.0: resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - is-module@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6314,43 +4308,11 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: +is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - is-reference@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -6373,23 +4335,6 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-ssh@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" - integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== - dependencies: - protocols "^2.0.1" - -is-stream@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -6404,13 +4349,6 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== - dependencies: - text-extensions "^1.0.0" - is-typed-array@^1.1.10, is-typed-array@^1.1.9: version "1.1.10" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" @@ -6422,11 +4360,6 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -6446,72 +4379,11 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jake@^10.8.5: version "10.8.6" resolved "https://registry.npmjs.org/jake/-/jake-10.8.6.tgz#227a96786a1e035214e0ba84b482d6223d41ef04" @@ -6522,343 +4394,15 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-config@27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - 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" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - 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" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -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" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -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-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" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - 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" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -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" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -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" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - 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" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@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" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^27.5.1: - version "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-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" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - 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" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - 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 "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - 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" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== +jest-diff@^30.0.2: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -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" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@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" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + pretty-format "30.2.0" jest-worker@^26.5.0: version "26.6.2" @@ -6869,7 +4413,7 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.4.5, jest-worker@^27.5.1: +jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -6883,13 +4427,6 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -6898,38 +4435,12 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" jsesc@^2.5.1: version "2.5.2" @@ -6941,16 +4452,11 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-parse-even-better-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" - integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -6961,52 +4467,16 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@3.0.0: - version "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: 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== -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -7015,108 +4485,6 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: array-includes "^3.1.5" object.assign "^4.1.3" -just-diff-apply@^5.2.0: - version "5.5.0" - resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" - integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== - -just-diff@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" - integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -lerna@^6.6.2: - version "6.6.2" - resolved "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" - integrity sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg== - dependencies: - "@lerna/child-process" "6.6.2" - "@lerna/create" "6.6.2" - "@lerna/legacy-package-management" "6.6.2" - "@npmcli/arborist" "6.2.3" - "@npmcli/run-script" "4.1.7" - "@nrwl/devkit" ">=15.5.2 < 16" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.3" - byte-size "7.0.0" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "5.0.0" - columnify "1.6.0" - config-chain "1.1.12" - conventional-changelog-angular "5.0.12" - conventional-changelog-core "4.2.4" - conventional-recommended-bump "6.1.0" - cosmiconfig "7.0.0" - dedent "0.7.0" - dot-prop "6.0.1" - envinfo "^7.7.4" - execa "5.0.0" - fs-extra "9.1.0" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.10" - has-unicode "2.0.1" - import-local "^3.0.2" - init-package-json "3.0.2" - inquirer "^8.2.4" - is-ci "2.0.0" - is-stream "2.0.0" - js-yaml "^4.1.0" - libnpmaccess "^6.0.3" - libnpmpublish "7.1.4" - load-json-file "6.2.0" - make-dir "3.1.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "^14.0.3" - npmlog "^6.0.2" - nx ">=15.5.2 < 16" - p-map "4.0.0" - p-map-series "2.1.0" - p-pipe "3.1.0" - p-queue "6.6.2" - p-reduce "2.1.0" - p-waterfall "2.1.1" - pacote "15.1.1" - pify "5.0.0" - read-cmd-shim "3.0.0" - read-package-json "5.0.1" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.8" - signal-exit "3.0.7" - slash "3.0.0" - ssri "9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - typescript "^3 || ^4" - upath "^2.0.1" - uuid "8.3.2" - validate-npm-package-license "3.0.4" - validate-npm-package-name "4.0.0" - write-file-atomic "4.0.1" - write-pkg "4.0.0" - yargs "16.2.0" - yargs-parser "20.2.4" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7125,38 +4493,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libnpmaccess@^6.0.3: - version "6.0.4" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" - integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^9.0.1" - npm-registry-fetch "^13.0.0" - -libnpmpublish@7.1.4: - version "7.1.4" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz#a0d138e00e52a0c71ffc82273acf0082fc2dfb36" - integrity sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg== - dependencies: - ci-info "^3.6.1" - normalize-package-data "^5.0.0" - npm-package-arg "^10.1.0" - npm-registry-fetch "^14.0.3" - proc-log "^3.0.0" - semver "^7.3.7" - sigstore "^1.4.0" - ssri "^10.0.1" - lie@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -7164,26 +4500,11 @@ lie@3.1.1: dependencies: immediate "~3.0.5" -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lines-and-columns@~2.0.3: +lines-and-columns@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== -load-json-file@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -7220,14 +4541,6 @@ localforage@^1.8.1: dependencies: lie "3.1.1" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -7242,22 +4555,12 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: +log-symbols@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -7272,11 +4575,6 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - lru-cache@^11.0.0: version "11.2.6" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58" @@ -7296,11 +4594,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -7313,85 +4606,22 @@ magic-string@^0.30.21, magic-string@^0.30.3, magic-string@~0.30.8: 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: +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" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: - version "10.2.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.0: - version "11.1.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" - http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^10.0.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== media-typer@0.3.0: version "0.3.0" @@ -7403,23 +4633,6 @@ memorystream@^0.3.1: resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7470,11 +4683,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimatch@*, minimatch@^10.2.2: version "10.2.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" @@ -7482,12 +4690,12 @@ minimatch@*, minimatch@^10.2.2: dependencies: brace-expansion "^5.0.2" -minimatch@3.0.5: - version "3.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" - integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== +minimatch@10.1.1: + version "10.1.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" + integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== dependencies: - brace-expansion "^1.1.7" + "@isaacs/brace-expansion" "^5.0.0" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.3" @@ -7503,37 +4711,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^6.1.6: - version "6.2.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" - integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.0, minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -7545,28 +4723,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-fetch@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" - integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== - dependencies: - minipass "^5.0.0" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -7574,46 +4730,26 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2: 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== dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: +minipass@^3.0.0, minipass@^3.1.1: version "3.3.6" resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minipass@^4.0.0, minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: +minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== @@ -7623,7 +4759,7 @@ minipass@^7.1.3: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== -minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -7631,30 +4767,11 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -mri@^1.1.5: - version "1.2.0" - resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7665,38 +4782,11 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0: +ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nanoid@^3.3.11: version "3.3.11" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" @@ -7717,12 +4807,12 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3, negotiator@^0.6.3: +negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -7732,250 +4822,42 @@ nice-try@^1.0.4: resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - node-fetch@^2.6.7: version "2.6.11" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== - -node-gyp@^9.0.0: - version "9.3.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" - integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "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" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -nopt@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz#91f6a3366182176e72ecab93a09c19b63b485f28" - integrity sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q== - dependencies: - abbrev "^2.0.0" - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" - integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== - dependencies: - hosted-git-info "^5.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" - integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== - dependencies: - hosted-git-info "^6.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-bundled@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-bundled@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" - integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" - integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-normalize-package-bin@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" - integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== - -npm-normalize-package-bin@^3.0.0, npm-normalize-package-bin@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" - integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" + whatwg-url "^5.0.0" -npm-package-arg@^9.0.1: - version "9.1.2" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" - integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== - dependencies: - hosted-git-info "^5.0.0" - proc-log "^2.0.1" - semver "^7.3.5" - validate-npm-package-name "^4.0.0" +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -npm-packlist@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" - integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== - dependencies: - glob "^8.0.1" - ignore-walk "^5.0.1" - npm-bundled "^1.1.2" - npm-normalize-package-bin "^1.0.1" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -npm-packlist@^7.0.0: - version "7.0.4" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" - integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== - dependencies: - ignore-walk "^6.0.0" +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== -npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" - integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^10.0.0" - semver "^7.3.5" + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -npm-registry-fetch@14.0.3: - version "14.0.3" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" - integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^4.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - -npm-registry-fetch@^13.0.0: - version "13.3.1" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" - integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== - dependencies: - make-fetch-happen "^10.0.6" - minipass "^3.1.6" - minipass-fetch "^2.0.3" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^9.0.1" - proc-log "^2.0.0" - -npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: - version "14.0.5" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-all@^4.1.5: version "4.1.5" @@ -7992,124 +4874,65 @@ npm-run-all@^4.1.5: shell-quote "^1.6.1" string.prototype.padend "^3.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== +nx@22.5.2: + version "22.5.2" + resolved "https://registry.npmjs.org/nx/-/nx-22.5.2.tgz#277c1dd3c94fab69039425f182a66da9397f1ce9" + integrity sha512-s7dd2BZQOremv1AYhxwBY6NzJV9ETa6/OJ/zau/ulbLnHu8E5UAv+EjMC80m3qP3nob5OXnWiITKM9CcOHy6qw== dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -npmlog@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" - integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== - dependencies: - are-we-there-yet "^4.0.0" - console-control-strings "^1.1.0" - gauge "^5.0.0" - set-blocking "^2.0.0" - -nwsapi@^2.2.0: - version "2.2.4" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" - integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== - -nx@14.5.10: - version "14.5.10" - resolved "https://registry.npmjs.org/nx/-/nx-14.5.10.tgz#cc950bcc2d867f0aa4e86a508842a9299650fbb9" - integrity sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg== - dependencies: - "@nrwl/cli" "14.5.10" - "@nrwl/tao" "14.5.10" - "@parcel/watcher" "2.0.4" - chalk "4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^7.0.2" - dotenv "~10.0.0" - enquirer "~2.3.6" - fast-glob "3.2.7" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^10.1.0" - glob "7.1.4" - ignore "^5.0.4" - js-yaml "4.1.0" - jsonc-parser "3.0.0" - minimatch "3.0.5" - npm-run-path "^4.0.1" - open "^8.4.0" - semver "7.3.4" - string-width "^4.2.3" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^3.9.0" - tslib "^2.3.0" - v8-compile-cache "2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" - -nx@15.9.4, "nx@>=15.5.2 < 16": - version "15.9.4" - resolved "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz#1075bc33fe8ee6c6546c21ec6ffcfd2e000946c6" - integrity sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA== - dependencies: - "@nrwl/cli" "15.9.4" - "@nrwl/tao" "15.9.4" - "@parcel/watcher" "2.0.4" + "@napi-rs/wasm-runtime" "0.2.4" "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" - "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" - chalk "^4.1.0" + "@yarnpkg/parsers" "3.0.2" + "@zkochan/js-yaml" "0.0.7" + axios "^1.12.0" cli-cursor "3.1.0" cli-spinners "2.6.1" - cliui "^7.0.2" - dotenv "~10.0.0" + cliui "^8.0.1" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + ejs "^3.1.7" enquirer "~2.3.6" - fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" - fs-extra "^11.1.0" - glob "7.1.4" - ignore "^5.0.4" - js-yaml "4.1.0" + front-matter "^4.0.2" + ignore "^7.0.5" + jest-diff "^30.0.2" jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "3.0.5" + lines-and-columns "2.0.3" + minimatch "10.1.1" + node-machine-id "1.1.12" npm-run-path "^4.0.1" open "^8.4.0" - semver "7.3.4" + ora "5.3.0" + picocolors "^1.1.0" + resolve.exports "2.0.3" + semver "^7.6.3" string-width "^4.2.3" - strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" + tree-kill "^1.2.2" tsconfig-paths "^4.1.2" tslib "^2.3.0" - v8-compile-cache "2.3.0" + yaml "^2.6.0" yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nrwl/nx-darwin-arm64" "15.9.4" - "@nrwl/nx-darwin-x64" "15.9.4" - "@nrwl/nx-linux-arm-gnueabihf" "15.9.4" - "@nrwl/nx-linux-arm64-gnu" "15.9.4" - "@nrwl/nx-linux-arm64-musl" "15.9.4" - "@nrwl/nx-linux-x64-gnu" "15.9.4" - "@nrwl/nx-linux-x64-musl" "15.9.4" - "@nrwl/nx-win32-arm64-msvc" "15.9.4" - "@nrwl/nx-win32-x64-msvc" "15.9.4" + "@nx/nx-darwin-arm64" "22.5.2" + "@nx/nx-darwin-x64" "22.5.2" + "@nx/nx-freebsd-x64" "22.5.2" + "@nx/nx-linux-arm-gnueabihf" "22.5.2" + "@nx/nx-linux-arm64-gnu" "22.5.2" + "@nx/nx-linux-arm64-musl" "22.5.2" + "@nx/nx-linux-x64-gnu" "22.5.2" + "@nx/nx-linux-x64-musl" "22.5.2" + "@nx/nx-win32-arm64-msvc" "22.5.2" + "@nx/nx-win32-x64-msvc" "22.5.2" object-assign@^4.1.1: version "4.1.1" @@ -8183,14 +5006,14 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.0: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -8206,18 +5029,6 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -8230,26 +5041,20 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== +ora@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== dependencies: - bl "^4.1.0" + bl "^4.0.3" chalk "^4.1.0" cli-cursor "^3.1.0" cli-spinners "^2.5.0" is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" + log-symbols "^4.0.0" strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - oxfmt@^0.33.0: version "0.33.0" resolved "https://registry.npmjs.org/oxfmt/-/oxfmt-0.33.0.tgz#6712d25c10d78b2313bf92d4a38a3a34952f7f5f" @@ -8277,18 +5082,6 @@ oxfmt@^0.33.0: "@oxfmt/binding-win32-ia32-msvc" "0.33.0" "@oxfmt/binding-win32-x64-msvc" "0.33.0" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -8303,13 +5096,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -8324,113 +5110,18 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@4.0.0, p-map@^4.0.0: +p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@6.6.2: - version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== - dependencies: - p-reduce "^2.0.0" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -pacote@15.1.1: - version "15.1.1" - resolved "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" - integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== - dependencies: - "@npmcli/git" "^4.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^6.0.1" - "@npmcli/run-script" "^6.0.0" - cacache "^17.0.0" - fs-minipass "^3.0.0" - minipass "^4.0.0" - npm-package-arg "^10.0.0" - npm-packlist "^7.0.0" - npm-pick-manifest "^8.0.0" - npm-registry-fetch "^14.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^6.0.0" - read-package-json-fast "^3.0.0" - sigstore "^1.0.0" - ssri "^10.0.0" - tar "^6.1.11" - -pacote@^15.0.0, pacote@^15.0.8: - version "15.2.0" - resolved "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" - integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== - dependencies: - "@npmcli/git" "^4.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^6.0.1" - "@npmcli/run-script" "^6.0.0" - cacache "^17.0.0" - fs-minipass "^3.0.0" - minipass "^5.0.0" - npm-package-arg "^10.0.0" - npm-packlist "^7.0.0" - npm-pick-manifest "^8.0.0" - npm-registry-fetch "^14.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^6.0.0" - read-package-json-fast "^3.0.0" - sigstore "^1.3.0" - ssri "^10.0.0" - tar "^6.1.11" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -8438,15 +5129,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-conflict-json@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" - integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== - dependencies: - json-parse-even-better-errors "^3.0.0" - just-diff "^6.0.0" - just-diff-apply "^5.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8455,45 +5137,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-path@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" - integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== - dependencies: - protocols "^2.0.0" - -parse-url@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" - integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== - dependencies: - parse-path "^7.0.0" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -8519,14 +5167,6 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1, path-scurry@^1.6.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" @@ -8562,12 +5202,12 @@ 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: +picocolors@^1.1.0, 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: +picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -8582,31 +5222,11 @@ pidtree@^0.3.0: resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== -pify@5.0.0, pify@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - pify@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -8614,14 +5234,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -postcss-selector-parser@^6.0.10: - version "6.0.13" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - postcss@^8.4.14: version "8.4.23" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" @@ -8645,101 +5257,30 @@ prelude-ls@^1.2.1: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - premove@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz#813a87462dca591946e60ebd97c95092f0743aee" integrity sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ== -pretty-format@29.4.3: - version "29.4.3" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" - integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== +pretty-format@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== dependencies: - "@jest/schemas" "^29.4.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-quick@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" - integrity sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA== - dependencies: - chalk "^3.0.0" - execa "^4.0.0" - find-up "^4.1.0" - ignore "^5.1.4" - mri "^1.1.5" - multimatch "^4.0.0" - -proc-log@^2.0.0, proc-log@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" - integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + "@jest/schemas" "30.0.5" + ansi-styles "^5.2.0" + react-is "^18.3.1" progress@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" - integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== - dependencies: - read "1" - prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -8749,16 +5290,6 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protocols@^2.0.0, protocols@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" - integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -8772,29 +5303,11 @@ proxy-from-env@^1.1.0: resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -q@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -8802,21 +5315,11 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -8852,15 +5355,10 @@ react-is@^16.13.1: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-refresh@^0.14.0: version "0.14.0" @@ -8874,79 +5372,6 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" -read-cmd-shim@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" - integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== - -read-cmd-shim@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" - integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== - -read-package-json-fast@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" - integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== - dependencies: - glob "^8.0.1" - json-parse-even-better-errors "^2.3.1" - normalize-package-data "^4.0.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" - integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== - dependencies: - glob "^8.0.1" - json-parse-even-better-errors "^2.3.1" - normalize-package-data "^4.0.0" - npm-normalize-package-bin "^2.0.0" - -read-package-json@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz#726116b75e00eac2075240995f05681af4ca7122" - integrity sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -8956,24 +5381,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== - dependencies: - mute-stream "~0.0.4" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -8982,44 +5390,6 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^4.1.0: - version "4.4.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" - integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - regexp.prototype.flags@^1.4.3: version "1.5.0" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -9039,34 +5409,17 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve.exports@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== +resolve.exports@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.10.0, resolve@^1.22.1: version "1.22.2" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -9092,11 +5445,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -9109,13 +5457,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^4.4.1: - version "4.4.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - rolldown@^1.0.0-rc.4: version "1.0.0-rc.4" resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz#c22246260ab3da62caa209556e26d81fe516cf10" @@ -9186,11 +5527,6 @@ rollup@^4.43.0: "@rollup/rollup-win32-x64-msvc" "4.59.0" 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" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9198,30 +5534,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.5.4: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -9231,18 +5548,11 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - scheduler@^0.23.0: version "0.23.0" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" @@ -9277,37 +5587,28 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.4: - version "7.3.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@7.3.8: - version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@^7.3.5, semver@^7.3.7: version "7.5.1" resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" +semver@^7.6.3: + version "7.7.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -9351,23 +5652,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -9411,59 +5700,16 @@ siginfo@^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: +signal-exit@^3.0.2: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== - -sigstore@^1.0.0, sigstore@^1.3.0, sigstore@^1.4.0: - version "1.5.2" - resolved "https://registry.npmjs.org/sigstore/-/sigstore-1.5.2.tgz#8d4c2a549341211cb08c687999843edc48c1a94c" - integrity sha512-X95v6xAAooVpn7PaB94TDmFeSO5SBfCtB1R23fvzr36WTfjtkiiyOeei979nbTjc8nzh6FSLeltQZuODsm1EjQ== - dependencies: - "@sigstore/protobuf-specs" "^0.1.0" - make-fetch-happen "^11.0.1" - tuf-js "^1.1.3" - -slash@3.0.0, slash@^3.0.0: +slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.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" @@ -9479,7 +5725,7 @@ source-map-js@^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-support@^0.5.6, source-map-support@~0.5.20: +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" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9523,38 +5769,10 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== -split2@^3.0.0: - version "3.2.2" - resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -ssri@9.0.1, ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -ssri@^10.0.0, ssri@^10.0.1: - version "10.0.4" - resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" - integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== - dependencies: - minipass "^5.0.0" + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^8.0.1: version "8.0.1" @@ -9563,13 +5781,6 @@ ssri@^8.0.1: 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" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - 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" @@ -9585,24 +5796,7 @@ std-env@^3.10.0: resolved "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9611,15 +5805,6 @@ string-length@^4.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - string.prototype.matchall@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" @@ -9677,20 +5862,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -9698,49 +5869,16 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9762,24 +5900,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - tapable@^2.0.0, tapable@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" @@ -9801,18 +5926,6 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@6.1.11: - version "6.1.11" - resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - 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" @@ -9825,47 +5938,6 @@ tar@^6.0.2: 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" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== - 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" - -temp-dir@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" - integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - 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" @@ -9912,50 +5984,11 @@ terser@^5.3.4: 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" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - tinybench@^2.9.0: version "2.9.0" resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" @@ -9984,13 +6017,6 @@ tinyrainbow@^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" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmp@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -9998,11 +6024,6 @@ tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -10020,37 +6041,15 @@ toidentifier@1.0.1: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -treeverse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" - integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== ts-node@^10.9.1, ts-node@^10.9.2: version "10.9.2" @@ -10071,16 +6070,6 @@ ts-node@^10.9.1, ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.9.0: - version "3.14.2" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -10090,12 +6079,12 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: +tslib@^2.3.0, tslib@^2.4.0: version "2.5.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== @@ -10107,15 +6096,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tuf-js@^1.1.3: - version "1.1.6" - resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.6.tgz#ad3e7a20237b83b51c2a8f9d1ddf093279a10fc2" - integrity sha512-CXwFVIsXGbVY4vFiWF7TJKWmlKJAT8TWkH4RmiohJRcDJInix++F0dznDmoVbtJNzZ8yLprKUG4YrDIhv3nBMg== - dependencies: - "@tufjs/models" "1.0.4" - debug "^4.3.4" - make-fetch-happen "^11.1.0" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -10123,53 +6103,11 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10187,28 +6125,11 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -"typescript@^3 || ^4", typescript@^4.7.4: +typescript@^4.7.4: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -10236,20 +6157,6 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -10257,52 +6164,11 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -upath@2.0.1, upath@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -10326,15 +6192,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -10344,31 +6202,12 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -10376,27 +6215,6 @@ validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validat spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" - integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== - dependencies: - builtins "^5.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -validate-npm-package-name@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" - integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - dependencies: - builtins "^5.0.0" - vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -10454,32 +6272,6 @@ vitest@^4.0.0: vite "^6.0.0 || ^7.0.0" why-is-node-running "^2.3.0" -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walk-up-path@^1.0.0: - version "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: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - watchpack@^2.0.0: version "2.5.1" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" @@ -10496,7 +6288,7 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wcwidth@^1.0.0, wcwidth@^1.0.1: +wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== @@ -10508,16 +6300,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "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.3: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -10599,18 +6381,6 @@ webpack@5.74.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -10619,15 +6389,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -10665,13 +6426,6 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -which@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" - integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== - 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" @@ -10680,32 +6434,11 @@ why-is-node-running@^2.3.0: 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" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -10715,96 +6448,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -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" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-pkg@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -10820,45 +6468,17 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@21.0.1: - version "21.0.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yaml@^2.6.0: + version "2.8.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@16.2.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.4.0, yargs@^17.6.2: +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 ef7d97f4c6f93b8a0937876adeb97e88b0d3d9ad Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 6 Mar 2026 00:42:57 +0100 Subject: [PATCH 602/640] test: New integration tests (#896) --- .github/workflows/checks.yml | 35 +- .vscode/settings.json | 2 +- nx.json | 19 +- package.json | 11 +- .../package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- .../src/sentry/transports.ts | 9 + packages/esbuild-plugin/package.json | 2 +- packages/integration-tests-next/.eslintrc.js | 16 + packages/integration-tests-next/.gitignore | 1 + .../rolldown/after-upload-deletion.config.ts | 18 + .../rolldown/after-upload-deletion.test.ts | 18 + .../rolldown/application-key.config.ts | 10 + .../fixtures/rolldown/application-key.test.ts | 14 + .../rolldown/basic-release-disabled.config.ts | 10 + .../rolldown/basic-release-disabled.test.ts | 14 + .../rolldown/basic-sourcemaps.config.ts | 18 + .../rolldown/basic-sourcemaps.test.ts | 24 ++ .../fixtures/rolldown/basic.config.ts | 17 + .../fixtures/rolldown/basic.test.ts | 22 + .../fixtures/rolldown/build-info.config.ts | 18 + .../fixtures/rolldown/build-info.test.ts | 14 + .../bundle-size-optimizations.config.ts | 22 + .../bundle-size-optimizations.test.ts | 27 ++ .../component-annotation-disabled.config.ts | 13 + .../component-annotation-disabled.test.ts | 25 ++ .../component-annotation-next.config.ts | 18 + .../component-annotation-next.test.ts | 31 ++ .../rolldown/component-annotation.config.ts | 13 + .../rolldown/component-annotation.test.ts | 36 ++ .../rolldown/debugid-disabled.config.ts | 21 + .../rolldown/debugid-disabled.test.ts | 16 + .../debugids-already-injected.config.ts | 20 + .../debugids-already-injected.test.ts | 21 + .../rolldown/module-metadata.config.ts | 12 + .../fixtures/rolldown/module-metadata.test.ts | 17 + .../rolldown/multiple-entry-points.config.ts | 11 + .../rolldown/multiple-entry-points.test.ts | 40 ++ .../fixtures/rolldown/package.json | 10 + .../fixtures/rolldown/query-param.config.ts | 11 + .../fixtures/rolldown/query-param.test.ts | 34 ++ .../rolldown/release-disabled.config.ts | 18 + .../rolldown/release-disabled.test.ts | 18 + .../fixtures/rolldown/src/app.jsx | 9 + .../fixtures/rolldown/src/basic.js | 2 + .../fixtures/rolldown/src/bundle.js | 10 + .../fixtures/rolldown/src/common.js | 3 + .../fixtures/rolldown/src/component-a.jsx | 3 + .../fixtures/rolldown/src/entry1.js | 3 + .../fixtures/rolldown/src/entry2.js | 3 + .../fixtures/rolldown/telemetry.config.ts | 10 + .../fixtures/rolldown/telemetry.test.ts | 19 + .../fixtures/rolldown/utils.ts | 62 +++ .../integration-tests-next/fixtures/utils.ts | 84 ++++ packages/integration-tests-next/package.json | 30 ++ packages/integration-tests-next/tsconfig.json | 10 + packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- patches/@sentry+cli+2.58.5.patch | 18 + yarn.lock | 375 +++++++++++++----- 61 files changed, 1256 insertions(+), 121 deletions(-) create mode 100644 packages/integration-tests-next/.eslintrc.js create mode 100644 packages/integration-tests-next/.gitignore create mode 100644 packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/application-key.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/build-info.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/package.json create mode 100644 packages/integration-tests-next/fixtures/rolldown/query-param.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/common.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/utils.ts create mode 100644 packages/integration-tests-next/fixtures/utils.ts create mode 100644 packages/integration-tests-next/package.json create mode 100644 packages/integration-tests-next/tsconfig.json create mode 100644 patches/@sentry+cli+2.58.5.patch diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 5d734ca4a429..ee7da062d096 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -145,13 +145,36 @@ jobs: with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache + - name: Install dependencies + run: yarn --frozen-lockfile --ignore-engines + if: steps.dependency-cache.outputs.cache-hit != 'true' + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages + - run: yarn test:integration + + test-integration-next: + needs: build + name: "Integration Tests Next (Node ${{ matrix.node-version }}, OS ${{ matrix.os }})" + strategy: + fail-fast: false + matrix: + node-version: [18, 20, 22, 24] + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: Use dependency cache uses: actions/cache@v4 + id: dependency-cache with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- + path: "**/node_modules" + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' @@ -160,7 +183,7 @@ jobs: with: name: dist-artifacts-${{ github.run_id }} path: packages - - run: yarn test:integration + - run: yarn test:integration-next test-e2e: # We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks diff --git a/.vscode/settings.json b/.vscode/settings.json index e40b7be8e89c..90150e961f66 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "editor.defaultFormatter": "oxc.oxc-vscode", + "editor.defaultFormatter": "oxc.oxc-vscode" } diff --git a/nx.json b/nx.json index b3f81064fd30..3370dbfae283 100644 --- a/nx.json +++ b/nx.json @@ -1,30 +1,28 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", "namedInputs": { + "default": ["{projectRoot}/**/*", "sharedGlobals"], "sharedGlobals": ["{workspaceRoot}/*.js", "{workspaceRoot}/*.json", "{workspaceRoot}/yarn.lock"] }, "targetDefaults": { "build": { - "inputs": ["sharedGlobals"], + "inputs": ["default"], "dependsOn": ["^build"], "outputs": ["{projectRoot}/dist"], "cache": true }, "lint": { - "inputs": ["sharedGlobals"], + "inputs": ["default"], "dependsOn": ["^build", "build"], - "outputs": [], "cache": true }, "test": { - "inputs": ["sharedGlobals"], - "outputs": [], - "cache": true + "inputs": ["default"], + "cache": false }, "check:types": { - "inputs": ["sharedGlobals"], - "dependsOn": ["^build"], - "outputs": [] + "inputs": ["default"], + "dependsOn": ["^build"] }, "build:npm": { "dependsOn": ["build", "^build"] @@ -33,5 +31,8 @@ "cacheDirectory": ".nxcache", "tui": { "autoExit": true + }, + "nxCloudOptions": { + "detectFlakyTasks": false } } diff --git a/package.json b/package.json index ac81fe63095d..faec26e2627b 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,12 @@ "packages/rollup-plugin", "packages/tsconfigs", "packages/vite-plugin", - "packages/webpack-plugin" + "packages/webpack-plugin", + "packages/integration-tests-next", + "packages/integration-tests-next/fixtures/rolldown" ], "scripts": { + "postinstall": "patch-package", "build": "nx run-many --target=build --all", "build:watch": "nx run-many --target=build:watch --all", "build:graph": "nx graph", @@ -29,8 +32,9 @@ "clean:all": "nx run-many --target=clean:all --all && yarn", "test": "nx run-many --target=test --all --exclude=@sentry-internal/bundler-plugin-e2e-tests", "test:all": "nx run-many --target=test --all", - "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/bundler-plugin-e2e-tests", + "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/integration-tests-next,@sentry-internal/bundler-plugin-e2e-tests", "test:integration": "nx run @sentry-internal/integration-tests:test", + "test:integration-next": "nx run @sentry-internal/integration-tests-next:test", "test:e2e": "nx run @sentry-internal/bundler-plugin-e2e-tests:test", "lint": "nx run-many --target=lint --all", "check:formatting": "oxfmt --check .", @@ -41,7 +45,8 @@ "npm-run-all": "^4.1.5", "nx": "22.5.2", "oxfmt": "^0.33.0", - "ts-node": "^10.9.2" + "ts-node": "^10.9.2", + "patch-package": "^8.0.1" }, "volta": { "node": "22.22.0", diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index e38e2222250f..01a50abd4b41 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -58,7 +58,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index db6b7e6505da..b6ac8a15acc1 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -72,7 +72,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugin-core/src/sentry/transports.ts index 49169d817271..0bcccee524e9 100644 --- a/packages/bundler-plugin-core/src/sentry/transports.ts +++ b/packages/bundler-plugin-core/src/sentry/transports.ts @@ -119,6 +119,15 @@ export function makeOptionallyEnabledNodeTransport( } if (await shouldSendTelemetry) { + if (process.env["SENTRY_TEST_OUT_DIR"]) { + // eslint-disable-next-line @typescript-eslint/unbound-method + const { join } = await import("node:path"); + const { appendFileSync } = await import("node:fs"); + const path = join(process.env["SENTRY_TEST_OUT_DIR"], "sentry-telemetry.json"); + appendFileSync(path, JSON.stringify(request) + ",\n"); + return { statusCode: 200 }; + } + return nodeTransport.send(request); } diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d48ae29f8511..d34de3760362 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -57,7 +57,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/integration-tests-next/.eslintrc.js b/packages/integration-tests-next/.eslintrc.js new file mode 100644 index 000000000000..86143395211f --- /dev/null +++ b/packages/integration-tests-next/.eslintrc.js @@ -0,0 +1,16 @@ +/** @type {import('eslint').ESLint.Options} */ +module.exports = { + root: true, + extends: ["@sentry-internal/eslint-config/base"], + ignorePatterns: [".eslintrc.js", "fixtures/*/out", "fixtures/*/src"], + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json"], + }, + env: { + node: true, + }, + rules: { + "@typescript-eslint/explicit-function-return-type": "off", + }, +}; diff --git a/packages/integration-tests-next/.gitignore b/packages/integration-tests-next/.gitignore new file mode 100644 index 000000000000..608c2472c35a --- /dev/null +++ b/packages/integration-tests-next/.gitignore @@ -0,0 +1 @@ +fixtures/*/out/** diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts new file mode 100644 index 000000000000..dd228f17ab04 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts @@ -0,0 +1,18 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/after-upload-deletion/basic.js", + sourcemap: true, + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + sourcemaps: { + filesToDeleteAfterUpload: ["out/after-upload-deletion/basic.js.map"], + }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts new file mode 100644 index 000000000000..2adae02286fb --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion + //# sourceMappingURL=basic.js.map", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts new file mode 100644 index 000000000000..9b6c7fb212c8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts @@ -0,0 +1,10 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/application-key/basic.js", + }, + plugins: [sentryRollupPlugin({ telemetry: false, applicationKey: "1234567890abcdef" })], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts new file mode 100644 index 000000000000..99e7f1fdfb60 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts @@ -0,0 +1,14 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.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]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts new file mode 100644 index 000000000000..56b5a6f5d3e5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts @@ -0,0 +1,18 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-sourcemaps/basic.js", + sourcemap: true, + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..390d99bb3380 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts @@ -0,0 +1,24 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";scACA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,CAAA,KAAA,CAAA,CAAc"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.config.ts b/packages/integration-tests-next/fixtures/rolldown/basic.config.ts new file mode 100644 index 000000000000..689db6b98110 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic.config.ts @@ -0,0 +1,17 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic/basic.js", + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts new file mode 100644 index 000000000000..e8754b21b911 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts new file mode 100644 index 000000000000..6d059daed145 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts @@ -0,0 +1,18 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/build-info/basic.js", + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + release: { + name: "build-information-injection-test", + }, + _experiments: { injectBuildInformation: true }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts new file mode 100644 index 000000000000..57c07363ffd1 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts @@ -0,0 +1,14 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["react","rolldown"],"depsVersions":{"react":19},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts new file mode 100644 index 000000000000..c7cbbd244d2e --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts @@ -0,0 +1,22 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/bundle.js", + output: { + file: "out/bundle-size-optimizations/bundle.js", + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + bundleSizeOptimizations: { + excludeDebugStatements: true, + excludeTracing: true, + excludeReplayCanvas: true, + excludeReplayIframe: true, + excludeReplayShadowDom: true, + excludeReplayWorker: true, + }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..7f7c1b6a209f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "//#region src/bundle.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92a38845-d1ee-42b4-9812-67a76e42b480",e._sentryDebugIdIdentifier="sentry-dbid-92a38845-d1ee-42b4-9812-67a76e42b480");}catch(e){}}();console.log(JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a", + replayIframe: "a", + replayShadowDom: "a", + replayWorker: "a" + })); + + //#endregion", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts new file mode 100644 index 000000000000..6408342cee4f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts @@ -0,0 +1,13 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-disabled/app.js", + }, + plugins: [sentryRollupPlugin({ telemetry: false })], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..f6579e7a713c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ea5adc74-2664-4c38-8492-6e4971efd2be",e._sentryDebugIdIdentifier="sentry-dbid-ea5adc74-2664-4c38-8492-6e4971efd2be");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { children: "Component A" }); + } + + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] }); + } + + //#endregion + export { App as default };", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts new file mode 100644 index 000000000000..6023cb4ce611 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts @@ -0,0 +1,18 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-next/app.js", + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + reactComponentAnnotation: { enabled: true, _experimentalInjectIntoHtml: true }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts new file mode 100644 index 000000000000..22d0fb42e7a4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aa1666c7-eaca-4b84-8c40-9ac56cc75bfb",e._sentryDebugIdIdentifier="sentry-dbid-aa1666c7-eaca-4b84-8c40-9ac56cc75bfb");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }); + } + + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { + "data-sentry-component": "App", + children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] + }); + } + + //#endregion + export { App as default };", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts new file mode 100644 index 000000000000..aa013df1e8f2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts @@ -0,0 +1,13 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation/app.js", + }, + plugins: [sentryRollupPlugin({ telemetry: false, reactComponentAnnotation: { enabled: true } })], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts new file mode 100644 index 000000000000..cf57acfb2194 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts @@ -0,0 +1,36 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="adb3af3a-5b4a-49fd-b8ae-7ea0905020b6",e._sentryDebugIdIdentifier="sentry-dbid-adb3af3a-5b4a-49fd-b8ae-7ea0905020b6");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }); + } + + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/* @__PURE__ */ jsx(ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }), ";"] + }); + } + + //#endregion + export { App as default };", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts new file mode 100644 index 000000000000..48a93f32e9ab --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts @@ -0,0 +1,21 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/debugid-disabled/basic.js", + sourcemap: true, + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + sourcemaps: { + disable: true, + }, + release: { + inject: false, + }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts new file mode 100644 index 000000000000..37f9debdf3b4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + console.log("hello world"); + + //#endregion + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";AACA,QAAQ,IAAI,cAAc"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts new file mode 100644 index 000000000000..4a31b4241707 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts @@ -0,0 +1,20 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/debugids-already-injected/basic.js", + sourcemap: true, + sourcemapDebugIds: true, + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + // We need to specify these so that upload is attempted. Debug IDs will be injected before then... + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts new file mode 100644 index 000000000000..19d68f7a6574 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { readAllFiles } from "../utils"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, createTempDir }) => { + const tempDir = createTempDir(); + + runRolldown({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + const files = readAllFiles(tempDir); + expect(files).toMatchInlineSnapshot(` + { + "b699d9c1-b033-4536-aa25-233c92609b54-0.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion + //# debugId=b699d9c1-b033-4536-aa25-233c92609b54 + //# sourceMappingURL=basic.js.map", + "b699d9c1-b033-4536-aa25-233c92609b54-0.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";scACA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,CAAA,KAAA,CAAA,CAAc","debugId":"b699d9c1-b033-4536-aa25-233c92609b54","debug_id":"b699d9c1-b033-4536-aa25-233c92609b54"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts new file mode 100644 index 000000000000..9c867075d7ee --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/module-metadata/basic.js", + }, + plugins: [ + sentryRollupPlugin({ telemetry: false, moduleMetadata: { something: "value", another: 999 } }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts new file mode 100644 index 000000000000..74ef2b3158dc --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js": "//#region src/common.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]="3f33b953-1cf1-4c05-850d-3f5b805fa101",e._sentryDebugIdIdentifier="sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101");}catch(e){}}();function add(a, b) { + return a + b; + } + + //#endregion + export { add as t };", + "entry1.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]="cbcd67c2-83a7-44e1-94e6-9a8ab161f162",e._sentryDebugIdIdentifier="sentry-dbid-cbcd67c2-83a7-44e1-94e6-9a8ab161f162");}catch(e){}}();import { t as add } from "./common.js"; + + //#region src/entry1.js + console.log(add(1, 2)); + + //#endregion", + "entry2.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]="a4f71127-2139-4e9f-af54-f35982254569",e._sentryDebugIdIdentifier="sentry-dbid-a4f71127-2139-4e9f-af54-f35982254569");}catch(e){}}();import { t as add } from "./common.js"; + + //#region src/entry2.js + console.log(add(2, 4)); + + //#endregion", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json new file mode 100644 index 000000000000..7ac86b512b0f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -0,0 +1,10 @@ +{ + "name": "rolldown-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "^19.2.4", + "rolldown": "^1.0.0-rc.6" + } +} diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts new file mode 100644 index 000000000000..d7697c48cd1c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + }, + plugins: [sentryRollupPlugin({ telemetry: false })], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts new file mode 100644 index 000000000000..76cf7bafd708 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts @@ -0,0 +1,34 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "//#region src/common.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3f33b953-1cf1-4c05-850d-3f5b805fa101",e._sentryDebugIdIdentifier="sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101");}catch(e){}}();function add(a, b) { + return a + b; + } + + //#endregion + export { add as t };", + "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bf11f932-fe2b-4b54-97e0-45abde2a0d81",e._sentryDebugIdIdentifier="sentry-dbid-bf11f932-fe2b-4b54-97e0-45abde2a0d81");}catch(e){}}();import { t as add } from "./common.js?seP58q4g"; + + //#region src/entry1.js + console.log(add(1, 2)); + + //#endregion", + "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e",e._sentryDebugIdIdentifier="sentry-dbid-5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e");}catch(e){}}();import { t as add } from "./common.js?seP58q4g"; + + //#region src/entry2.js + console.log(add(2, 4)); + + //#endregion", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts new file mode 100644 index 000000000000..ac3468c06656 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts @@ -0,0 +1,18 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/release-disabled/basic.js", + }, + plugins: [ + sentryRollupPlugin({ + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + release: { create: false }, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts new file mode 100644 index 000000000000..dfb0642d2825 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/app.jsx b/packages/integration-tests-next/fixtures/rolldown/src/app.jsx new file mode 100644 index 000000000000..614d38c834aa --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/app.jsx @@ -0,0 +1,9 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} diff --git a/packages/integration-tests-next/fixtures/rolldown/src/basic.js b/packages/integration-tests-next/fixtures/rolldown/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/bundle.js b/packages/integration-tests-next/fixtures/rolldown/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/common.js b/packages/integration-tests-next/fixtures/rolldown/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx b/packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/rolldown/src/entry1.js b/packages/integration-tests-next/fixtures/rolldown/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/entry2.js b/packages/integration-tests-next/fixtures/rolldown/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts new file mode 100644 index 000000000000..c6781218ba3d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts @@ -0,0 +1,10 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/telemetry/basic.js", + }, + plugins: [sentryRollupPlugin()], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts new file mode 100644 index 000000000000..59bddafa9976 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -0,0 +1,19 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { + runRolldown(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + + //#endregion", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts new file mode 100644 index 000000000000..7fae183fa7d2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -0,0 +1,62 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); +const NODE_MAJOR_VERSION = parseInt(process.versions.node.split(".")[0] || "0", 10); + +type TestCallback = (props: { + outDir: string; + runRolldown: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + // Rolldown requires Node 20+ + if (NODE_MAJOR_VERSION <= 18) { + // eslint-disable-next-line @typescript-eslint/no-empty-function + vitestTest.skip(testName); + } else { + vitestTest(`rolldown > ${testName}`, (ctx) => + callback({ + outDir, + runRolldown: (env) => + runBundler( + `rolldown --config ${testName}.config.ts`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); + } +} diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts new file mode 100644 index 000000000000..d6fd9d31ddc2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -0,0 +1,84 @@ +import { execSync, ExecSyncOptions } from "node:child_process"; +import { randomUUID } from "node:crypto"; +import { mkdtempSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; + +const DEBUG = !!process.env["DEBUG"]; +const CURRENT_SHA = execSync("git rev-parse HEAD", { encoding: "utf-8" }).trim(); + +type SourceMap = { + sources: string[]; + sourcesContent: string[]; +}; + +export function runBundler(command: string, opt: ExecSyncOptions, outDir?: string): void { + if (outDir) { + // We've patched the sentry-cli helper to write the args to a file instead of actually executing the command + opt.env = { ...opt.env, SENTRY_TEST_OUT_DIR: outDir }; + } + + execSync(command, { stdio: DEBUG ? "inherit" : "ignore", ...opt }); +} + +export function readAllFiles(directory: string): Record { + const files: Record = {}; + const entries = readdirSync(directory); + + for (const entry of entries) { + const fullPath = join(directory, entry); + const stat = statSync(fullPath); + + if (stat.isFile()) { + let contents = readFileSync(fullPath, "utf-8"); + // We replace the current SHA with a placeholder to make snapshots deterministic + contents = contents + .replaceAll(CURRENT_SHA, "CURRENT_SHA") + .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`); + + // Normalize Windows stuff in .map paths + if (entry.endsWith(".map")) { + const map = JSON.parse(contents) as SourceMap; + map.sources = map.sources.map((c) => c.replace(/\\/g, "/")); + map.sourcesContent = map.sourcesContent.map((c) => c.replace(/\r\n/g, "\n")); + contents = JSON.stringify(map); + } else if (entry === "sentry-cli-mock.json") { + // Remove the temporary directory path too + contents = contents.replace( + /"[^"]+sentry-bundler-plugin-upload.+?",/g, + '"sentry-bundler-plugin-upload-path",' + ); + } else if (entry === "sentry-telemetry.json") { + // Remove the temporary directory path too + contents = contents + .replace( + /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/g, + "TIMESTAMP" + ) + .replace(/[a-f0-9]{32}/g, "UUID") + .replace(/"duration":[\d.]+/g, '"duration":DURATION') + .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"'); + } else { + // Normalize Windows line endings for cross-platform snapshots + contents = contents.replace(/\r\n/g, "\n"); + } + files[entry] = contents; + } + } + + return files; +} + +const tempDirs: string[] = []; + +export function createTempDir(): string { + const tempDir = mkdtempSync(join(tmpdir(), "sentry-bundler-plugin-" + randomUUID())); + tempDirs.push(tempDir); + return tempDir; +} + +process.on("exit", () => { + for (const dir of tempDirs) { + rmSync(dir, { recursive: true, force: true }); + } +}); diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json new file mode 100644 index 000000000000..3942ef13061e --- /dev/null +++ b/packages/integration-tests-next/package.json @@ -0,0 +1,30 @@ +{ + "name": "@sentry-internal/integration-tests-next", + "version": "5.1.1", + "license": "MIT", + "private": true, + "scripts": { + "test": "vitest run --pool threads", + "lint": "eslint .", + "check:types": "tsc --project ./tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "premove ./fixtures/*/out", + "clean:deps": "premove node_modules" + }, + "dependencies": { + "@sentry-internal/eslint-config": "5.1.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry/esbuild-plugin": "5.1.1", + "@sentry/rollup-plugin": "5.1.1", + "@sentry/vite-plugin": "5.1.1", + "@sentry/webpack-plugin": "5.1.1" + }, + "devDependencies": { + "premove": "^4.0.0", + "vitest": "^4.0.0" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/packages/integration-tests-next/tsconfig.json b/packages/integration-tests-next/tsconfig.json new file mode 100644 index 000000000000..656010c69d7e --- /dev/null +++ b/packages/integration-tests-next/tsconfig.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "include": ["./**/*"], + "compilerOptions": { + "types": ["node"], + "module": "es2020", + "lib": ["ES2021"] + } +} diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 87d12eb8cbed..a2b1ffdb0c83 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -62,7 +62,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 4699c649038e..c08b36d1084b 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -58,7 +58,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 19ab18e70c80..4b7b643d73d0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -63,7 +63,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.4", + "rolldown": "^1.0.0-rc.6", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "5.0.0" diff --git a/patches/@sentry+cli+2.58.5.patch b/patches/@sentry+cli+2.58.5.patch new file mode 100644 index 000000000000..975845ad9179 --- /dev/null +++ b/patches/@sentry+cli+2.58.5.patch @@ -0,0 +1,18 @@ +diff --git a/node_modules/@sentry/cli/js/helper.js b/node_modules/@sentry/cli/js/helper.js +index 56f95c9..b97e41b 100644 +--- a/node_modules/@sentry/cli/js/helper.js ++++ b/node_modules/@sentry/cli/js/helper.js +@@ -295,6 +295,13 @@ function execute(args_1, live_1, silent_1, configFile_1) { + if (config.vcsRemote) { + env.SENTRY_VCS_REMOTE = config.vcsRemote; + } ++ ++ if (process.env['SENTRY_TEST_OUT_DIR']) { ++ const out = path.join(process.env['SENTRY_TEST_OUT_DIR'], 'sentry-cli-mock.json'); ++ fs.appendFileSync(out, JSON.stringify(args) + ',\n'); ++ return Promise.resolve(); ++ } ++ + if (config.customHeader) { + env.CUSTOM_HEADER = config.customHeader; + } diff --git a/yarn.lock b/yarn.lock index 88230a3a8918..1e085e00de3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -954,10 +954,10 @@ resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz#0b3867776cd7fdb86068b2dd733e6621ded5165a" integrity sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw== -"@oxc-project/types@=0.113.0": - version "0.113.0" - resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz#e323164a2d0cdc72c3eb980cd2a471e641df8d52" - integrity sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA== +"@oxc-project/types@=0.115.0": + version "0.115.0" + resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz#92a599543529bce45f8f2da77f40a124d63349dc" + integrity sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw== "@oxfmt/binding-android-arm-eabi@0.33.0": version "0.33.0" @@ -1054,77 +1054,77 @@ resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== -"@rolldown/binding-android-arm64@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz#bb275690413cd0109d49ba5dd4491e1c0296ad0e" - integrity sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w== - -"@rolldown/binding-darwin-arm64@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz#cd59b855ee90e464e8b6e97919089d00d98590e1" - integrity sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q== - -"@rolldown/binding-darwin-x64@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz#5c1411b969c26ffd88b661b1a38bafcf1519a431" - integrity sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww== - -"@rolldown/binding-freebsd-x64@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz#5b06b2792df246bb3fcc64630bd92af9feff3f87" - integrity sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz#93d9a3259cc41054425c8134d8ba41c9f92984f1" - integrity sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w== - -"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz#aa9e8f5b3874dc29bf54940eb55cb23274956e32" - integrity sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A== - -"@rolldown/binding-linux-arm64-musl@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz#e3b56288dcb2ba9219c3e3ff62bf0395c0dc9de4" - integrity sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ== - -"@rolldown/binding-linux-x64-gnu@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz#003570df20ba503ed71f052d1b201535fd6a217d" - integrity sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg== - -"@rolldown/binding-linux-x64-musl@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz#e1e22ee0b8913e45bf769291a7c7db57aa20b7fe" - integrity sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g== - -"@rolldown/binding-openharmony-arm64@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz#494ee66307a2b1192f24d6876564c1300ec90241" - integrity sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ== - -"@rolldown/binding-wasm32-wasi@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz#dc98418ee2e5668f7dcc4bf4155523a079b34a80" - integrity sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw== +"@rolldown/binding-android-arm64@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.6.tgz#4ee6333152206902aa1beb74a487ec7bc9df20bd" + integrity sha512-kvjTSWGcrv+BaR2vge57rsKiYdVR8V8CoS0vgKrc570qRBfty4bT+1X0z3j2TaVV+kAYzA0PjeB9+mdZyqUZlg== + +"@rolldown/binding-darwin-arm64@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.6.tgz#0c1853b3b07e739087b33919fc388fe3ce314e9e" + integrity sha512-+tJhD21KvGNtUrpLXrZQlT+j5HZKiEwR2qtcZb3vNOUpvoT9QjEykr75ZW/Kr0W89gose/HVXU6351uVZD8Qvw== + +"@rolldown/binding-darwin-x64@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.6.tgz#6e52da0ad87253b9cf04dcadf025dca1928e658d" + integrity sha512-DKNhjMk38FAWaHwUt1dFR3rA/qRAvn2NUvSG2UGvxvlMxSmN/qqww/j4ABAbXhNRXtGQNmrAINMXRuwHl16ZHg== + +"@rolldown/binding-freebsd-x64@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.6.tgz#7e500eff970e39d1307e481b00874ab90af4a183" + integrity sha512-8TThsRkCPAnfyMBShxrGdtoOE6h36QepqRQI97iFaQSCRbHFWHcDHppcojZnzXoruuhPnjMEygzaykvPVJsMRg== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.6.tgz#247b60365081872f9ef8426e98bafbda7410c23a" + integrity sha512-ZfmFoOwPUZCWtGOVC9/qbQzfc0249FrRUOzV2XabSMUV60Crp211OWLQN1zmQAsRIVWRcEwhJ46Z1mXGo/L/nQ== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.6.tgz#504840853e42726c7b9c591792f6422aa93f118c" + integrity sha512-ZsGzbNETxPodGlLTYHaCSGVhNN/rvkMDCJYHdT7PZr5jFJRmBfmDi2awhF64Dt2vxrJqY6VeeYSgOzEbHRsb7Q== + +"@rolldown/binding-linux-arm64-musl@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.6.tgz#f5f260bfa51083c45fcb59f10ba77991d29dbed4" + integrity sha512-elPpdevtCdUOqziemR86C4CSCr/5sUxalzDrf/CJdMT+kZt2C556as++qHikNOz0vuFf52h+GJNXZM08eWgGPQ== + +"@rolldown/binding-linux-x64-gnu@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.6.tgz#c59a835f5f4f5ffd937ea4466862d522c5da4928" + integrity sha512-IBwXsf56o3xhzAyaZxdM1CX8UFiBEUFCjiVUgny67Q8vPIqkjzJj0YKhd3TbBHanuxThgBa59f6Pgutg2OGk5A== + +"@rolldown/binding-linux-x64-musl@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.6.tgz#1ea2a7c58f5ed50b3d35142935f6a0234c1d007b" + integrity sha512-vOk7G8V9Zm+8a6PL6JTpCea61q491oYlGtO6CvnsbhNLlKdf0bbCPytFzGQhYmCKZDKkEbmnkcIprTEGCURnwg== + +"@rolldown/binding-openharmony-arm64@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.6.tgz#8ffe37a43e9218af46770784dfbc1cda9efffd97" + integrity sha512-ASjEDI4MRv7XCQb2JVaBzfEYO98JKCGrAgoW6M03fJzH/ilCnC43Mb3ptB9q/lzsaahoJyIBoAGKAYEjUvpyvQ== + +"@rolldown/binding-wasm32-wasi@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.6.tgz#e822081ac37a98c2f63e8a9f65432361a0ac185a" + integrity sha512-mYa1+h2l6Zc0LvmwUh0oXKKYihnw/1WC73vTqw+IgtfEtv47A+rWzzcWwVDkW73+UDr0d/Ie/HRXoaOY22pQDw== dependencies: "@napi-rs/wasm-runtime" "^1.1.1" -"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz#a294ee643275bb099c1128ad294bd6101bae1eca" - integrity sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ== +"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.6.tgz#f7e8455f618505f28e763c8e73213d61eeba2b7f" + integrity sha512-e2ABskbNH3MRUBMjgxaMjYIw11DSwjLJxBII3UgpF6WClGLIh8A20kamc+FKH5vIaFVnYQInmcLYSUVpqMPLow== -"@rolldown/binding-win32-x64-msvc@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz#b9248d23625f6f59ec1af0b3140706cba6afc36c" - integrity sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g== +"@rolldown/binding-win32-x64-msvc@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.6.tgz#5100c0a269f5a557cab7011951b48709c6216fa9" + integrity sha512-dJVc3ifhaRXxIEh1xowLohzFrlQXkJ66LepHm+CmSprTWgVrPa8Fx3OL57xwIqDEH9hufcKkDX2v65rS3NZyRA== -"@rolldown/pluginutils@1.0.0-rc.4": - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz#267b477af268a082861c861e47f6a787dff59cc4" - integrity sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ== +"@rolldown/pluginutils@1.0.0-rc.6": + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.6.tgz#2f729fcf2d68c2d8cc2dcb05a7c3b2eeadfe20e1" + integrity sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA== "@rollup/plugin-babel@^6.0.4": version "6.0.4" @@ -2493,6 +2493,13 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + browserslist@^4.14.3: version "4.28.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" @@ -2561,7 +2568,7 @@ cacache@^15.0.5: tar "^6.0.2" unique-filename "^1.1.1" -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== @@ -2577,6 +2584,24 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2624,6 +2649,11 @@ chrome-trace-event@^1.0.2: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2768,6 +2798,15 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + csstype@^3.0.2: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -2804,6 +2843,15 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3003,7 +3051,7 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-define-property@^1.0.1: +es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== @@ -3706,6 +3754,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -3744,6 +3799,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3821,6 +3883,15 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -3888,7 +3959,7 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-intrinsic@^1.2.6: +get-intrinsic@^1.2.4, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -4014,7 +4085,7 @@ gopd@^1.2.0: resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4051,6 +4122,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -4372,13 +4450,18 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4467,6 +4550,17 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stable-stringify@^1.0.2: + version "1.3.0" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" + integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -4477,6 +4571,20 @@ jsonc-parser@3.2.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -4485,6 +4593,13 @@ jsonc-parser@3.2.0: array-includes "^3.1.5" object.assign "^4.1.3" +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -4653,6 +4768,14 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micromatch@^4.0.2: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + micromatch@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -5020,6 +5143,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -5142,6 +5273,26 @@ parseurl@~1.3.3: resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +patch-package@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz#79d02f953f711e06d1f8949c8a13e5d3d7ba1a60" + integrity sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^10.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.2.4" + yaml "^2.2.2" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -5372,6 +5523,11 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +react@^19.2.4: + version "19.2.4" + resolved "https://registry.npmjs.org/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a" + integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ== + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5457,27 +5613,27 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rolldown@^1.0.0-rc.4: - version "1.0.0-rc.4" - resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz#c22246260ab3da62caa209556e26d81fe516cf10" - integrity sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA== +rolldown@^1.0.0-rc.6: + version "1.0.0-rc.6" + resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.6.tgz#fc2209fde9a0947fedd78647af50d2262332e977" + integrity sha512-B8vFPV1ADyegoYfhg+E7RAucYKv0xdVlwYYsIJgfPNeiSxZGWNxts9RqhyGzC11ULK/VaeXyKezGCwpMiH8Ktw== dependencies: - "@oxc-project/types" "=0.113.0" - "@rolldown/pluginutils" "1.0.0-rc.4" + "@oxc-project/types" "=0.115.0" + "@rolldown/pluginutils" "1.0.0-rc.6" optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.0-rc.4" - "@rolldown/binding-darwin-arm64" "1.0.0-rc.4" - "@rolldown/binding-darwin-x64" "1.0.0-rc.4" - "@rolldown/binding-freebsd-x64" "1.0.0-rc.4" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.4" - "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.4" - "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.4" - "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.4" - "@rolldown/binding-linux-x64-musl" "1.0.0-rc.4" - "@rolldown/binding-openharmony-arm64" "1.0.0-rc.4" - "@rolldown/binding-wasm32-wasi" "1.0.0-rc.4" - "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.4" - "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.4" + "@rolldown/binding-android-arm64" "1.0.0-rc.6" + "@rolldown/binding-darwin-arm64" "1.0.0-rc.6" + "@rolldown/binding-darwin-x64" "1.0.0-rc.6" + "@rolldown/binding-freebsd-x64" "1.0.0-rc.6" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.6" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.6" + "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.6" + "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.6" + "@rolldown/binding-linux-x64-musl" "1.0.0-rc.6" + "@rolldown/binding-openharmony-arm64" "1.0.0-rc.6" + "@rolldown/binding-wasm32-wasi" "1.0.0-rc.6" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.6" + "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.6" rollup@3.2.0: version "3.2.0" @@ -5604,7 +5760,7 @@ semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" -semver@^7.6.3: +semver@^7.5.3, semver@^7.6.3: version "7.7.4" resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== @@ -5652,6 +5808,18 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -5705,6 +5873,11 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6017,6 +6190,11 @@ tinyrainbow@^3.0.3: resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz#984a5b1c1b25854a9b6bccbe77964d0593d1ea42" integrity sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== +tmp@^0.2.4: + version "0.2.5" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" + integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== + tmp@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -6164,6 +6342,11 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6468,7 +6651,7 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^2.6.0: +yaml@^2.2.2, yaml@^2.6.0: version "2.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== From 0a3001e107ae28eb90b99b2db2feee4bc1ae491e Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 11 Mar 2026 15:47:03 +0100 Subject: [PATCH 603/640] test: Rollup integration tests (#897) --- .gitattributes | 1 + package.json | 4 +- .../configs/after-upload-deletion.config.d.ts | 2 + .../configs/after-upload-deletion.config.js | 6 ++ .../configs/application-key.config.d.ts | 2 + .../configs/application-key.config.js | 4 ++ .../basic-release-disabled.config.d.ts | 2 + .../configs/basic-release-disabled.config.js | 4 ++ .../configs/basic-sourcemaps.config.d.ts | 2 + .../configs/basic-sourcemaps.config.js | 6 ++ .../fixtures/configs/basic.config.d.ts | 2 + .../fixtures/configs/basic.config.js | 6 ++ .../fixtures/configs/build-info.config.d.ts | 2 + .../fixtures/configs/build-info.config.js | 7 +++ .../bundle-size-optimizations.config.d.ts | 2 + .../bundle-size-optimizations.config.js | 11 ++++ .../component-annotation-disabled.config.d.ts | 2 + .../component-annotation-disabled.config.js | 3 + .../component-annotation-next.config.d.ts | 2 + .../component-annotation-next.config.js | 4 ++ .../configs/component-annotation.config.d.ts | 2 + .../configs/component-annotation.config.js | 4 ++ .../configs/debugid-disabled.config.d.ts | 2 + .../configs/debugid-disabled.config.js | 9 +++ .../debugids-already-injected.config.d.ts | 2 + .../debugids-already-injected.config.js | 7 +++ .../configs/module-metadata.config.d.ts | 2 + .../configs/module-metadata.config.js | 4 ++ .../configs/multiple-entry-points.config.d.ts | 2 + .../configs/multiple-entry-points.config.js | 4 ++ .../fixtures/configs/package.json | 3 + .../fixtures/configs/query-param.config.d.ts | 2 + .../fixtures/configs/query-param.config.js | 3 + .../configs/release-disabled.config.d.ts | 2 + .../configs/release-disabled.config.js | 7 +++ .../fixtures/configs/telemetry.config.d.ts | 2 + .../fixtures/configs/telemetry.config.js | 1 + .../rolldown/after-upload-deletion.config.ts | 10 +--- .../rolldown/after-upload-deletion.test.ts | 4 +- .../rolldown/application-key.config.ts | 3 +- .../fixtures/rolldown/application-key.test.ts | 4 +- .../rolldown/basic-release-disabled.config.ts | 3 +- .../rolldown/basic-release-disabled.test.ts | 4 +- .../rolldown/basic-sourcemaps.config.ts | 10 +--- .../rolldown/basic-sourcemaps.test.ts | 4 +- .../fixtures/rolldown/basic.config.ts | 10 +--- .../fixtures/rolldown/basic.test.ts | 4 +- .../fixtures/rolldown/build-info.config.ts | 11 +--- .../fixtures/rolldown/build-info.test.ts | 4 +- .../bundle-size-optimizations.config.ts | 15 +---- .../bundle-size-optimizations.test.ts | 4 +- .../component-annotation-disabled.config.ts | 3 +- .../component-annotation-disabled.test.ts | 34 +++++------ .../component-annotation-next.config.ts | 8 +-- .../component-annotation-next.test.ts | 46 +++++++-------- .../rolldown/component-annotation.config.ts | 3 +- .../rolldown/component-annotation.test.ts | 56 +++++++++---------- .../rolldown/debugid-disabled.config.ts | 13 +---- .../rolldown/debugid-disabled.test.ts | 4 +- .../debugids-already-injected.config.ts | 11 +--- .../debugids-already-injected.test.ts | 4 +- .../rolldown/module-metadata.config.ts | 5 +- .../fixtures/rolldown/module-metadata.test.ts | 4 +- .../rolldown/multiple-entry-points.config.ts | 3 +- .../rolldown/multiple-entry-points.test.ts | 4 +- .../fixtures/rolldown/query-param.config.ts | 3 +- .../fixtures/rolldown/query-param.test.ts | 4 +- .../rolldown/release-disabled.config.ts | 11 +--- .../rolldown/release-disabled.test.ts | 4 +- .../fixtures/rolldown/telemetry.config.ts | 3 +- .../fixtures/rolldown/telemetry.test.ts | 4 +- .../fixtures/rolldown/utils.ts | 4 +- .../rollup3/after-upload-deletion.config.js | 12 ++++ .../rollup3/after-upload-deletion.test.ts | 17 ++++++ .../rollup3/application-key.config.js | 11 ++++ .../fixtures/rollup3/application-key.test.ts | 13 +++++ .../rollup3/basic-release-disabled.config.js | 11 ++++ .../rollup3/basic-release-disabled.test.ts | 13 +++++ .../rollup3/basic-sourcemaps.config.js | 12 ++++ .../fixtures/rollup3/basic-sourcemaps.test.ts | 23 ++++++++ .../fixtures/rollup3/basic.config.js | 11 ++++ .../fixtures/rollup3/basic.test.ts | 21 +++++++ .../fixtures/rollup3/build-info.config.js | 11 ++++ .../fixtures/rollup3/build-info.test.ts | 13 +++++ .../bundle-size-optimizations.config.js | 11 ++++ .../rollup3/bundle-size-optimizations.test.ts | 27 +++++++++ .../component-annotation-disabled.config.js | 28 ++++++++++ .../component-annotation-disabled.test.ts | 26 +++++++++ .../component-annotation-next.config.js | 28 ++++++++++ .../rollup3/component-annotation-next.test.ts | 28 ++++++++++ .../rollup3/component-annotation.config.js | 28 ++++++++++ .../rollup3/component-annotation.test.ts | 33 +++++++++++ .../rollup3/debugid-disabled.config.js | 12 ++++ .../fixtures/rollup3/debugid-disabled.test.ts | 15 +++++ .../rollup3/module-metadata.config.js | 11 ++++ .../fixtures/rollup3/module-metadata.test.ts | 16 ++++++ .../rollup3/multiple-entry-points.config.js | 12 ++++ .../rollup3/multiple-entry-points.test.ts | 35 ++++++++++++ .../fixtures/rollup3/package.json | 12 ++++ .../fixtures/rollup3/query-param.config.js | 12 ++++ .../fixtures/rollup3/query-param.test.ts | 29 ++++++++++ .../rollup3/release-disabled.config.js | 11 ++++ .../fixtures/rollup3/release-disabled.test.ts | 17 ++++++ .../fixtures/rollup3/src/app.jsx | 9 +++ .../fixtures/rollup3/src/basic.js | 2 + .../fixtures/rollup3/src/bundle.js | 10 ++++ .../fixtures/rollup3/src/common.js | 3 + .../fixtures/rollup3/src/component-a.jsx | 3 + .../fixtures/rollup3/src/entry1.js | 3 + .../fixtures/rollup3/src/entry2.js | 3 + .../fixtures/rollup3/telemetry.config.js | 11 ++++ .../fixtures/rollup3/telemetry.test.ts | 18 ++++++ .../fixtures/rollup3/utils.ts | 55 ++++++++++++++++++ .../rollup4/after-upload-deletion.config.js | 12 ++++ .../rollup4/after-upload-deletion.test.ts | 17 ++++++ .../rollup4/application-key.config.js | 11 ++++ .../fixtures/rollup4/application-key.test.ts | 13 +++++ .../rollup4/basic-release-disabled.config.js | 11 ++++ .../rollup4/basic-release-disabled.test.ts | 13 +++++ .../rollup4/basic-sourcemaps.config.js | 12 ++++ .../fixtures/rollup4/basic-sourcemaps.test.ts | 23 ++++++++ .../fixtures/rollup4/basic.config.js | 11 ++++ .../fixtures/rollup4/basic.test.ts | 21 +++++++ .../fixtures/rollup4/build-info.config.js | 11 ++++ .../fixtures/rollup4/build-info.test.ts | 13 +++++ .../bundle-size-optimizations.config.js | 11 ++++ .../rollup4/bundle-size-optimizations.test.ts | 27 +++++++++ .../component-annotation-disabled.config.js | 28 ++++++++++ .../component-annotation-disabled.test.ts | 26 +++++++++ .../component-annotation-next.config.js | 28 ++++++++++ .../rollup4/component-annotation-next.test.ts | 28 ++++++++++ .../rollup4/component-annotation.config.js | 28 ++++++++++ .../rollup4/component-annotation.test.ts | 33 +++++++++++ .../rollup4/debugid-disabled.config.js | 12 ++++ .../fixtures/rollup4/debugid-disabled.test.ts | 15 +++++ .../debugids-already-injected.config.js | 13 +++++ .../rollup4/debugids-already-injected.test.ts | 20 +++++++ .../rollup4/module-metadata.config.js | 11 ++++ .../fixtures/rollup4/module-metadata.test.ts | 16 ++++++ .../rollup4/multiple-entry-points.config.js | 12 ++++ .../rollup4/multiple-entry-points.test.ts | 35 ++++++++++++ .../fixtures/rollup4/package.json | 12 ++++ .../fixtures/rollup4/query-param.config.js | 12 ++++ .../fixtures/rollup4/query-param.test.ts | 29 ++++++++++ .../rollup4/release-disabled.config.js | 11 ++++ .../fixtures/rollup4/release-disabled.test.ts | 17 ++++++ .../fixtures/rollup4/src/app.jsx | 9 +++ .../fixtures/rollup4/src/basic.js | 2 + .../fixtures/rollup4/src/bundle.js | 10 ++++ .../fixtures/rollup4/src/common.js | 3 + .../fixtures/rollup4/src/component-a.jsx | 3 + .../fixtures/rollup4/src/entry1.js | 3 + .../fixtures/rollup4/src/entry2.js | 3 + .../fixtures/rollup4/telemetry.config.js | 11 ++++ .../fixtures/rollup4/telemetry.test.ts | 18 ++++++ .../fixtures/rollup4/utils.ts | 55 ++++++++++++++++++ yarn.lock | 20 ++++++- 157 files changed, 1667 insertions(+), 191 deletions(-) create mode 100644 .gitattributes create mode 100644 packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/application-key.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/application-key.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/basic.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/basic.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/build-info.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/build-info.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/component-annotation.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/module-metadata.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/package.json create mode 100644 packages/integration-tests-next/fixtures/configs/query-param.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/query-param.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/telemetry.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/application-key.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/build-info.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/package.json create mode 100644 packages/integration-tests-next/fixtures/rollup3/query-param.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/common.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/telemetry.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/utils.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/application-key.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/build-info.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/package.json create mode 100644 packages/integration-tests-next/fixtures/rollup4/query-param.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/common.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/telemetry.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/utils.ts diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000000..94f480de94e1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/package.json b/package.json index faec26e2627b..f7d9d9b36504 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,9 @@ "packages/vite-plugin", "packages/webpack-plugin", "packages/integration-tests-next", - "packages/integration-tests-next/fixtures/rolldown" + "packages/integration-tests-next/fixtures/rolldown", + "packages/integration-tests-next/fixtures/rollup3", + "packages/integration-tests-next/fixtures/rollup4" ], "scripts": { "postinstall": "patch-package", diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts b/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js b/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js new file mode 100644 index 000000000000..ae8efaa2113b --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js @@ -0,0 +1,6 @@ +export const sentryConfig = { + telemetry: false, + sourcemaps: { + filesToDeleteAfterUpload: ["out/after-upload-deletion/basic.js.map"], + }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/application-key.config.d.ts b/packages/integration-tests-next/fixtures/configs/application-key.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/application-key.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/application-key.config.js b/packages/integration-tests-next/fixtures/configs/application-key.config.js new file mode 100644 index 000000000000..26041ce4c6b5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/application-key.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + applicationKey: "1234567890abcdef", +}; diff --git a/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts b/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js b/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js new file mode 100644 index 000000000000..9d6c407e73ea --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + release: { create: false, inject: false }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts b/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js b/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js new file mode 100644 index 000000000000..d96d240d0612 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js @@ -0,0 +1,6 @@ +export const sentryConfig = { + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", +}; diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.d.ts b/packages/integration-tests-next/fixtures/configs/basic.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.js b/packages/integration-tests-next/fixtures/configs/basic.config.js new file mode 100644 index 000000000000..d96d240d0612 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic.config.js @@ -0,0 +1,6 @@ +export const sentryConfig = { + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", +}; diff --git a/packages/integration-tests-next/fixtures/configs/build-info.config.d.ts b/packages/integration-tests-next/fixtures/configs/build-info.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/build-info.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/build-info.config.js b/packages/integration-tests-next/fixtures/configs/build-info.config.js new file mode 100644 index 000000000000..5eaff477b3b4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/build-info.config.js @@ -0,0 +1,7 @@ +export const sentryConfig = { + telemetry: false, + release: { + name: "build-information-injection-test", + }, + _experiments: { injectBuildInformation: true }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts b/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js b/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js new file mode 100644 index 000000000000..6e7f6b72ed29 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js @@ -0,0 +1,11 @@ +export const sentryConfig = { + telemetry: false, + bundleSizeOptimizations: { + excludeDebugStatements: true, + excludeTracing: true, + excludeReplayCanvas: true, + excludeReplayIframe: true, + excludeReplayShadowDom: true, + excludeReplayWorker: true, + }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts b/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js b/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js new file mode 100644 index 000000000000..8891d92b0722 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js @@ -0,0 +1,3 @@ +export const sentryConfig = { + telemetry: false, +}; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts b/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js b/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js new file mode 100644 index 000000000000..6ef1a7fe6bdb --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + reactComponentAnnotation: { enabled: true, _experimentalInjectIntoHtml: true }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts b/packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation.config.js b/packages/integration-tests-next/fixtures/configs/component-annotation.config.js new file mode 100644 index 000000000000..484acf9dae69 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/component-annotation.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + reactComponentAnnotation: { enabled: true }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts b/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js b/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js new file mode 100644 index 000000000000..471befe91aba --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js @@ -0,0 +1,9 @@ +export const sentryConfig = { + telemetry: false, + sourcemaps: { + disable: true, + }, + release: { + inject: false, + }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts b/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js b/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js new file mode 100644 index 000000000000..e9dc3f978644 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js @@ -0,0 +1,7 @@ +export const sentryConfig = { + telemetry: false, + // We need to specify these so that upload is attempted. Debug IDs will be injected before then... + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", +}; diff --git a/packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts b/packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/module-metadata.config.js b/packages/integration-tests-next/fixtures/configs/module-metadata.config.js new file mode 100644 index 000000000000..e0a7cb1f50bf --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/module-metadata.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + moduleMetadata: { something: "value", another: 999 }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts b/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js b/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js new file mode 100644 index 000000000000..9e60b27eec9e --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + release: { inject: false }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/package.json b/packages/integration-tests-next/fixtures/configs/package.json new file mode 100644 index 000000000000..3dbc1ca591c0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/integration-tests-next/fixtures/configs/query-param.config.d.ts b/packages/integration-tests-next/fixtures/configs/query-param.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/query-param.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/query-param.config.js b/packages/integration-tests-next/fixtures/configs/query-param.config.js new file mode 100644 index 000000000000..8891d92b0722 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/query-param.config.js @@ -0,0 +1,3 @@ +export const sentryConfig = { + telemetry: false, +}; diff --git a/packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts b/packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/release-disabled.config.js b/packages/integration-tests-next/fixtures/configs/release-disabled.config.js new file mode 100644 index 000000000000..b0c5a5fb9113 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/release-disabled.config.js @@ -0,0 +1,7 @@ +export const sentryConfig = { + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + release: { create: false }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts b/packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/telemetry.config.js b/packages/integration-tests-next/fixtures/configs/telemetry.config.js new file mode 100644 index 000000000000..789aad8b25d4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/telemetry.config.js @@ -0,0 +1 @@ +export const sentryConfig = {}; diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts index dd228f17ab04..5a95ed13a550 100644 --- a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; export default defineConfig({ input: "src/basic.js", @@ -7,12 +8,5 @@ export default defineConfig({ file: "out/after-upload-deletion/basic.js", sourcemap: true, }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - sourcemaps: { - filesToDeleteAfterUpload: ["out/after-upload-deletion/basic.js.map"], - }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts index 2adae02286fb..b99000759d47 100644 --- a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts index 9b6c7fb212c8..2c64afa16ee1 100644 --- a/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts @@ -1,10 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/application-key.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/application-key/basic.js", }, - plugins: [sentryRollupPlugin({ telemetry: false, applicationKey: "1234567890abcdef" })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts index 99e7f1fdfb60..460d301b2ff1 100644 --- a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts index ea1a1453cf76..dd8d811d7220 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts @@ -1,10 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/basic-release-disabled/basic.js", }, - plugins: [sentryRollupPlugin({ telemetry: false, release: { create: false, inject: false } })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts index 4d5038b20d54..76252834e281 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts index 56b5a6f5d3e5..0109e8921c48 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; export default defineConfig({ input: "src/basic.js", @@ -7,12 +8,5 @@ export default defineConfig({ file: "out/basic-sourcemaps/basic.js", sourcemap: true, }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts index 390d99bb3380..4f158672bfd2 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.config.ts b/packages/integration-tests-next/fixtures/rolldown/basic.config.ts index 689db6b98110..b026f594af2d 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic.config.ts @@ -1,17 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/basic.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/basic/basic.js", }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts index e8754b21b911..b3e85d7b6086 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts index 6d059daed145..b1bd49d7389f 100644 --- a/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts @@ -1,18 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/build-info.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/build-info/basic.js", }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - release: { - name: "build-information-injection-test", - }, - _experiments: { injectBuildInformation: true }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts index 57c07363ffd1..127e8c17a86a 100644 --- a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts index c7cbbd244d2e..bb5adc2e5a5d 100644 --- a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts @@ -1,22 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; export default defineConfig({ input: "src/bundle.js", output: { file: "out/bundle-size-optimizations/bundle.js", }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - bundleSizeOptimizations: { - excludeDebugStatements: true, - excludeTracing: true, - excludeReplayCanvas: true, - excludeReplayIframe: true, - excludeReplayShadowDom: true, - excludeReplayWorker: true, - }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts index 7f7c1b6a209f..5e4bb51f7611 100644 --- a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "bundle.js": "//#region src/bundle.js diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts index 6408342cee4f..9d9258fd6749 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; export default defineConfig({ input: "src/app.jsx", @@ -9,5 +10,5 @@ export default defineConfig({ output: { file: "out/component-annotation-disabled/app.js", }, - plugins: [sentryRollupPlugin({ telemetry: false })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts index f6579e7a713c..3f98e67c65e9 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts @@ -1,25 +1,25 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ea5adc74-2664-4c38-8492-6e4971efd2be",e._sentryDebugIdIdentifier="sentry-dbid-ea5adc74-2664-4c38-8492-6e4971efd2be");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b0a43d00-208c-4b0e-b024-c0951a1c11f8",e._sentryDebugIdIdentifier="sentry-dbid-b0a43d00-208c-4b0e-b024-c0951a1c11f8");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; - //#region src/component-a.jsx - function ComponentA() { - return /* @__PURE__ */ jsx("span", { children: "Component A" }); - } + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { children: "Component A" }); + } - //#endregion - //#region src/app.jsx - function App() { - return /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] }); - } + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] }); + } - //#endregion - export { App as default };", - } - `); + //#endregion + export { App as default };", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts index 6023cb4ce611..09fc287474cb 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; export default defineConfig({ input: "src/app.jsx", @@ -9,10 +10,5 @@ export default defineConfig({ output: { file: "out/component-annotation-next/app.js", }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - reactComponentAnnotation: { enabled: true, _experimentalInjectIntoHtml: true }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts index 22d0fb42e7a4..e379530431ab 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts @@ -1,31 +1,31 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aa1666c7-eaca-4b84-8c40-9ac56cc75bfb",e._sentryDebugIdIdentifier="sentry-dbid-aa1666c7-eaca-4b84-8c40-9ac56cc75bfb");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4bdf6d53-8b4d-4766-b048-143c5e6d2cbd",e._sentryDebugIdIdentifier="sentry-dbid-4bdf6d53-8b4d-4766-b048-143c5e6d2cbd");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; - //#region src/component-a.jsx - function ComponentA() { - return /* @__PURE__ */ jsx("span", { - "data-sentry-component": "ComponentA", - children: "Component A" - }); - } + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }); + } - //#endregion - //#region src/app.jsx - function App() { - return /* @__PURE__ */ jsxs("span", { - "data-sentry-component": "App", - children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] - }); - } + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { + "data-sentry-component": "App", + children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] + }); + } - //#endregion - export { App as default };", - } - `); + //#endregion + export { App as default };", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts index aa013df1e8f2..6c7f330ac0bd 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/component-annotation.config.js"; export default defineConfig({ input: "src/app.jsx", @@ -9,5 +10,5 @@ export default defineConfig({ output: { file: "out/component-annotation/app.js", }, - plugins: [sentryRollupPlugin({ telemetry: false, reactComponentAnnotation: { enabled: true } })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts index cf57acfb2194..fc9c82038b5f 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts @@ -1,36 +1,36 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="adb3af3a-5b4a-49fd-b8ae-7ea0905020b6",e._sentryDebugIdIdentifier="sentry-dbid-adb3af3a-5b4a-49fd-b8ae-7ea0905020b6");}catch(e){}}();import { jsx, jsxs } from "../node_modules/react/jsx-runtime.js"; + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0880f8a4-f072-4b80-b577-4bb7d5be4841",e._sentryDebugIdIdentifier="sentry-dbid-0880f8a4-f072-4b80-b577-4bb7d5be4841");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; - //#region src/component-a.jsx - function ComponentA() { - return /* @__PURE__ */ jsx("span", { - "data-sentry-component": "ComponentA", - "data-sentry-source-file": "component-a.jsx", - children: "Component A" - }); - } + //#region src/component-a.jsx + function ComponentA() { + return /* @__PURE__ */ jsx("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }); + } - //#endregion - //#region src/app.jsx - function App() { - return /* @__PURE__ */ jsxs("span", { - "data-sentry-component": "App", - "data-sentry-source-file": "app.jsx", - children: [/* @__PURE__ */ jsx(ComponentA, { - "data-sentry-element": "ComponentA", - "data-sentry-source-file": "app.jsx" - }), ";"] - }); - } + //#endregion + //#region src/app.jsx + function App() { + return /* @__PURE__ */ jsxs("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/* @__PURE__ */ jsx(ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }), ";"] + }); + } - //#endregion - export { App as default };", - } - `); + //#endregion + export { App as default };", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts index 48a93f32e9ab..1edff6ab4807 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; export default defineConfig({ input: "src/basic.js", @@ -7,15 +8,5 @@ export default defineConfig({ file: "out/debugid-disabled/basic.js", sourcemap: true, }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - sourcemaps: { - disable: true, - }, - release: { - inject: false, - }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts index 37f9debdf3b4..342629848639 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts index 4a31b4241707..01ad08fe3fdc 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/debugids-already-injected.config.js"; export default defineConfig({ input: "src/basic.js", @@ -8,13 +9,5 @@ export default defineConfig({ sourcemap: true, sourcemapDebugIds: true, }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - // We need to specify these so that upload is attempted. Debug IDs will be injected before then... - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts index 19d68f7a6574..398dc71f925e 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts @@ -2,10 +2,10 @@ import { expect } from "vitest"; import { readAllFiles } from "../utils"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, createTempDir }) => { +test(import.meta.url, ({ runBundler, createTempDir }) => { const tempDir = createTempDir(); - runRolldown({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); const files = readAllFiles(tempDir); expect(files).toMatchInlineSnapshot(` { diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts index 9c867075d7ee..489999911ea7 100644 --- a/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts @@ -1,12 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/module-metadata.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/module-metadata/basic.js", }, - plugins: [ - sentryRollupPlugin({ telemetry: false, moduleMetadata: { something: "value", another: 999 } }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts index 74ef2b3158dc..ece716eb3cc3 100644 --- a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts index 038f7c0930a5..59cf33a0edd3 100644 --- a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; export default defineConfig({ input: ["src/entry1.js", "src/entry2.js"], @@ -7,5 +8,5 @@ export default defineConfig({ dir: "out/multiple-entry-points", chunkFileNames: "[name].js", }, - plugins: [sentryRollupPlugin({ telemetry: false, release: { inject: false } })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts index 11fcadbb473d..7659f27b9926 100644 --- a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "common.js": "//#region src/common.js diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts index d7697c48cd1c..81e15c2e8db1 100644 --- a/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/query-param.config.js"; export default defineConfig({ input: ["src/entry1.js", "src/entry2.js"], @@ -7,5 +8,5 @@ export default defineConfig({ dir: "out/query-param", chunkFileNames: "[name].js?seP58q4g", }, - plugins: [sentryRollupPlugin({ telemetry: false })], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts index 76cf7bafd708..5b3a013a527d 100644 --- a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts @@ -1,13 +1,13 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, ctx }) => { +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { if (process.platform === "win32") { ctx.skip("Query params do not work in paths on Windows"); return; } - runRolldown(); + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "common.js?seP58q4g": "//#region src/common.js diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts index ac3468c06656..549c22981601 100644 --- a/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts @@ -1,18 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/release-disabled.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/release-disabled/basic.js", }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - release: { create: false }, - }), - ], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts index dfb0642d2825..1882108639ce 100644 --- a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts index c6781218ba3d..15a329ca9431 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts @@ -1,10 +1,11 @@ import { sentryRollupPlugin } from "@sentry/rollup-plugin"; import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/telemetry.config.js"; export default defineConfig({ input: "src/basic.js", output: { file: "out/telemetry/basic.js", }, - plugins: [sentryRollupPlugin()], + plugins: [sentryRollupPlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts index 59bddafa9976..7fe93c6517b1 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -1,8 +1,8 @@ import { expect } from "vitest"; import { test } from "./utils"; -test(import.meta.url, ({ runRolldown, readOutputFiles, runFileInNode }) => { - runRolldown(); +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts index 7fae183fa7d2..3b00ad737690 100644 --- a/packages/integration-tests-next/fixtures/rolldown/utils.ts +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -10,7 +10,7 @@ const NODE_MAJOR_VERSION = parseInt(process.versions.node.split(".")[0] || "0", type TestCallback = (props: { outDir: string; - runRolldown: (env?: Record) => void; + runBundler: (env?: Record) => void; readOutputFiles: () => Record; runFileInNode: (file: string) => string; createTempDir: () => string; @@ -34,7 +34,7 @@ export function test(url: string, callback: TestCallback) { vitestTest(`rolldown > ${testName}`, (ctx) => callback({ outDir, - runRolldown: (env) => + runBundler: (env) => runBundler( `rolldown --config ${testName}.config.ts`, { diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js new file mode 100644 index 000000000000..36abdcfc1471 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/after-upload-deletion/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts new file mode 100644 index 000000000000..108927566a71 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/application-key.config.js b/packages/integration-tests-next/fixtures/rollup3/application-key.config.js new file mode 100644 index 000000000000..fed665781074 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/application-key.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/application-key.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/application-key/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts b/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts new file mode 100644 index 000000000000..eb1bfb06cd23 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts @@ -0,0 +1,13 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !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]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js new file mode 100644 index 000000000000..4d7089214669 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-sourcemaps/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..e6c8698909df --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts @@ -0,0 +1,23 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic.config.js b/packages/integration-tests-next/fixtures/rollup3/basic.config.js new file mode 100644 index 000000000000..8f36cde51af6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/basic.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic.test.ts b/packages/integration-tests-next/fixtures/rollup3/basic.test.ts new file mode 100644 index 000000000000..47d056666336 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.config.js b/packages/integration-tests-next/fixtures/rollup3/build-info.config.js new file mode 100644 index 000000000000..984f33b277bf --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/build-info.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/build-info.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/build-info/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts new file mode 100644 index 000000000000..a6c895dc918e --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts @@ -0,0 +1,13 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js new file mode 100644 index 000000000000..6b37e5ccaff6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +export default defineConfig({ + input: "src/bundle.js", + output: { + file: "out/bundle-size-optimizations/bundle.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..f7ddff94d37c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4",e._sentryDebugIdIdentifier="sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4");}catch(e){}}();console.log( + JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a" , + replayIframe: "a" , + replayShadowDom: "a" , + replayWorker: "a" , + }) + ); + ", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js new file mode 100644 index 000000000000..aaa7dfecb469 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-disabled/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..d61c1290324f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e0d3404a-8cd2-4497-8ac0-7d0973080851",e._sentryDebugIdIdentifier="sentry-dbid-e0d3404a-8cd2-4497-8ac0-7d0973080851");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + children: [/*#__PURE__*/jsx(ComponentA, {}), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js new file mode 100644 index 000000000000..3282ce2ba57b --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-next/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts new file mode 100644 index 000000000000..0bc86e7fbfc8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92286409-18f3-4cfe-8a2d-8e7ee88697ef",e._sentryDebugIdIdentifier="sentry-dbid-92286409-18f3-4cfe-8a2d-8e7ee88697ef");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + "data-sentry-component": "App", + children: [/*#__PURE__*/jsx(ComponentA, {}), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js b/packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js new file mode 100644 index 000000000000..dd3cb5349800 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts new file mode 100644 index 000000000000..90d896e28c0f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts @@ -0,0 +1,33 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b640794-e3e7-486c-b3b4-52d37c4fbae1",e._sentryDebugIdIdentifier="sentry-dbid-0b640794-e3e7-486c-b3b4-52d37c4fbae1");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/*#__PURE__*/jsx(ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js b/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js new file mode 100644 index 000000000000..2ac8dc76bda2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/debugid-disabled/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts new file mode 100644 index 000000000000..4385c076de7b --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts @@ -0,0 +1,15 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA;AACA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js b/packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js new file mode 100644 index 000000000000..9c758ad99a59 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/module-metadata/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts new file mode 100644 index 000000000000..59d819cf61ff --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.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]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + return a + b; + } + + export { add as a }; + ", + "entry1.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]="462efaa9-6efa-471b-94ae-88b2852f0c20",e._sentryDebugIdIdentifier="sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20");}catch(e){}}();import { a as add } from './common.js'; + + console.log(add(1, 2)); + ", + "entry2.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]="0231818d-9e30-4d5b-94a9-3da56ffd79af",e._sentryDebugIdIdentifier="sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af");}catch(e){}}();import { a as add } from './common.js'; + + console.log(add(2, 4)); + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json new file mode 100644 index 000000000000..22b9c9ca1166 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -0,0 +1,12 @@ +{ + "name": "rollup3-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "^19.2.4", + "rollup": "^3.30.0", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-node-resolve": "^15.2.3" + } +} diff --git a/packages/integration-tests-next/fixtures/rollup3/query-param.config.js b/packages/integration-tests-next/fixtures/rollup3/query-param.config.js new file mode 100644 index 000000000000..5c06653f0a2e --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/query-param.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/query-param.config.js"; + +export default defineConfig({ + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts b/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts new file mode 100644 index 000000000000..d6560ec40bd8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + return a + b; + } + + export { add as a }; + ", + "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="161db429-4399-479c-9466-6ff8ad3344f9",e._sentryDebugIdIdentifier="sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + + console.log(add(1, 2)); + ", + "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3bc51c0-20dc-4a52-a69a-6a43acf7cd65",e._sentryDebugIdIdentifier="sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + + console.log(add(2, 4)); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js b/packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js new file mode 100644 index 000000000000..99c580ccab33 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/release-disabled/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts new file mode 100644 index 000000000000..d8239cf3c24f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/app.jsx b/packages/integration-tests-next/fixtures/rollup3/src/app.jsx new file mode 100644 index 000000000000..614d38c834aa --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/app.jsx @@ -0,0 +1,9 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} diff --git a/packages/integration-tests-next/fixtures/rollup3/src/basic.js b/packages/integration-tests-next/fixtures/rollup3/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/bundle.js b/packages/integration-tests-next/fixtures/rollup3/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/common.js b/packages/integration-tests-next/fixtures/rollup3/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx b/packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/rollup3/src/entry1.js b/packages/integration-tests-next/fixtures/rollup3/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/entry2.js b/packages/integration-tests-next/fixtures/rollup3/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.config.js b/packages/integration-tests-next/fixtures/rollup3/telemetry.config.js new file mode 100644 index 000000000000..c5e38e83c3c9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/telemetry.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/telemetry/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts new file mode 100644 index 000000000000..b688c9184aec --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/utils.ts b/packages/integration-tests-next/fixtures/rollup3/utils.ts new file mode 100644 index 000000000000..6da0009dc420 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/utils.ts @@ -0,0 +1,55 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + vitestTest(`rollup v3 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `rollup --config ${testName}.config.js`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); +} diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js new file mode 100644 index 000000000000..36abdcfc1471 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/after-upload-deletion/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts new file mode 100644 index 000000000000..108927566a71 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/application-key.config.js b/packages/integration-tests-next/fixtures/rollup4/application-key.config.js new file mode 100644 index 000000000000..fed665781074 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/application-key.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/application-key.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/application-key/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts b/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts new file mode 100644 index 000000000000..eb1bfb06cd23 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts @@ -0,0 +1,13 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !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]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js new file mode 100644 index 000000000000..4d7089214669 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-sourcemaps/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..e6c8698909df --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts @@ -0,0 +1,23 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic.config.js b/packages/integration-tests-next/fixtures/rollup4/basic.config.js new file mode 100644 index 000000000000..8f36cde51af6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/basic.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic.test.ts b/packages/integration-tests-next/fixtures/rollup4/basic.test.ts new file mode 100644 index 000000000000..47d056666336 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.config.js b/packages/integration-tests-next/fixtures/rollup4/build-info.config.js new file mode 100644 index 000000000000..984f33b277bf --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/build-info.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/build-info.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/build-info/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts new file mode 100644 index 000000000000..e0a8029d1000 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts @@ -0,0 +1,13 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js new file mode 100644 index 000000000000..6b37e5ccaff6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +export default defineConfig({ + input: "src/bundle.js", + output: { + file: "out/bundle-size-optimizations/bundle.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..f7ddff94d37c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4",e._sentryDebugIdIdentifier="sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4");}catch(e){}}();console.log( + JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a" , + replayIframe: "a" , + replayShadowDom: "a" , + replayWorker: "a" , + }) + ); + ", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js new file mode 100644 index 000000000000..aaa7dfecb469 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-disabled/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..d61c1290324f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e0d3404a-8cd2-4497-8ac0-7d0973080851",e._sentryDebugIdIdentifier="sentry-dbid-e0d3404a-8cd2-4497-8ac0-7d0973080851");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + children: [/*#__PURE__*/jsx(ComponentA, {}), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js new file mode 100644 index 000000000000..3282ce2ba57b --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation-next/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts new file mode 100644 index 000000000000..0bc86e7fbfc8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92286409-18f3-4cfe-8a2d-8e7ee88697ef",e._sentryDebugIdIdentifier="sentry-dbid-92286409-18f3-4cfe-8a2d-8e7ee88697ef");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + "data-sentry-component": "App", + children: [/*#__PURE__*/jsx(ComponentA, {}), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js b/packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js new file mode 100644 index 000000000000..dd3cb5349800 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js @@ -0,0 +1,28 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import { babel } from "@rollup/plugin-babel"; +import resolve from "@rollup/plugin-node-resolve"; + +const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; + +export default defineConfig({ + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + file: "out/component-annotation/app.js", + }, + plugins: [ + resolve({ + extensions: RESOLVABLE_EXTENSIONS, + }), + sentryRollupPlugin(sentryConfig), + babel({ + babelHelpers: "bundled", + presets: [["@babel/preset-react", { runtime: "automatic" }]], + extensions: RESOLVABLE_EXTENSIONS, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts new file mode 100644 index 000000000000..90d896e28c0f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts @@ -0,0 +1,33 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b640794-e3e7-486c-b3b4-52d37c4fbae1",e._sentryDebugIdIdentifier="sentry-dbid-0b640794-e3e7-486c-b3b4-52d37c4fbae1");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + + function ComponentA() { + return /*#__PURE__*/jsx("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }); + } + + function App() { + return /*#__PURE__*/jsxs("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/*#__PURE__*/jsx(ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }), ";"] + }); + } + + export { App as default }; + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js b/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js new file mode 100644 index 000000000000..2ac8dc76bda2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/debugid-disabled/basic.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts new file mode 100644 index 000000000000..4385c076de7b --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts @@ -0,0 +1,15 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA;AACA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js new file mode 100644 index 000000000000..2726d0b13e28 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js @@ -0,0 +1,13 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/debugids-already-injected.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/debugids-already-injected/basic.js", + sourcemap: true, + sourcemapDebugIds: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts new file mode 100644 index 000000000000..fad6713f2de3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts @@ -0,0 +1,20 @@ +import { expect } from "vitest"; +import { readAllFiles } from "../utils"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, createTempDir }) => { + const tempDir = createTempDir(); + + runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + const files = readAllFiles(tempDir); + expect(files).toMatchInlineSnapshot(` + { + "252e0338-8927-4f52-bd57-188131defd0f-0.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + //# debugId=252e0338-8927-4f52-bd57-188131defd0f + //# sourceMappingURL=basic.js.map + ", + "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js b/packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js new file mode 100644 index 000000000000..9c758ad99a59 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/module-metadata/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts new file mode 100644 index 000000000000..59d819cf61ff --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.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]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + return a + b; + } + + export { add as a }; + ", + "entry1.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]="462efaa9-6efa-471b-94ae-88b2852f0c20",e._sentryDebugIdIdentifier="sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20");}catch(e){}}();import { a as add } from './common.js'; + + console.log(add(1, 2)); + ", + "entry2.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]="0231818d-9e30-4d5b-94a9-3da56ffd79af",e._sentryDebugIdIdentifier="sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af");}catch(e){}}();import { a as add } from './common.js'; + + console.log(add(2, 4)); + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json new file mode 100644 index 000000000000..f1e28cea5414 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -0,0 +1,12 @@ +{ + "name": "rollup4-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "^19.2.4", + "rollup": "^4.59.0", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-node-resolve": "16.0.3" + } +} diff --git a/packages/integration-tests-next/fixtures/rollup4/query-param.config.js b/packages/integration-tests-next/fixtures/rollup4/query-param.config.js new file mode 100644 index 000000000000..5c06653f0a2e --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/query-param.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/query-param.config.js"; + +export default defineConfig({ + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts b/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts new file mode 100644 index 000000000000..d6560ec40bd8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + return a + b; + } + + export { add as a }; + ", + "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="161db429-4399-479c-9466-6ff8ad3344f9",e._sentryDebugIdIdentifier="sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + + console.log(add(1, 2)); + ", + "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3bc51c0-20dc-4a52-a69a-6a43acf7cd65",e._sentryDebugIdIdentifier="sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + + console.log(add(2, 4)); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js b/packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js new file mode 100644 index 000000000000..99c580ccab33 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/release-disabled/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts new file mode 100644 index 000000000000..d8239cf3c24f --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/app.jsx b/packages/integration-tests-next/fixtures/rollup4/src/app.jsx new file mode 100644 index 000000000000..614d38c834aa --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/app.jsx @@ -0,0 +1,9 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} diff --git a/packages/integration-tests-next/fixtures/rollup4/src/basic.js b/packages/integration-tests-next/fixtures/rollup4/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/bundle.js b/packages/integration-tests-next/fixtures/rollup4/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/common.js b/packages/integration-tests-next/fixtures/rollup4/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx b/packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/rollup4/src/entry1.js b/packages/integration-tests-next/fixtures/rollup4/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/entry2.js b/packages/integration-tests-next/fixtures/rollup4/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.config.js b/packages/integration-tests-next/fixtures/rollup4/telemetry.config.js new file mode 100644 index 000000000000..c5e38e83c3c9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/telemetry.config.js @@ -0,0 +1,11 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/telemetry/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts new file mode 100644 index 000000000000..b688c9184aec --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); + ", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/utils.ts b/packages/integration-tests-next/fixtures/rollup4/utils.ts new file mode 100644 index 000000000000..2ad6dd0de2dc --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/utils.ts @@ -0,0 +1,55 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + vitestTest(`rollup v4 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `rollup --config ${testName}.config.js`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); +} diff --git a/yarn.lock b/yarn.lock index 1e085e00de3d..cfe932c8f4a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1146,6 +1146,17 @@ is-reference "1.2.1" magic-string "^0.30.3" +"@rollup/plugin-node-resolve@16.0.3": + version "16.0.3" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz#0988e6f2cbb13316b0f5e7213f757bc9ed44928f" + integrity sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.22.1" + "@rollup/plugin-node-resolve@^15.2.3": version "15.2.3" resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" @@ -5649,7 +5660,14 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" -rollup@^4.43.0: +rollup@^3.30.0: + version "3.30.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.30.0.tgz#3fa506fee2c5ba9d540a38da87067376cd55966d" + integrity sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA== + optionalDependencies: + fsevents "~2.3.2" + +rollup@^4.43.0, rollup@^4.59.0: version "4.59.0" resolved "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f" integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg== From d58faeacfb3a44d37491530559110309ecf86704 Mon Sep 17 00:00:00 2001 From: joshuarli Date: Tue, 24 Mar 2026 21:20:59 -0700 Subject: [PATCH 604/640] chore: pin GitHub Actions to full-length commit SHAs (#900) --- .github/workflows/changelog-preview.yml | 2 +- .github/workflows/checks.yml | 76 +++++++++---------- .github/workflows/codeql.yml | 8 +- .../workflows/enforce-license-complience.yml | 2 +- .github/workflows/release.yml | 2 +- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/changelog-preview.yml b/.github/workflows/changelog-preview.yml index f2b5efd63f34..b55f6100ad12 100644 --- a/.github/workflows/changelog-preview.yml +++ b/.github/workflows/changelog-preview.yml @@ -15,5 +15,5 @@ permissions: jobs: changelog-preview: - uses: getsentry/craft/.github/workflows/changelog-preview.yml@v2 + uses: getsentry/craft/.github/workflows/changelog-preview.yml@f4889d04564e47311038ecb6b910fef6b6cf1363 # v2 secrets: inherit diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index ee7da062d096..6b2b0fb7689d 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -12,18 +12,18 @@ jobs: name: Build packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -34,7 +34,7 @@ jobs: if: steps.dependency-cache.outputs.cache-hit != 'true' - run: yarn build - name: Upload build artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: dist-artifacts-${{ github.run_id }} path: packages/*/dist @@ -45,18 +45,18 @@ jobs: name: Typing check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -71,18 +71,18 @@ jobs: name: Formatting check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -98,18 +98,18 @@ jobs: name: Unit Tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -119,7 +119,7 @@ jobs: run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' - name: Download build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist-artifacts-${{ github.run_id }} path: packages @@ -135,12 +135,12 @@ jobs: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: ${{ matrix.node-version }} - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" @@ -149,7 +149,7 @@ jobs: run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' - name: Download build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist-artifacts-${{ github.run_id }} path: packages @@ -165,12 +165,12 @@ jobs: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: ${{ matrix.node-version }} - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" @@ -179,7 +179,7 @@ jobs: run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' - name: Download build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist-artifacts-${{ github.run_id }} path: packages @@ -198,16 +198,16 @@ jobs: env: SENTRY_AUTH_TOKEN: ${{ secrets.E2E_TESTS_SENTRY_AUTH_TOKEN }} steps: - - uses: actions/checkout@v4 - - uses: volta-cli/action@v3 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: volta-cli/action@007b1509d3ea9999dbba62ca34f4eb968363bb78 # v3 - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}-${{ github.run_id }} @@ -217,7 +217,7 @@ jobs: run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' - name: Download build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: name: dist-artifacts-${{ github.run_id }} path: packages @@ -228,18 +228,18 @@ jobs: name: Linter check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Use dependency cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: path: "**/node_modules" key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: .nxcache key: build-cache-key-${{ runner.os }}-${{ github.run_id }} @@ -257,8 +257,8 @@ jobs: # Build artifacts are only needed for releasing workflow. if: startsWith(github.ref, 'refs/heads/release/') steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: "package.json" - name: Install dependencies @@ -266,7 +266,7 @@ jobs: - name: pack run: yarn build:npm - name: archive artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: ${{ github.sha }} path: | diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3cfbefab4765..fd0a4b1817ea 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,11 +41,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -56,7 +56,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions @@ -70,4 +70,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 diff --git a/.github/workflows/enforce-license-complience.yml b/.github/workflows/enforce-license-complience.yml index 8ed039cff166..1cbeefffec4f 100644 --- a/.github/workflows/enforce-license-complience.yml +++ b/.github/workflows/enforce-license-complience.yml @@ -11,6 +11,6 @@ jobs: runs-on: ubuntu-latest steps: - name: "Enforce License Compliance" - uses: getsentry/action-enforce-license-compliance@main + uses: getsentry/action-enforce-license-compliance@48236a773346cb6552a7bda1ee370d2797365d87 # main with: fossa_api_key: ${{ secrets.FOSSA_API_KEY }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8178bf23e776..f14f5f484f94 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: with: app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }} private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }} - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: token: ${{ steps.token.outputs.token }} fetch-depth: 0 From f57805af019cdd845fdc708f0cb0dce46a2102fa Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 26 Mar 2026 11:55:50 +0100 Subject: [PATCH 605/640] test: Isolate integration test package installs (#902) * test: Isolate integration test package installs * Remove magic pkgJson length --- .github/workflows/checks.yml | 7 +- .gitignore | 1 + package.json | 9 +- .../package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- packages/esbuild-plugin/package.json | 2 +- .../fixtures/patches/@sentry__cli.patch | 8 +- .../fixtures/rolldown/build-info.test.ts | 2 +- .../component-annotation-disabled.test.ts | 2 +- .../component-annotation-next.test.ts | 2 +- .../rolldown/component-annotation.test.ts | 2 +- .../fixtures/rolldown/package.json | 11 + .../fixtures/rollup3/build-info.test.ts | 2 +- .../fixtures/rollup3/package.json | 13 +- .../fixtures/rollup4/build-info.test.ts | 2 +- .../fixtures/rollup4/package.json | 13 +- packages/integration-tests-next/package.json | 2 +- packages/integration-tests-next/setup.mjs | 36 +++ packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- scripts/bump-version.js | 43 ++++ yarn.lock | 217 +----------------- 23 files changed, 148 insertions(+), 236 deletions(-) rename patches/@sentry+cli+2.58.5.patch => packages/integration-tests-next/fixtures/patches/@sentry__cli.patch (72%) create mode 100644 packages/integration-tests-next/setup.mjs diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6b2b0fb7689d..6db2a6296228 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -37,7 +37,9 @@ jobs: uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: dist-artifacts-${{ github.run_id }} - path: packages/*/dist + path: | + packages/*/dist + packages/*/*.tgz retention-days: 1 type-check: @@ -169,6 +171,9 @@ jobs: - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: ${{ matrix.node-version }} + - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 + with: + version: 10 - name: Use dependency cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache diff --git a/.gitignore b/.gitignore index 36c57e3130b6..47a8abf576ef 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ packages/**/yarn.lock .DS_Store packages/bundler-plugin-core/src/version.ts +packages/integration-tests-next/fixtures/**/pnpm-lock.yaml diff --git a/package.json b/package.json index f7d9d9b36504..72295217025a 100644 --- a/package.json +++ b/package.json @@ -18,13 +18,9 @@ "packages/tsconfigs", "packages/vite-plugin", "packages/webpack-plugin", - "packages/integration-tests-next", - "packages/integration-tests-next/fixtures/rolldown", - "packages/integration-tests-next/fixtures/rollup3", - "packages/integration-tests-next/fixtures/rollup4" + "packages/integration-tests-next" ], "scripts": { - "postinstall": "patch-package", "build": "nx run-many --target=build --all", "build:watch": "nx run-many --target=build:watch --all", "build:graph": "nx graph", @@ -47,8 +43,7 @@ "npm-run-all": "^4.1.5", "nx": "22.5.2", "oxfmt": "^0.33.0", - "ts-node": "^10.9.2", - "patch-package": "^8.0.1" + "ts-node": "^10.9.2" }, "volta": { "node": "22.22.0", diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 01a50abd4b41..6db6e9ab5c57 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -32,7 +32,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "premove ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b6ac8a15acc1..283592310a35 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -34,7 +34,7 @@ "types": "dist/types/index.d.ts", "scripts": { "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts", - "build": "premove ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d34de3760362..45fbea76e9ab 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -29,7 +29,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "premove ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/patches/@sentry+cli+2.58.5.patch b/packages/integration-tests-next/fixtures/patches/@sentry__cli.patch similarity index 72% rename from patches/@sentry+cli+2.58.5.patch rename to packages/integration-tests-next/fixtures/patches/@sentry__cli.patch index 975845ad9179..d57a008a264c 100644 --- a/patches/@sentry+cli+2.58.5.patch +++ b/packages/integration-tests-next/fixtures/patches/@sentry__cli.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/@sentry/cli/js/helper.js b/node_modules/@sentry/cli/js/helper.js -index 56f95c9..b97e41b 100644 ---- a/node_modules/@sentry/cli/js/helper.js -+++ b/node_modules/@sentry/cli/js/helper.js +diff --git a/js/helper.js b/js/helper.js +index 56f95c9784d32a48e98b8341bfa336f0ed61a6e7..b97e41b4dcf96b9dcd9e171b91b575898b6cfbc3 100644 +--- a/js/helper.js ++++ b/js/helper.js @@ -295,6 +295,13 @@ function execute(args_1, live_1, silent_1, configFile_1) { if (config.vcsRemote) { env.SENTRY_VCS_REMOTE = config.vcsRemote; diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts index 127e8c17a86a..61aaf8000361 100644 --- a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["react","rolldown"],"depsVersions":{"react":19},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@sentry/rollup-plugin","react","rolldown"],"depsVersions":{"react":19},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); //#endregion", } diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts index 3f98e67c65e9..bff61bbfde65 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b0a43d00-208c-4b0e-b024-c0951a1c11f8",e._sentryDebugIdIdentifier="sentry-dbid-b0a43d00-208c-4b0e-b024-c0951a1c11f8");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="85f51673-9b26-4de9-b6ba-12058e53f08b",e._sentryDebugIdIdentifier="sentry-dbid-85f51673-9b26-4de9-b6ba-12058e53f08b");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts index e379530431ab..6b782f3ad8ce 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4bdf6d53-8b4d-4766-b048-143c5e6d2cbd",e._sentryDebugIdIdentifier="sentry-dbid-4bdf6d53-8b4d-4766-b048-143c5e6d2cbd");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="08d8ea54-706b-4dfc-9e1f-19af2d0fc86e",e._sentryDebugIdIdentifier="sentry-dbid-08d8ea54-706b-4dfc-9e1f-19af2d0fc86e");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts index fc9c82038b5f..1968819eec89 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0880f8a4-f072-4b80-b577-4bb7d5be4841",e._sentryDebugIdIdentifier="sentry-dbid-0880f8a4-f072-4b80-b577-4bb7d5be4841");}catch(e){}}();import { jsx, jsxs } from "../../../../../node_modules/react/jsx-runtime.js"; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0ad46712-3fec-46f3-8539-60a50dfc7fc6",e._sentryDebugIdIdentifier="sentry-dbid-0ad46712-3fec-46f3-8539-60a50dfc7fc6");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 7ac86b512b0f..0ed829511f7b 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -4,7 +4,18 @@ "private": true, "type": "module", "dependencies": { + "@sentry/rollup-plugin": "5.1.1", "react": "^19.2.4", "rolldown": "^1.0.0-rc.6" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } } } diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts index a6c895dc918e..92a8188641c4 100644 --- a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index 22b9c9ca1166..5b3dc1814807 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -7,6 +7,17 @@ "react": "^19.2.4", "rollup": "^3.30.0", "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-node-resolve": "^15.2.3" + "@rollup/plugin-node-resolve": "^15.2.3", + "@sentry/rollup-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } } } diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts index e0a8029d1000..60fe63ca564a 100644 --- a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index f1e28cea5414..0914c4c401f9 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -7,6 +7,17 @@ "react": "^19.2.4", "rollup": "^4.59.0", "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-node-resolve": "16.0.3" + "@rollup/plugin-node-resolve": "16.0.3", + "@sentry/rollup-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } } } diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 3942ef13061e..6049cd05d46f 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -4,7 +4,7 @@ "license": "MIT", "private": true, "scripts": { - "test": "vitest run --pool threads", + "test": "node setup.mjs && vitest run --pool threads", "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", diff --git a/packages/integration-tests-next/setup.mjs b/packages/integration-tests-next/setup.mjs new file mode 100644 index 000000000000..c83353b653f2 --- /dev/null +++ b/packages/integration-tests-next/setup.mjs @@ -0,0 +1,36 @@ +/* eslint-disable no-console */ +import { promises as fs } from "fs"; +import { join } from "path"; +import { fileURLToPath } from "url"; +import { execSync } from "child_process"; + +console.log("Installing all dependencies for fixtures..."); + +const __dirname = fileURLToPath(new URL(".", import.meta.url)); +const fixturesDir = join(__dirname, "fixtures"); +const entries = await fs.readdir(fixturesDir, { withFileTypes: true }); + +// Get all directories +const directories = entries + .filter((entry) => entry.isDirectory()) + .map((entry) => join(fixturesDir, entry.name)); + +for (const dir of directories) { + try { + const pkgString = await fs.readFile(join(dir, "package.json"), { encoding: "utf-8" }); + const packageJson = JSON.parse(pkgString); + // If there are no dependencies, skip installation + if (!packageJson.dependencies) { + continue; + } + } catch { + continue; + } + + execSync("pnpm install", { + cwd: dir, + stdio: "inherit", + }); +} + +console.log("All fixture dependencies installed successfully!"); diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index a2b1ffdb0c83..d5cf5d36447a 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -30,7 +30,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "premove ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c08b36d1084b..c266d1939b08 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -29,7 +29,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "premove ./out && run-p build:rollup build:types", + "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 4b7b643d73d0..43af676e20d0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -34,7 +34,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "build": "premove ./dist && run-p build:rollup build:types", + "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", diff --git a/scripts/bump-version.js b/scripts/bump-version.js index d4a4b1c8b46d..ba0683ecb197 100644 --- a/scripts/bump-version.js +++ b/scripts/bump-version.js @@ -64,6 +64,48 @@ function bumpVersions(rootDir, newVersion) { return workspacePackages.length; } +/** + * The test fixtures have their own pnpm installs with overrides that point to the local tarballs. + * We need to update those overrides to point to the correct version's tarball. + */ +function bumpTestFixtureVersions(rootDir, newVersion) { + const fixturesDir = path.join(rootDir, "packages", "integration-tests-next", "fixtures"); + const entries = fs.readdirSync(fixturesDir, { withFileTypes: true }); + + for (const entry of entries) { + if (!entry.isDirectory()) { + continue; + } + + const pkgPath = path.join(fixturesDir, entry.name, "package.json"); + if (!fs.existsSync(pkgPath)) { + continue; + } + + const pkg = readJson(pkgPath); + if (!pkg.dependencies) { + continue; + } + + for (const dep of Object.keys(pkg.dependencies)) { + if (dep.startsWith("@sentry/")) { + pkg.dependencies[dep] = newVersion; + } + } + + if (pkg?.pnpm?.overrides) { + for (const dep of Object.keys(pkg.pnpm.overrides)) { + if (dep.startsWith("@sentry/")) { + const orig = pkg.pnpm.overrides[dep]; + pkg.pnpm.overrides[dep] = orig.replace(/-\d*\.\d*\..+?\.tgz/, `-${newVersion}.tgz`); + } + } + } + + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n"); + } +} + // CLI entry point if (require.main === module) { const newVersion = process.argv[2]; @@ -75,6 +117,7 @@ if (require.main === module) { const rootDir = path.join(__dirname, ".."); const updatedCount = bumpVersions(rootDir, newVersion); + bumpTestFixtureVersions(rootDir, newVersion); // Write a .version file used by the gitflow sync workflow to detect version bumps const versionFile = { diff --git a/yarn.lock b/yarn.lock index cfe932c8f4a5..fd68fd111517 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1146,17 +1146,6 @@ is-reference "1.2.1" magic-string "^0.30.3" -"@rollup/plugin-node-resolve@16.0.3": - version "16.0.3" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz#0988e6f2cbb13316b0f5e7213f757bc9ed44928f" - integrity sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/resolve" "1.20.2" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.22.1" - "@rollup/plugin-node-resolve@^15.2.3": version "15.2.3" resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" @@ -2504,13 +2493,6 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - browserslist@^4.14.3: version "4.28.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" @@ -2579,7 +2561,7 @@ cacache@^15.0.5: tar "^6.0.2" unique-filename "^1.1.1" -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== @@ -2595,24 +2577,6 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2660,11 +2624,6 @@ chrome-trace-event@^1.0.2: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^3.7.0: - version "3.9.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2809,15 +2768,6 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^7.0.3: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - csstype@^3.0.2: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -2854,15 +2804,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3062,7 +3003,7 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-define-property@^1.0.0, es-define-property@^1.0.1: +es-define-property@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== @@ -3765,13 +3706,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -3810,13 +3744,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3894,15 +3821,6 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -3970,7 +3888,7 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-intrinsic@^1.2.4, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: +get-intrinsic@^1.2.6: version "1.3.0" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -4096,7 +4014,7 @@ gopd@^1.2.0: resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4133,13 +4051,6 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - has-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -4461,18 +4372,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4561,17 +4467,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stable-stringify@^1.0.2: - version "1.3.0" - resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" - integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.4" - isarray "^2.0.5" - jsonify "^0.0.1" - object-keys "^1.1.1" - json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -4582,20 +4477,6 @@ jsonc-parser@3.2.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonfile@^6.0.1: - version "6.2.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" - integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -4604,13 +4485,6 @@ jsonify@^0.0.1: array-includes "^3.1.5" object.assign "^4.1.3" -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -4779,14 +4653,6 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2: - version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - micromatch@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -5154,14 +5020,6 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -5284,26 +5142,6 @@ parseurl@~1.3.3: resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -patch-package@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz#79d02f953f711e06d1f8949c8a13e5d3d7ba1a60" - integrity sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - ci-info "^3.7.0" - cross-spawn "^7.0.3" - find-yarn-workspace-root "^2.0.0" - fs-extra "^10.0.0" - json-stable-stringify "^1.0.2" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - semver "^7.5.3" - slash "^2.0.0" - tmp "^0.2.4" - yaml "^2.2.2" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -5534,11 +5372,6 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" -react@^19.2.4: - version "19.2.4" - resolved "https://registry.npmjs.org/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a" - integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ== - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5660,14 +5493,7 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" -rollup@^3.30.0: - version "3.30.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.30.0.tgz#3fa506fee2c5ba9d540a38da87067376cd55966d" - integrity sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^4.43.0, rollup@^4.59.0: +rollup@^4.43.0: version "4.59.0" resolved "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f" integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg== @@ -5778,7 +5604,7 @@ semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" -semver@^7.5.3, semver@^7.6.3: +semver@^7.6.3: version "7.7.4" resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== @@ -5826,18 +5652,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -5891,11 +5705,6 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6208,11 +6017,6 @@ tinyrainbow@^3.0.3: resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz#984a5b1c1b25854a9b6bccbe77964d0593d1ea42" integrity sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== -tmp@^0.2.4: - version "0.2.5" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" - integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== - tmp@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -6360,11 +6164,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6669,7 +6468,7 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^2.2.2, yaml@^2.6.0: +yaml@^2.6.0: version "2.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== From 0694741217954cdaf5b2e9d43b36d5fb25212d44 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 30 Mar 2026 08:45:42 +0000 Subject: [PATCH 606/640] test: Webpack integration tests (#904) --- .../webpack5/after-upload-deletion.config.js | 18 ++++++ .../webpack5/after-upload-deletion.test.ts | 22 ++++++++ .../webpack5/application-key.config.js | 17 ++++++ .../fixtures/webpack5/application-key.test.ts | 18 ++++++ .../webpack5/basic-release-disabled.config.js | 17 ++++++ .../webpack5/basic-release-disabled.test.ts | 18 ++++++ .../webpack5/basic-sourcemaps.config.js | 18 ++++++ .../webpack5/basic-sourcemaps.test.ts | 28 ++++++++++ .../fixtures/webpack5/basic.config.js | 17 ++++++ .../fixtures/webpack5/basic.test.ts | 26 +++++++++ .../fixtures/webpack5/build-info.config.js | 17 ++++++ .../fixtures/webpack5/build-info.test.ts | 18 ++++++ .../bundle-size-optimizations.config.js | 17 ++++++ .../bundle-size-optimizations.test.ts | 32 +++++++++++ .../component-annotation-disabled.config.js | 38 +++++++++++++ .../component-annotation-disabled.test.ts | 39 +++++++++++++ .../component-annotation-next.config.js | 38 +++++++++++++ .../component-annotation-next.test.ts | 46 ++++++++++++++++ .../webpack5/component-annotation.config.js | 38 +++++++++++++ .../webpack5/component-annotation.test.ts | 51 +++++++++++++++++ .../webpack5/debugid-disabled.config.js | 18 ++++++ .../webpack5/debugid-disabled.test.ts | 19 +++++++ .../debugids-already-injected.config.js | 18 ++++++ .../debugids-already-injected.test.ts | 25 +++++++++ .../webpack5/module-metadata.config.js | 17 ++++++ .../fixtures/webpack5/module-metadata.test.ts | 21 +++++++ .../webpack5/multiple-entry-points.config.js | 20 +++++++ .../webpack5/multiple-entry-points.test.ts | 53 ++++++++++++++++++ .../fixtures/webpack5/package.json | 22 ++++++++ .../webpack5/release-disabled.config.js | 17 ++++++ .../webpack5/release-disabled.test.ts | 22 ++++++++ .../fixtures/webpack5/src/app.jsx | 9 +++ .../fixtures/webpack5/src/basic.js | 2 + .../fixtures/webpack5/src/bundle.js | 10 ++++ .../fixtures/webpack5/src/common.js | 3 + .../fixtures/webpack5/src/component-a.jsx | 3 + .../fixtures/webpack5/src/entry1.js | 3 + .../fixtures/webpack5/src/entry2.js | 3 + .../fixtures/webpack5/telemetry.config.js | 17 ++++++ .../fixtures/webpack5/telemetry.test.ts | 23 ++++++++ .../fixtures/webpack5/utils.ts | 55 +++++++++++++++++++ 41 files changed, 913 insertions(+) create mode 100644 packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/application-key.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/build-info.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/package.json create mode 100644 packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/common.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/telemetry.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/utils.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js new file mode 100644 index 000000000000..40d37d6256f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js @@ -0,0 +1,18 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/after-upload-deletion"), + filename: "basic.js", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts new file mode 100644 index 000000000000..53c8e5a41788 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ; + //# sourceMappingURL=basic.js.map", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/application-key.config.js b/packages/integration-tests-next/fixtures/webpack5/application-key.config.js new file mode 100644 index 000000000000..fdfa64ff78dd --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/application-key.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/application-key.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/application-key"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts b/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts new file mode 100644 index 000000000000..10ccca8a99b2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js new file mode 100644 index 000000000000..45653852ad44 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/basic-release-disabled"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts new file mode 100644 index 000000000000..f939d6753704 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.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]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js new file mode 100644 index 000000000000..4ed0d5e71279 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js @@ -0,0 +1,18 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/basic-sourcemaps"), + filename: "basic.js", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..6db94a83cd0c --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ; + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","mappings":";;;AAAA;AACA","sources":["webpack://webpack5-integration-tests/./src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"sourceRoot":""}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/basic.config.js b/packages/integration-tests-next/fixtures/webpack5/basic.config.js new file mode 100644 index 000000000000..7c469c43cbcb --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/basic.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/basic"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/basic.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic.test.ts new file mode 100644 index 000000000000..484819ee438f --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.config.js b/packages/integration-tests-next/fixtures/webpack5/build-info.config.js new file mode 100644 index 000000000000..5c13b5d02ab4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/build-info.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/build-info.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/build-info"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts new file mode 100644 index 000000000000..6fa65cdcd6fe --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts @@ -0,0 +1,18 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js new file mode 100644 index 000000000000..f8e9fda6d050 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/bundle.js", + output: { + path: resolve("./out/bundle-size-optimizations"), + filename: "bundle.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..ea838e8cf9b0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts @@ -0,0 +1,32 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1ddfd748-f716-49b5-a6bb-a08a480112e2",e._sentryDebugIdIdentifier="sentry-dbid-1ddfd748-f716-49b5-a6bb-a08a480112e2");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + console.log( + JSON.stringify({ + debug: false ? 0 : "b", + trace: false ? 0 : "b", + replayCanvas: true ? "a" : 0, + replayIframe: true ? "a" : 0, + replayShadowDom: true ? "a" : 0, + replayWorker: true ? "a" : 0, + }) + ); + + /******/ })() + ;", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js new file mode 100644 index 000000000000..67568f40c68a --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js @@ -0,0 +1,38 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/app.jsx", + output: { + path: resolve("./out/component-annotation-disabled"), + filename: "app.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + module: { + rules: [ + { + test: /\.(js|jsx)$/, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: [["@babel/preset-react", { runtime: "automatic" }]], + }, + }, + }, + ], + }, + resolve: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + externals: { + react: "react", + "react/jsx-runtime": "react/jsx-runtime", + }, + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..448b9fc92f74 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts @@ -0,0 +1,39 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="56aca27b-2809-426a-9842-c74241cd7985",e._sentryDebugIdIdentifier="sentry-dbid-56aca27b-2809-426a-9842-c74241cd7985");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + + // UNUSED EXPORTS: default + + ;// external "react/jsx-runtime" + const jsx_runtime_namespaceObject = react/jsx-runtime; + ;// ./src/component-a.jsx + /* unused harmony import specifier */ var _jsx; + + function ComponentA() { + return /*#__PURE__*/_jsx("span", { + children: "Component A" + }); + } + ;// ./src/app.jsx + /* unused harmony import specifier */ var app_ComponentA; + /* unused harmony import specifier */ var _jsxs; + /* unused harmony import specifier */ var app_jsx; + + + function App() { + return /*#__PURE__*/_jsxs("span", { + children: [/*#__PURE__*/app_jsx(app_ComponentA, {}), ";"] + }); + } + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js new file mode 100644 index 000000000000..bdbbe93abc5b --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js @@ -0,0 +1,38 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/app.jsx", + output: { + path: resolve("./out/component-annotation-next"), + filename: "app.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + module: { + rules: [ + { + test: /\.(js|jsx)$/, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: [["@babel/preset-react", { runtime: "automatic" }]], + }, + }, + }, + ], + }, + resolve: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + externals: { + react: "react", + "react/jsx-runtime": "react/jsx-runtime", + }, + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts new file mode 100644 index 000000000000..30fa06af4f10 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts @@ -0,0 +1,46 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Windows Debug IDs do not match snapshots"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="550fd31a-707a-4221-b84e-f3964d7c368b",e._sentryDebugIdIdentifier="sentry-dbid-550fd31a-707a-4221-b84e-f3964d7c368b");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + + // UNUSED EXPORTS: default + + ;// external "react/jsx-runtime" + const jsx_runtime_namespaceObject = react/jsx-runtime; + ;// ./src/component-a.jsx + /* unused harmony import specifier */ var _jsx; + + function ComponentA() { + return /*#__PURE__*/_jsx("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }); + } + ;// ./src/app.jsx + /* unused harmony import specifier */ var app_ComponentA; + /* unused harmony import specifier */ var _jsxs; + /* unused harmony import specifier */ var app_jsx; + + + function App() { + return /*#__PURE__*/_jsxs("span", { + "data-sentry-component": "App", + children: [/*#__PURE__*/app_jsx(app_ComponentA, {}), ";"] + }); + } + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js b/packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js new file mode 100644 index 000000000000..b2ea18bb3f20 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js @@ -0,0 +1,38 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/app.jsx", + output: { + path: resolve("./out/component-annotation"), + filename: "app.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + module: { + rules: [ + { + test: /\.(js|jsx)$/, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: [["@babel/preset-react", { runtime: "automatic" }]], + }, + }, + }, + ], + }, + resolve: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + externals: { + react: "react", + "react/jsx-runtime": "react/jsx-runtime", + }, + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts new file mode 100644 index 000000000000..5f8cb1a0a41d --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts @@ -0,0 +1,51 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Windows Debug IDs do not match snapshots"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cfc1abb3-018d-4ab5-adbb-cdba19bbd8e0",e._sentryDebugIdIdentifier="sentry-dbid-cfc1abb3-018d-4ab5-adbb-cdba19bbd8e0");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + + // UNUSED EXPORTS: default + + ;// external "react/jsx-runtime" + const jsx_runtime_namespaceObject = react/jsx-runtime; + ;// ./src/component-a.jsx + /* unused harmony import specifier */ var _jsx; + + function ComponentA() { + return /*#__PURE__*/_jsx("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }); + } + ;// ./src/app.jsx + /* unused harmony import specifier */ var app_ComponentA; + /* unused harmony import specifier */ var _jsxs; + /* unused harmony import specifier */ var app_jsx; + + + function App() { + return /*#__PURE__*/_jsxs("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/*#__PURE__*/app_jsx(app_ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }), ";"] + }); + } + /******/ })() + ;", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js b/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js new file mode 100644 index 000000000000..d60f57473897 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js @@ -0,0 +1,18 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/debugid-disabled"), + filename: "basic.js", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts new file mode 100644 index 000000000000..c8fba65d43dc --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts @@ -0,0 +1,19 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "/******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ; + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","mappings":";;AAAA;AACA","sources":["webpack://webpack5-integration-tests/./src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"sourceRoot":""}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js new file mode 100644 index 000000000000..abb4f264bc7d --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js @@ -0,0 +1,18 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/debugids-already-injected.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/debugids-already-injected"), + filename: "basic.js", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts new file mode 100644 index 000000000000..4e23efde0c33 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { readAllFiles } from "../utils"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, createTempDir }) => { + const tempDir = createTempDir(); + + runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + const files = readAllFiles(tempDir); + expect(files).toMatchInlineSnapshot(` + { + "33730b8e-5b8d-4795-94b2-666cea28fce6-0.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ; + //# sourceMappingURL=basic.js.map + //# debugId=33730b8e-5b8d-4795-94b2-666cea28fce6", + "33730b8e-5b8d-4795-94b2-666cea28fce6-0.js.map": "{"version":3,"file":"basic.js","mappings":";;;AAAA;AACA","sources":["webpack5-integration-tests/./src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"sourceRoot":"","debug_id":"33730b8e-5b8d-4795-94b2-666cea28fce6","debugId":"33730b8e-5b8d-4795-94b2-666cea28fce6"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js b/packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js new file mode 100644 index 000000000000..aabbcd6f2cfe --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/module-metadata.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/module-metadata"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts b/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts new file mode 100644 index 000000000000..44bc19d9c2bb --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js new file mode 100644 index 000000000000..f25bc02dd5a0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js @@ -0,0 +1,20 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: { + entry1: "./src/entry1.js", + entry2: "./src/entry2.js", + }, + output: { + path: resolve("./out/multiple-entry-points"), + filename: "[name].js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts new file mode 100644 index 000000000000..fa76d2b4f7a8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts @@ -0,0 +1,53 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "entry1.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]="a50aee12-d2d3-4d16-88bd-652f76f59160",e._sentryDebugIdIdentifier="sentry-dbid-a50aee12-d2d3-4d16-88bd-652f76f59160");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + + ;// ./src/common.js + function add(a, b) { + return a + b; + } + + ;// ./src/entry1.js + + + console.log(add(1, 2)); + + /******/ })() + ;", + "entry2.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]="ca296a6b-7e8f-4158-a4c6-725f2e93e232",e._sentryDebugIdIdentifier="sentry-dbid-ca296a6b-7e8f-4158-a4c6-725f2e93e232");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + + ;// ./src/common.js + function add(a, b) { + return a + b; + } + + ;// ./src/entry2.js + + + console.log(add(2, 4)); + + /******/ })() + ;", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json new file mode 100644 index 000000000000..4e198e5936c3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -0,0 +1,22 @@ +{ + "name": "webpack5-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "webpack": "5.105.4", + "webpack-cli": "6.0.1", + "@babel/preset-react": "7.23.3", + "@sentry/webpack-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js b/packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js new file mode 100644 index 000000000000..2022c6352e06 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/release-disabled.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/release-disabled"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts new file mode 100644 index 000000000000..721d02f65e0e --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/src/app.jsx b/packages/integration-tests-next/fixtures/webpack5/src/app.jsx new file mode 100644 index 000000000000..614d38c834aa --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/app.jsx @@ -0,0 +1,9 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} diff --git a/packages/integration-tests-next/fixtures/webpack5/src/basic.js b/packages/integration-tests-next/fixtures/webpack5/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/webpack5/src/bundle.js b/packages/integration-tests-next/fixtures/webpack5/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/webpack5/src/common.js b/packages/integration-tests-next/fixtures/webpack5/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx b/packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/webpack5/src/entry1.js b/packages/integration-tests-next/fixtures/webpack5/src/entry1.js new file mode 100644 index 000000000000..6ab03d8de7e3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common.js"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/webpack5/src/entry2.js b/packages/integration-tests-next/fixtures/webpack5/src/entry2.js new file mode 100644 index 000000000000..675580cf5752 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common.js"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.config.js b/packages/integration-tests-next/fixtures/webpack5/telemetry.config.js new file mode 100644 index 000000000000..09da2ef50780 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/telemetry.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/telemetry.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/telemetry"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts new file mode 100644 index 000000000000..bf7f62d0ef2c --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts @@ -0,0 +1,23 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/utils.ts b/packages/integration-tests-next/fixtures/webpack5/utils.ts new file mode 100644 index 000000000000..010edbb0fc1d --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/utils.ts @@ -0,0 +1,55 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + vitestTest(`webpack v5 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `pnpm webpack --config ${testName}.config.js`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); +} From 0a89c2f69aadcf6356a33fefdf9cb47b64134a9a Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 30 Mar 2026 09:14:21 +0000 Subject: [PATCH 607/640] test: Vite integration tests (#899) --- .../package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- packages/esbuild-plugin/package.json | 2 +- packages/integration-tests-next/.eslintrc.js | 8 +- .../rolldown/after-upload-deletion.test.ts | 12 +- .../fixtures/rolldown/application-key.test.ts | 29 ++- .../rolldown/basic-release-disabled.test.ts | 21 +- .../rolldown/basic-sourcemaps.test.ts | 14 +- .../fixtures/rolldown/basic.test.ts | 14 +- .../fixtures/rolldown/build-info.test.ts | 23 ++- .../bundle-size-optimizations.test.ts | 14 +- .../component-annotation-disabled.test.ts | 16 +- .../component-annotation-next.test.ts | 16 +- .../rolldown/component-annotation.test.ts | 16 +- .../rolldown/debugid-disabled.test.ts | 16 +- .../debugids-already-injected.test.ts | 26 ++- .../fixtures/rolldown/module-metadata.test.ts | 32 ++- .../rolldown/multiple-entry-points.test.ts | 63 ++++-- .../fixtures/rolldown/package.json | 4 +- .../fixtures/rolldown/query-param.test.ts | 44 +++- .../rolldown/release-disabled.test.ts | 14 +- .../fixtures/rolldown/telemetry.test.ts | 14 +- .../fixtures/rolldown/utils.ts | 2 +- .../fixtures/rollup3/package.json | 8 +- .../fixtures/rollup4/package.json | 6 +- .../integration-tests-next/fixtures/utils.ts | 5 +- .../vite4/after-upload-deletion.config.ts | 18 ++ .../vite4/after-upload-deletion.test.ts | 25 +++ .../fixtures/vite4/application-key.config.ts | 17 ++ .../fixtures/vite4/application-key.test.ts | 28 +++ .../vite4/basic-release-disabled.config.ts | 17 ++ .../vite4/basic-release-disabled.test.ts | 20 ++ .../fixtures/vite4/basic-sourcemaps.config.ts | 18 ++ .../fixtures/vite4/basic-sourcemaps.test.ts | 31 +++ .../fixtures/vite4/basic.config.ts | 17 ++ .../fixtures/vite4/basic.test.ts | 29 +++ .../fixtures/vite4/build-info.config.ts | 17 ++ .../fixtures/vite4/build-info.test.ts | 22 ++ .../vite4/bundle-size-optimizations.config.ts | 17 ++ .../vite4/bundle-size-optimizations.test.ts | 36 ++++ .../component-annotation-disabled.config.ts | 21 ++ .../component-annotation-disabled.test.ts | 31 +++ .../vite4/component-annotation-next.config.ts | 21 ++ .../vite4/component-annotation-next.test.ts | 31 +++ .../vite4/component-annotation.config.ts | 21 ++ .../vite4/component-annotation.test.ts | 31 +++ .../fixtures/vite4/debugid-disabled.config.ts | 18 ++ .../fixtures/vite4/debugid-disabled.test.ts | 14 ++ .../fixtures/vite4/module-metadata.config.ts | 17 ++ .../fixtures/vite4/module-metadata.test.ts | 31 +++ .../vite4/multiple-entry-points.config.ts | 18 ++ .../vite4/multiple-entry-points.test.ts | 58 ++++++ .../fixtures/vite4/package.json | 23 +++ .../fixtures/vite4/query-param.config.ts | 18 ++ .../fixtures/vite4/query-param.test.ts | 55 +++++ .../fixtures/vite4/release-disabled.config.ts | 17 ++ .../fixtures/vite4/release-disabled.test.ts | 25 +++ .../fixtures/vite4/src/app.jsx | 11 + .../fixtures/vite4/src/basic.js | 2 + .../fixtures/vite4/src/bundle.js | 10 + .../fixtures/vite4/src/common.js | 3 + .../fixtures/vite4/src/component-a.jsx | 3 + .../fixtures/vite4/src/entry1.js | 3 + .../fixtures/vite4/src/entry2.js | 3 + .../fixtures/vite4/telemetry.config.ts | 17 ++ .../fixtures/vite4/telemetry.test.ts | 26 +++ .../fixtures/vite4/utils.ts | 56 ++++++ .../vite7/after-upload-deletion.config.ts | 18 ++ .../vite7/after-upload-deletion.test.ts | 25 +++ .../fixtures/vite7/application-key.config.ts | 17 ++ .../fixtures/vite7/application-key.test.ts | 28 +++ .../vite7/basic-release-disabled.config.ts | 17 ++ .../vite7/basic-release-disabled.test.ts | 20 ++ .../fixtures/vite7/basic-sourcemaps.config.ts | 18 ++ .../fixtures/vite7/basic-sourcemaps.test.ts | 31 +++ .../fixtures/vite7/basic.config.ts | 17 ++ .../fixtures/vite7/basic.test.ts | 29 +++ .../fixtures/vite7/build-info.config.ts | 17 ++ .../fixtures/vite7/build-info.test.ts | 22 ++ .../vite7/bundle-size-optimizations.config.ts | 17 ++ .../vite7/bundle-size-optimizations.test.ts | 36 ++++ .../component-annotation-disabled.config.ts | 21 ++ .../component-annotation-disabled.test.ts | 31 +++ .../vite7/component-annotation-next.config.ts | 21 ++ .../vite7/component-annotation-next.test.ts | 31 +++ .../vite7/component-annotation.config.ts | 21 ++ .../vite7/component-annotation.test.ts | 31 +++ .../fixtures/vite7/debugid-disabled.config.ts | 18 ++ .../fixtures/vite7/debugid-disabled.test.ts | 14 ++ .../vite7/debugids-already-injected.config.ts | 19 ++ .../vite7/debugids-already-injected.test.ts | 28 +++ .../fixtures/vite7/module-metadata.config.ts | 17 ++ .../fixtures/vite7/module-metadata.test.ts | 31 +++ .../vite7/multiple-entry-points.config.ts | 18 ++ .../vite7/multiple-entry-points.test.ts | 58 ++++++ .../fixtures/vite7/package.json | 23 +++ .../fixtures/vite7/query-param.config.ts | 18 ++ .../fixtures/vite7/query-param.test.ts | 55 +++++ .../fixtures/vite7/release-disabled.config.ts | 17 ++ .../fixtures/vite7/release-disabled.test.ts | 25 +++ .../fixtures/vite7/src/app.jsx | 11 + .../fixtures/vite7/src/basic.js | 2 + .../fixtures/vite7/src/bundle.js | 10 + .../fixtures/vite7/src/common.js | 3 + .../fixtures/vite7/src/component-a.jsx | 3 + .../fixtures/vite7/src/entry1.js | 3 + .../fixtures/vite7/src/entry2.js | 3 + .../fixtures/vite7/telemetry.config.ts | 17 ++ .../fixtures/vite7/telemetry.test.ts | 26 +++ .../fixtures/vite7/utils.ts | 63 ++++++ .../vite8/after-upload-deletion.config.ts | 18 ++ .../vite8/after-upload-deletion.test.ts | 25 +++ .../fixtures/vite8/application-key.config.ts | 17 ++ .../fixtures/vite8/application-key.test.ts | 28 +++ .../vite8/basic-release-disabled.config.ts | 17 ++ .../vite8/basic-release-disabled.test.ts | 20 ++ .../fixtures/vite8/basic-sourcemaps.config.ts | 18 ++ .../fixtures/vite8/basic-sourcemaps.test.ts | 31 +++ .../fixtures/vite8/basic.config.ts | 17 ++ .../fixtures/vite8/basic.test.ts | 29 +++ .../fixtures/vite8/build-info.config.ts | 17 ++ .../fixtures/vite8/build-info.test.ts | 22 ++ .../vite8/bundle-size-optimizations.config.ts | 17 ++ .../vite8/bundle-size-optimizations.test.ts | 36 ++++ .../component-annotation-disabled.config.ts | 21 ++ .../component-annotation-disabled.test.ts | 27 +++ .../vite8/component-annotation-next.config.ts | 21 ++ .../vite8/component-annotation-next.test.ts | 27 +++ .../vite8/component-annotation.config.ts | 21 ++ .../vite8/component-annotation.test.ts | 27 +++ .../fixtures/vite8/debugid-disabled.config.ts | 18 ++ .../fixtures/vite8/debugid-disabled.test.ts | 14 ++ .../vite8/debugids-already-injected.config.ts | 19 ++ .../vite8/debugids-already-injected.test.ts | 28 +++ .../fixtures/vite8/module-metadata.config.ts | 17 ++ .../fixtures/vite8/module-metadata.test.ts | 31 +++ .../vite8/multiple-entry-points.config.ts | 18 ++ .../vite8/multiple-entry-points.test.ts | 58 ++++++ .../fixtures/vite8/package.json | 23 +++ .../fixtures/vite8/query-param.config.ts | 18 ++ .../fixtures/vite8/query-param.test.ts | 55 +++++ .../fixtures/vite8/release-disabled.config.ts | 17 ++ .../fixtures/vite8/release-disabled.test.ts | 25 +++ .../fixtures/vite8/src/app.jsx | 11 + .../fixtures/vite8/src/basic.js | 2 + .../fixtures/vite8/src/bundle.js | 10 + .../fixtures/vite8/src/common.js | 3 + .../fixtures/vite8/src/component-a.jsx | 3 + .../fixtures/vite8/src/entry1.js | 3 + .../fixtures/vite8/src/entry2.js | 3 + .../fixtures/vite8/telemetry.config.ts | 17 ++ .../fixtures/vite8/telemetry.test.ts | 26 +++ .../fixtures/vite8/utils.ts | 62 ++++++ packages/integration-tests-next/tsconfig.json | 4 + packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- yarn.lock | 190 ++++++++++-------- 158 files changed, 3193 insertions(+), 213 deletions(-) create mode 100644 packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/application-key.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/build-info.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/package.json create mode 100644 packages/integration-tests-next/fixtures/vite4/query-param.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/vite4/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/common.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/vite4/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/vite4/telemetry.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/utils.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/application-key.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/build-info.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/package.json create mode 100644 packages/integration-tests-next/fixtures/vite7/query-param.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/vite7/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/common.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/vite7/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/vite7/telemetry.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/utils.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/application-key.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/build-info.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/package.json create mode 100644 packages/integration-tests-next/fixtures/vite8/query-param.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/query-param.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/vite8/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/common.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/vite8/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/vite8/telemetry.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/utils.ts diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 6db6e9ab5c57..119de3e9f616 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -58,7 +58,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 283592310a35..e766050fbf45 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -72,7 +72,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 45fbea76e9ab..bedf0d0444b4 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -57,7 +57,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/integration-tests-next/.eslintrc.js b/packages/integration-tests-next/.eslintrc.js index 86143395211f..bb47417785f4 100644 --- a/packages/integration-tests-next/.eslintrc.js +++ b/packages/integration-tests-next/.eslintrc.js @@ -2,7 +2,13 @@ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "fixtures/*/out", "fixtures/*/src"], + ignorePatterns: [ + ".eslintrc.js", + "fixtures/*/out", + "fixtures/*/src", + // We ignore Vite fixtures for now because there are a couple of version mismatches. + "fixtures/vite*/**/*", + ], parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts index b99000759d47..98cb45aa63a0 100644 --- a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts @@ -6,9 +6,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}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 : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); //#endregion + //# sourceMappingURL=basic.js.map", } `); diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts index 460d301b2ff1..edec4127a516 100644 --- a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts @@ -4,11 +4,26 @@ import { test } from "./utils"; test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "basic.js": "//#region src/basic.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]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); - - //#endregion", - } - `); + { + "basic.js": "//#region src/basic.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] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts index 4f158672bfd2..a15fd429161b 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts @@ -6,11 +6,19 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}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 : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); //#endregion + //# sourceMappingURL=basic.js.map", - "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";scACA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,CAAA,KAAA,CAAA,CAAc"}", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc"}", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts index b3e85d7b6086..4f2aa09c4567 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts @@ -6,9 +6,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); - - //#endregion", + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts index 61aaf8000361..17f63e44bf73 100644 --- a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts @@ -6,9 +6,26 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@sentry/rollup-plugin","react","rolldown"],"depsVersions":{"react":19},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); - - //#endregion", + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { + "deps": [ + "@sentry/rollup-plugin", + "react", + "rolldown" + ], + "depsVersions": { "react": 19 }, + "nodeVersion":"NODE_VERSION" + }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", } `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts index 5e4bb51f7611..63d082bcb4be 100644 --- a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts @@ -6,7 +6,15 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "bundle.js": "//#region src/bundle.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92a38845-d1ee-42b4-9812-67a76e42b480",e._sentryDebugIdIdentifier="sentry-dbid-92a38845-d1ee-42b4-9812-67a76e42b480");}catch(e){}}();console.log(JSON.stringify({ + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "92a38845-d1ee-42b4-9812-67a76e42b480", e._sentryDebugIdIdentifier = "sentry-dbid-92a38845-d1ee-42b4-9812-67a76e42b480"); + } catch (e) {} + })(); + console.log(JSON.stringify({ debug: "b", trace: "b", replayCanvas: "a", @@ -14,8 +22,8 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { replayShadowDom: "a", replayWorker: "a" })); - - //#endregion", + //#endregion + ", } `); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts index bff61bbfde65..6cfa24bb39ce 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts @@ -5,21 +5,27 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="85f51673-9b26-4de9-b6ba-12058e53f08b",e._sentryDebugIdIdentifier="sentry-dbid-85f51673-9b26-4de9-b6ba-12058e53f08b");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; - + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "85f51673-9b26-4de9-b6ba-12058e53f08b", e._sentryDebugIdIdentifier = "sentry-dbid-85f51673-9b26-4de9-b6ba-12058e53f08b"); + } catch (e) {} + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { return /* @__PURE__ */ jsx("span", { children: "Component A" }); } - //#endregion //#region src/app.jsx function App() { return /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] }); } - //#endregion - export { App as default };", + export { App as default }; + ", } `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts index 6b782f3ad8ce..fc72317d8acd 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts @@ -5,8 +5,15 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="08d8ea54-706b-4dfc-9e1f-19af2d0fc86e",e._sentryDebugIdIdentifier="sentry-dbid-08d8ea54-706b-4dfc-9e1f-19af2d0fc86e");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; - + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "08d8ea54-706b-4dfc-9e1f-19af2d0fc86e", e._sentryDebugIdIdentifier = "sentry-dbid-08d8ea54-706b-4dfc-9e1f-19af2d0fc86e"); + } catch (e) {} + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { return /* @__PURE__ */ jsx("span", { @@ -14,7 +21,6 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { children: "Component A" }); } - //#endregion //#region src/app.jsx function App() { @@ -23,9 +29,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { children: [/* @__PURE__ */ jsx(ComponentA, {}), ";"] }); } - //#endregion - export { App as default };", + export { App as default }; + ", } `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts index 1968819eec89..3d8a49a39e05 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts @@ -5,8 +5,15 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0ad46712-3fec-46f3-8539-60a50dfc7fc6",e._sentryDebugIdIdentifier="sentry-dbid-0ad46712-3fec-46f3-8539-60a50dfc7fc6");}catch(e){}}();import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; - + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "0ad46712-3fec-46f3-8539-60a50dfc7fc6", e._sentryDebugIdIdentifier = "sentry-dbid-0ad46712-3fec-46f3-8539-60a50dfc7fc6"); + } catch (e) {} + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; //#region src/component-a.jsx function ComponentA() { return /* @__PURE__ */ jsx("span", { @@ -15,7 +22,6 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { children: "Component A" }); } - //#endregion //#region src/app.jsx function App() { @@ -28,9 +34,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { }), ";"] }); } - //#endregion - export { App as default };", + export { App as default }; + ", } `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts index 342629848639..0502dbb79f0c 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts @@ -4,13 +4,13 @@ import { test } from "./utils"; test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "basic.js": "//#region src/basic.js - console.log("hello world"); + { + "basic.js": "//#region src/basic.js + console.log("hello world"); + //#endregion - //#endregion - //# sourceMappingURL=basic.js.map", - "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";AACA,QAAQ,IAAI,cAAc"}", - } - `); + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";AACA,QAAQ,IAAI,cAAc"}", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts index 398dc71f925e..1ea310ac5da5 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts @@ -8,14 +8,22 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); const files = readAllFiles(tempDir); expect(files).toMatchInlineSnapshot(` - { - "b699d9c1-b033-4536-aa25-233c92609b54-0.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); + { + "b699d9c1-b033-4536-aa25-233c92609b54-0.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion - //#endregion - //# debugId=b699d9c1-b033-4536-aa25-233c92609b54 - //# sourceMappingURL=basic.js.map", - "b699d9c1-b033-4536-aa25-233c92609b54-0.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";scACA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,CAAA,KAAA,CAAA,CAAc","debugId":"b699d9c1-b033-4536-aa25-233c92609b54","debug_id":"b699d9c1-b033-4536-aa25-233c92609b54"}", - } - `); + //# debugId=b699d9c1-b033-4536-aa25-233c92609b54 + //# sourceMappingURL=basic.js.map", + "b699d9c1-b033-4536-aa25-233c92609b54-0.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc","debugId":"b699d9c1-b033-4536-aa25-233c92609b54","debug_id":"b699d9c1-b033-4536-aa25-233c92609b54"}", + } + `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts index ece716eb3cc3..02d3c2a89830 100644 --- a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts @@ -4,13 +4,31 @@ import { test } from "./utils"; test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` - { - "common.js": "//#region src/common.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]="3f33b953-1cf1-4c05-850d-3f5b805fa101",e._sentryDebugIdIdentifier="sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101");}catch(e){}}();function add(a, b) { - return a + b; - } - - //#endregion - export { add as t };", - "entry1.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]="cbcd67c2-83a7-44e1-94e6-9a8ab161f162",e._sentryDebugIdIdentifier="sentry-dbid-cbcd67c2-83a7-44e1-94e6-9a8ab161f162");}catch(e){}}();import { t as add } from "./common.js"; - - //#region src/entry1.js - console.log(add(1, 2)); - - //#endregion", - "entry2.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]="a4f71127-2139-4e9f-af54-f35982254569",e._sentryDebugIdIdentifier="sentry-dbid-a4f71127-2139-4e9f-af54-f35982254569");}catch(e){}}();import { t as add } from "./common.js"; - - //#region src/entry2.js - console.log(add(2, 4)); - - //#endregion", - } - `); + { + "common.js": "//#region src/common.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] = "3f33b953-1cf1-4c05-850d-3f5b805fa101", e._sentryDebugIdIdentifier = "sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101"); + } catch (e) {} + })(); + function add(a, b) { + return a + b; + } + //#endregion + export { add as t }; + ", + "entry1.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] = "cbcd67c2-83a7-44e1-94e6-9a8ab161f162", e._sentryDebugIdIdentifier = "sentry-dbid-cbcd67c2-83a7-44e1-94e6-9a8ab161f162"); + } catch (e) {} + })(); + import { t as add } from "./common.js"; + //#region src/entry1.js + console.log(add(1, 2)); + //#endregion + ", + "entry2.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] = "a4f71127-2139-4e9f-af54-f35982254569", e._sentryDebugIdIdentifier = "sentry-dbid-a4f71127-2139-4e9f-af54-f35982254569"); + } catch (e) {} + })(); + import { t as add } from "./common.js"; + //#region src/entry2.js + console.log(add(2, 4)); + //#endregion + ", + } + `); const output1 = runFileInNode("entry1.js"); expect(output1).toMatchInlineSnapshot(` diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 0ed829511f7b..99414718b609 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -5,8 +5,8 @@ "type": "module", "dependencies": { "@sentry/rollup-plugin": "5.1.1", - "react": "^19.2.4", - "rolldown": "^1.0.0-rc.6" + "react": "19.2.4", + "rolldown": "1.0.0-rc.10" }, "pnpm": { "overrides": { diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts index 5b3a013a527d..f3e323644136 100644 --- a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts @@ -11,24 +11,46 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "common.js?seP58q4g": "//#region src/common.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3f33b953-1cf1-4c05-850d-3f5b805fa101",e._sentryDebugIdIdentifier="sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101");}catch(e){}}();function add(a, b) { + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3f33b953-1cf1-4c05-850d-3f5b805fa101", e._sentryDebugIdIdentifier = "sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101"); + } catch (e) {} + })(); + function add(a, b) { return a + b; } - //#endregion - export { add as t };", - "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bf11f932-fe2b-4b54-97e0-45abde2a0d81",e._sentryDebugIdIdentifier="sentry-dbid-bf11f932-fe2b-4b54-97e0-45abde2a0d81");}catch(e){}}();import { t as add } from "./common.js?seP58q4g"; - + export { add as t }; + ", + "entry1.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bf11f932-fe2b-4b54-97e0-45abde2a0d81", e._sentryDebugIdIdentifier = "sentry-dbid-bf11f932-fe2b-4b54-97e0-45abde2a0d81"); + } catch (e) {} + })(); + import { t as add } from "./common.js?seP58q4g"; //#region src/entry1.js console.log(add(1, 2)); - - //#endregion", - "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e",e._sentryDebugIdIdentifier="sentry-dbid-5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e");}catch(e){}}();import { t as add } from "./common.js?seP58q4g"; - + //#endregion + ", + "entry2.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e", e._sentryDebugIdIdentifier = "sentry-dbid-5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e"); + } catch (e) {} + })(); + import { t as add } from "./common.js?seP58q4g"; //#region src/entry2.js console.log(add(2, 4)); - - //#endregion", + //#endregion + ", } `); }); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts index 1882108639ce..8003ac691aba 100644 --- a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts @@ -6,9 +6,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); - - //#endregion", + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts index 7fe93c6517b1..e89a87dbd995 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -6,9 +6,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "//#region src/basic.js - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b699d9c1-b033-4536-aa25-233c92609b54",e._sentryDebugIdIdentifier="sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54");}catch(e){}}();console.log("hello world"); - - //#endregion", + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts index 3b00ad737690..d858292ec775 100644 --- a/packages/integration-tests-next/fixtures/rolldown/utils.ts +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -27,7 +27,7 @@ export function test(url: string, callback: TestCallback) { rmSync(outDir, { recursive: true, force: true }); // Rolldown requires Node 20+ - if (NODE_MAJOR_VERSION <= 18) { + if (NODE_MAJOR_VERSION < 20) { // eslint-disable-next-line @typescript-eslint/no-empty-function vitestTest.skip(testName); } else { diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index 5b3dc1814807..0317ba75b40e 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -4,10 +4,10 @@ "private": true, "type": "module", "dependencies": { - "react": "^19.2.4", - "rollup": "^3.30.0", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-node-resolve": "^15.2.3", + "react": "19.2.4", + "rollup": "3.30.0", + "@rollup/plugin-babel": "6.0.4", + "@rollup/plugin-node-resolve": "15.2.3", "@sentry/rollup-plugin": "5.1.1" }, "pnpm": { diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index 0914c4c401f9..a9d649e33f46 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -4,9 +4,9 @@ "private": true, "type": "module", "dependencies": { - "react": "^19.2.4", - "rollup": "^4.59.0", - "@rollup/plugin-babel": "^6.0.4", + "react": "19.2.4", + "rollup": "4.59.0", + "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "16.0.3", "@sentry/rollup-plugin": "5.1.1" }, diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index d6fd9d31ddc2..22fb76b5278d 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -34,7 +34,10 @@ export function readAllFiles(directory: string): Record { // We replace the current SHA with a placeholder to make snapshots deterministic contents = contents .replaceAll(CURRENT_SHA, "CURRENT_SHA") - .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`); + .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`) + .replaceAll(/"nodeVersion": \d+/g, `"nodeVersion":"NODE_VERSION"`) + .replaceAll(/nodeVersion:\d+/g, `nodeVersion:"NODE_VERSION"`) + .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`); // Normalize Windows stuff in .map paths if (entry.endsWith(".map")) { diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts new file mode 100644 index 000000000000..674c7e70e2c3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/after-upload-deletion", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts new file mode 100644 index 000000000000..ced3602eb876 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.config.ts b/packages/integration-tests-next/fixtures/vite4/application-key.config.ts new file mode 100644 index 000000000000..ee524c7fef5b --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/application-key.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/application-key.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/application-key", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts new file mode 100644 index 000000000000..902f8657de17 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts new file mode 100644 index 000000000000..8624211863a5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts new file mode 100644 index 000000000000..eb87a85811e5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts @@ -0,0 +1,20 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts new file mode 100644 index 000000000000..312b7da14769 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-sourcemaps", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..d99bd4e64ae8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic.config.ts b/packages/integration-tests-next/fixtures/vite4/basic.config.ts new file mode 100644 index 000000000000..ec202ecbc6af --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic.test.ts b/packages/integration-tests-next/fixtures/vite4/basic.test.ts new file mode 100644 index 000000000000..5b79abcf1d5c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.config.ts b/packages/integration-tests-next/fixtures/vite4/build-info.config.ts new file mode 100644 index 000000000000..3f4081fdd72a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/build-info.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/build-info.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/build-info", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts new file mode 100644 index 000000000000..e185858a87a0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 4 }, "nodeVersion":"NODE_VERSION" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts new file mode 100644 index 000000000000..4feec9f2c5d3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/bundle.js", + output: { + dir: "out/bundle-size-optimizations", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..a853e327390a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts @@ -0,0 +1,36 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + } catch (e2) { + } + })(); + console.log( + JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a", + replayIframe: "a", + replayShadowDom: "a", + replayWorker: "a" + }) + ); + ", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts new file mode 100644 index 000000000000..ae087808a547 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..3fdf123e0367 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5950dfde-7033-4e00-a69c-652e1b5bc157", e._sentryDebugIdIdentifier = "sentry-dbid-5950dfde-7033-4e00-a69c-652e1b5bc157"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { children: [ + /* @__PURE__ */ jsx(ComponentA, {}), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts new file mode 100644 index 000000000000..fee75871b79a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-next", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts new file mode 100644 index 000000000000..4a616db3e9a8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "62a0263b-dddb-4ac5-bb1a-a352edfa415c", e._sentryDebugIdIdentifier = "sentry-dbid-62a0263b-dddb-4ac5-bb1a-a352edfa415c"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { "data-sentry-component": "App", children: [ + /* @__PURE__ */ jsx(ComponentA, {}), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts new file mode 100644 index 000000000000..f51fcde8508e --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react(), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts new file mode 100644 index 000000000000..7f123f0bcbbf --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d2aba7de-9acd-4eaf-8153-269a881dd7a6", e._sentryDebugIdIdentifier = "sentry-dbid-d2aba7de-9acd-4eaf-8153-269a881dd7a6"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", "data-sentry-source-file": "component-a.jsx", children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { "data-sentry-component": "App", "data-sentry-source-file": "app.jsx", children: [ + /* @__PURE__ */ jsx(ComponentA, { "data-sentry-element": "ComponentA", "data-sentry-source-file": "app.jsx" }), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts b/packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts new file mode 100644 index 000000000000..c70b040745ee --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/debugid-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts new file mode 100644 index 000000000000..1c99d55fbec9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts @@ -0,0 +1,14 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AACA,QAAQ,IAAI,aAAa;"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts b/packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts new file mode 100644 index 000000000000..b3612f9893e3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/module-metadata", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts new file mode 100644 index 000000000000..66fb3b112351 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts new file mode 100644 index 000000000000..ab3009969c83 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/multiple-entry-points", + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts new file mode 100644 index 000000000000..0ea77c27d8de --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts @@ -0,0 +1,58 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(1, 2)); + ", + "entry2.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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(2, 4)); + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/packages/integration-tests-next/fixtures/vite4/package.json new file mode 100644 index 000000000000..d57b814eed69 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/package.json @@ -0,0 +1,23 @@ +{ + "name": "vite4-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "19.2.4", + "vite": "4.5.14", + "@vitejs/plugin-react": "5.2.0", + "@sentry/vite-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.config.ts b/packages/integration-tests-next/fixtures/vite4/query-param.config.ts new file mode 100644 index 000000000000..7952c040f423 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/query-param.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/query-param.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts new file mode 100644 index 000000000000..b7def38700b7 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts @@ -0,0 +1,55 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(1, 2)); + ", + "entry2.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(2, 4)); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts new file mode 100644 index 000000000000..cb5c4c06ab55 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts new file mode 100644 index 000000000000..82038026d045 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/src/app.jsx b/packages/integration-tests-next/fixtures/vite4/src/app.jsx new file mode 100644 index 000000000000..5be821b44e72 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/app.jsx @@ -0,0 +1,11 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} + +console.log(App()); diff --git a/packages/integration-tests-next/fixtures/vite4/src/basic.js b/packages/integration-tests-next/fixtures/vite4/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/vite4/src/bundle.js b/packages/integration-tests-next/fixtures/vite4/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/vite4/src/common.js b/packages/integration-tests-next/fixtures/vite4/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/vite4/src/component-a.jsx b/packages/integration-tests-next/fixtures/vite4/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/vite4/src/entry1.js b/packages/integration-tests-next/fixtures/vite4/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/vite4/src/entry2.js b/packages/integration-tests-next/fixtures/vite4/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts new file mode 100644 index 000000000000..c02f3a57b082 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/telemetry", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts new file mode 100644 index 000000000000..f02b90e06b3f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/utils.ts b/packages/integration-tests-next/fixtures/vite4/utils.ts new file mode 100644 index 000000000000..89f7a2a6e18f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/utils.ts @@ -0,0 +1,56 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + vitestTest(`Vite v4 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `vite build --config ${testName}.config.ts`, + { + cwd, + env: { + ...process.env, + ...env, + NODE_ENV: "production", + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); +} diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts new file mode 100644 index 000000000000..674c7e70e2c3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/after-upload-deletion", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts new file mode 100644 index 000000000000..ced3602eb876 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/application-key.config.ts b/packages/integration-tests-next/fixtures/vite7/application-key.config.ts new file mode 100644 index 000000000000..ee524c7fef5b --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/application-key.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/application-key.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/application-key", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/application-key.test.ts b/packages/integration-tests-next/fixtures/vite7/application-key.test.ts new file mode 100644 index 000000000000..902f8657de17 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/application-key.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts new file mode 100644 index 000000000000..8624211863a5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts new file mode 100644 index 000000000000..eb87a85811e5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts @@ -0,0 +1,20 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts new file mode 100644 index 000000000000..312b7da14769 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-sourcemaps", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..d99bd4e64ae8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic.config.ts b/packages/integration-tests-next/fixtures/vite7/basic.config.ts new file mode 100644 index 000000000000..ec202ecbc6af --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic.test.ts b/packages/integration-tests-next/fixtures/vite7/basic.test.ts new file mode 100644 index 000000000000..5b79abcf1d5c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/build-info.config.ts b/packages/integration-tests-next/fixtures/vite7/build-info.config.ts new file mode 100644 index 000000000000..3f4081fdd72a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/build-info.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/build-info.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/build-info", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/build-info.test.ts b/packages/integration-tests-next/fixtures/vite7/build-info.test.ts new file mode 100644 index 000000000000..86290fae7c75 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/build-info.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 7 }, "nodeVersion":"NODE_VERSION" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts new file mode 100644 index 000000000000..4feec9f2c5d3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/bundle.js", + output: { + dir: "out/bundle-size-optimizations", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..a853e327390a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts @@ -0,0 +1,36 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + } catch (e2) { + } + })(); + console.log( + JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a", + replayIframe: "a", + replayShadowDom: "a", + replayWorker: "a" + }) + ); + ", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts new file mode 100644 index 000000000000..ae087808a547 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..3fdf123e0367 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5950dfde-7033-4e00-a69c-652e1b5bc157", e._sentryDebugIdIdentifier = "sentry-dbid-5950dfde-7033-4e00-a69c-652e1b5bc157"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { children: [ + /* @__PURE__ */ jsx(ComponentA, {}), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts new file mode 100644 index 000000000000..fee75871b79a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-next", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts new file mode 100644 index 000000000000..4a616db3e9a8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "62a0263b-dddb-4ac5-bb1a-a352edfa415c", e._sentryDebugIdIdentifier = "sentry-dbid-62a0263b-dddb-4ac5-bb1a-a352edfa415c"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { "data-sentry-component": "App", children: [ + /* @__PURE__ */ jsx(ComponentA, {}), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts new file mode 100644 index 000000000000..f51fcde8508e --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react(), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts new file mode 100644 index 000000000000..7f123f0bcbbf --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d2aba7de-9acd-4eaf-8153-269a881dd7a6", e._sentryDebugIdIdentifier = "sentry-dbid-d2aba7de-9acd-4eaf-8153-269a881dd7a6"); + } catch (e2) { + } + })(); + import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; + function ComponentA() { + return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", "data-sentry-source-file": "component-a.jsx", children: "Component A" }); + } + function App() { + return /* @__PURE__ */ jsxs("span", { "data-sentry-component": "App", "data-sentry-source-file": "app.jsx", children: [ + /* @__PURE__ */ jsx(ComponentA, { "data-sentry-element": "ComponentA", "data-sentry-source-file": "app.jsx" }), + ";" + ] }); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts b/packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts new file mode 100644 index 000000000000..c70b040745ee --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/debugid-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts new file mode 100644 index 000000000000..1c99d55fbec9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts @@ -0,0 +1,14 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AACA,QAAQ,IAAI,aAAa;"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts new file mode 100644 index 000000000000..f3dfcb913533 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts @@ -0,0 +1,19 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/debugids-already-injected.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/debugids-already-injected", + entryFileNames: "[name].js", + sourcemapDebugIds: true, + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts new file mode 100644 index 000000000000..5735e77121ae --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { readAllFiles } from "../utils"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, createTempDir }) => { + const tempDir = createTempDir(); + + runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + const files = readAllFiles(tempDir); + expect(files).toMatchInlineSnapshot(` + { + "252e0338-8927-4f52-bd57-188131defd0f-0.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# debugId=252e0338-8927-4f52-bd57-188131defd0f + //# sourceMappingURL=basic.js.map + ", + "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts b/packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts new file mode 100644 index 000000000000..b3612f9893e3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/module-metadata", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts new file mode 100644 index 000000000000..66fb3b112351 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts new file mode 100644 index 000000000000..ab3009969c83 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/multiple-entry-points", + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts new file mode 100644 index 000000000000..0ea77c27d8de --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts @@ -0,0 +1,58 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(1, 2)); + ", + "entry2.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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(2, 4)); + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/packages/integration-tests-next/fixtures/vite7/package.json new file mode 100644 index 000000000000..2ff628aae9fe --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/package.json @@ -0,0 +1,23 @@ +{ + "name": "vite7-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "19.2.4", + "vite": "7.3.1", + "@vitejs/plugin-react": "5.2.0", + "@sentry/vite-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/integration-tests-next/fixtures/vite7/query-param.config.ts b/packages/integration-tests-next/fixtures/vite7/query-param.config.ts new file mode 100644 index 000000000000..7952c040f423 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/query-param.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/query-param.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/query-param.test.ts b/packages/integration-tests-next/fixtures/vite7/query-param.test.ts new file mode 100644 index 000000000000..b7def38700b7 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/query-param.test.ts @@ -0,0 +1,55 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(1, 2)); + ", + "entry2.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(2, 4)); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts new file mode 100644 index 000000000000..cb5c4c06ab55 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts new file mode 100644 index 000000000000..82038026d045 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/src/app.jsx b/packages/integration-tests-next/fixtures/vite7/src/app.jsx new file mode 100644 index 000000000000..5be821b44e72 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/app.jsx @@ -0,0 +1,11 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} + +console.log(App()); diff --git a/packages/integration-tests-next/fixtures/vite7/src/basic.js b/packages/integration-tests-next/fixtures/vite7/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/vite7/src/bundle.js b/packages/integration-tests-next/fixtures/vite7/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/vite7/src/common.js b/packages/integration-tests-next/fixtures/vite7/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/vite7/src/component-a.jsx b/packages/integration-tests-next/fixtures/vite7/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/vite7/src/entry1.js b/packages/integration-tests-next/fixtures/vite7/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/vite7/src/entry2.js b/packages/integration-tests-next/fixtures/vite7/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts new file mode 100644 index 000000000000..c02f3a57b082 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/telemetry", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts new file mode 100644 index 000000000000..f02b90e06b3f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/utils.ts b/packages/integration-tests-next/fixtures/vite7/utils.ts new file mode 100644 index 000000000000..0990f4001064 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/utils.ts @@ -0,0 +1,63 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); +const NODE_MAJOR_VERSION = parseInt(process.versions.node.split(".")[0] || "0", 10); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + // Vite v7 requires Node 20+ + if (NODE_MAJOR_VERSION < 20) { + // eslint-disable-next-line @typescript-eslint/no-empty-function + vitestTest.skip(testName); + } else { + vitestTest(`Vite v7 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `vite build --config ${testName}.config.ts`, + { + cwd, + env: { + ...process.env, + ...env, + NODE_ENV: "production", + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); + } +} diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts new file mode 100644 index 000000000000..674c7e70e2c3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/after-upload-deletion", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts new file mode 100644 index 000000000000..ced3602eb876 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.config.ts b/packages/integration-tests-next/fixtures/vite8/application-key.config.ts new file mode 100644 index 000000000000..ee524c7fef5b --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/application-key.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/application-key.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/application-key", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts new file mode 100644 index 000000000000..902f8657de17 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts new file mode 100644 index 000000000000..8624211863a5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts new file mode 100644 index 000000000000..eb87a85811e5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts @@ -0,0 +1,20 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts new file mode 100644 index 000000000000..312b7da14769 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-sourcemaps", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..d99bd4e64ae8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;"}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic.config.ts b/packages/integration-tests-next/fixtures/vite8/basic.config.ts new file mode 100644 index 000000000000..ec202ecbc6af --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/basic.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic.test.ts b/packages/integration-tests-next/fixtures/vite8/basic.test.ts new file mode 100644 index 000000000000..5b79abcf1d5c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.config.ts b/packages/integration-tests-next/fixtures/vite8/build-info.config.ts new file mode 100644 index 000000000000..3f4081fdd72a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/build-info.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/build-info.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/build-info", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts new file mode 100644 index 000000000000..f4715d4c45c4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 8 }, "nodeVersion":"NODE_VERSION" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts new file mode 100644 index 000000000000..4feec9f2c5d3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/bundle.js", + output: { + dir: "out/bundle-size-optimizations", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..a853e327390a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts @@ -0,0 +1,36 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + } catch (e2) { + } + })(); + console.log( + JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a", + replayIframe: "a", + replayShadowDom: "a", + replayWorker: "a" + }) + ); + ", + } + `); + + const output = runFileInNode("bundle.js"); + expect(output).toMatchInlineSnapshot(` + "{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"} + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts new file mode 100644 index 000000000000..ae087808a547 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts new file mode 100644 index 000000000000..6087e1fc001e --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "fad021a7-2309-4b95-9454-c14eaca9c494", e._sentryDebugIdIdentifier = "sentry-dbid-fad021a7-2309-4b95-9454-c14eaca9c494"); + } catch (e2) { + } + })(); + function ComponentA() { + return /* @__PURE__ */ React.createElement("span", null, "Component A"); + } + function App() { + return /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement(ComponentA, null), ";"); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts new file mode 100644 index 000000000000..fee75871b79a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation-next.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation-next", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts new file mode 100644 index 000000000000..15a8de428208 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "e360fd0a-f174-42e5-a616-ca20792b40f7", e._sentryDebugIdIdentifier = "sentry-dbid-e360fd0a-f174-42e5-a616-ca20792b40f7"); + } catch (e2) { + } + })(); + function ComponentA() { + return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "ComponentA" }, "Component A"); + } + function App() { + return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "App" }, /* @__PURE__ */ React.createElement(ComponentA, null), ";"); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts new file mode 100644 index 000000000000..f51fcde8508e --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/component-annotation.config.js"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/app.jsx", + // We exclude these to keep the snapshot small + external: [/node_modules/], + makeAbsoluteExternalsRelative: true, + output: { + dir: "out/component-annotation", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [react(), sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts new file mode 100644 index 000000000000..c059336cc49f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts @@ -0,0 +1,27 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "app.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "7cf1a3cd-d2df-426b-8527-27fd153bf757", e._sentryDebugIdIdentifier = "sentry-dbid-7cf1a3cd-d2df-426b-8527-27fd153bf757"); + } catch (e2) { + } + })(); + function ComponentA() { + return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "ComponentA", "data-sentry-source-file": "component-a.jsx" }, "Component A"); + } + function App() { + return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "App", "data-sentry-source-file": "app.jsx" }, /* @__PURE__ */ React.createElement(ComponentA, { "data-sentry-element": "ComponentA", "data-sentry-source-file": "app.jsx" }), ";"); + } + console.log(App()); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts new file mode 100644 index 000000000000..c70b040745ee --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/debugid-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts new file mode 100644 index 000000000000..1c99d55fbec9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts @@ -0,0 +1,14 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "console.log("hello world"); + //# sourceMappingURL=basic.js.map + ", + "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AACA,QAAQ,IAAI,aAAa;"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts new file mode 100644 index 000000000000..f3dfcb913533 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts @@ -0,0 +1,19 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/debugids-already-injected.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/debugids-already-injected", + entryFileNames: "[name].js", + sourcemapDebugIds: true, + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts new file mode 100644 index 000000000000..5735e77121ae --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { readAllFiles } from "../utils"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, createTempDir }) => { + const tempDir = createTempDir(); + + runBundler({ SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }); + const files = readAllFiles(tempDir); + expect(files).toMatchInlineSnapshot(` + { + "252e0338-8927-4f52-bd57-188131defd0f-0.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + //# debugId=252e0338-8927-4f52-bd57-188131defd0f + //# sourceMappingURL=basic.js.map + ", + "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts b/packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts new file mode 100644 index 000000000000..b3612f9893e3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/module-metadata", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts new file mode 100644 index 000000000000..66fb3b112351 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var a = arguments[n2]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts new file mode 100644 index 000000000000..ab3009969c83 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/multiple-entry-points", + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts new file mode 100644 index 000000000000..0ea77c27d8de --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts @@ -0,0 +1,58 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(1, 2)); + ", + "entry2.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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js"; + console.log(add(2, 4)); + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/packages/integration-tests-next/fixtures/vite8/package.json new file mode 100644 index 000000000000..0528d663b676 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/package.json @@ -0,0 +1,23 @@ +{ + "name": "vite8-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "react": "19.2.4", + "vite": "8.0.1", + "@vitejs/plugin-react": "6.0.1", + "@sentry/vite-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.config.ts b/packages/integration-tests-next/fixtures/vite8/query-param.config.ts new file mode 100644 index 000000000000..7952c040f423 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/query-param.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/query-param.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: ["src/entry1.js", "src/entry2.js"], + output: { + dir: "out/query-param", + chunkFileNames: "[name].js?seP58q4g", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts new file mode 100644 index 000000000000..b7def38700b7 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts @@ -0,0 +1,55 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { + if (process.platform === "win32") { + ctx.skip("Query params do not work in paths on Windows"); + return; + } + + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "common.js?seP58q4g": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + } catch (e2) { + } + })(); + function add(a, b) { + return a + b; + } + export { + add as a + }; + ", + "entry1.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(1, 2)); + ", + "entry2.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + } catch (e2) { + } + })(); + import { a as add } from "./common.js?seP58q4g"; + console.log(add(2, 4)); + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts b/packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts new file mode 100644 index 000000000000..cb5c4c06ab55 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/release-disabled", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts new file mode 100644 index 000000000000..82038026d045 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts @@ -0,0 +1,25 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/src/app.jsx b/packages/integration-tests-next/fixtures/vite8/src/app.jsx new file mode 100644 index 000000000000..5be821b44e72 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/app.jsx @@ -0,0 +1,11 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} + +console.log(App()); diff --git a/packages/integration-tests-next/fixtures/vite8/src/basic.js b/packages/integration-tests-next/fixtures/vite8/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/vite8/src/bundle.js b/packages/integration-tests-next/fixtures/vite8/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/vite8/src/common.js b/packages/integration-tests-next/fixtures/vite8/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/vite8/src/component-a.jsx b/packages/integration-tests-next/fixtures/vite8/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/vite8/src/entry1.js b/packages/integration-tests-next/fixtures/vite8/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/vite8/src/entry2.js b/packages/integration-tests-next/fixtures/vite8/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts new file mode 100644 index 000000000000..c02f3a57b082 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts @@ -0,0 +1,17 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +export default defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/telemetry", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts new file mode 100644 index 000000000000..f02b90e06b3f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/utils.ts b/packages/integration-tests-next/fixtures/vite8/utils.ts new file mode 100644 index 000000000000..911fc7ccbf6d --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/utils.ts @@ -0,0 +1,62 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); +const NODE_MAJOR_VERSION = parseInt(process.versions.node.split(".")[0] || "0", 10); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + // Vite v8 requires Node 20+ + if (NODE_MAJOR_VERSION < 20) { + // eslint-disable-next-line @typescript-eslint/no-empty-function + vitestTest.skip(testName); + } else { + vitestTest(`Vite v8 > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `vite build --config ${testName}.config.ts`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); + } +} diff --git a/packages/integration-tests-next/tsconfig.json b/packages/integration-tests-next/tsconfig.json index 656010c69d7e..1e806fd52af5 100644 --- a/packages/integration-tests-next/tsconfig.json +++ b/packages/integration-tests-next/tsconfig.json @@ -2,6 +2,10 @@ "$schema": "https://json.schemastore.org/tsconfig", "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", "include": ["./**/*"], + // We exclude the Vite files for now. + // Because the Vite plugin 'references" a different `vite` package when devDeps are loaded, it doesn't + // match all the tested Vite versions. This isn't an issue when the plugin is used with end-users Vite versions. + "exclude": ["./fixtures/vite*/**/*"], "compilerOptions": { "types": ["node"], "module": "es2020", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index d5cf5d36447a..7904ff8d7a69 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -62,7 +62,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index c266d1939b08..54f6d0091adc 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -58,7 +58,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 43af676e20d0..300b37a7ffc0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -63,7 +63,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0-rc.6", + "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "5.0.0" diff --git a/yarn.lock b/yarn.lock index fd68fd111517..4bde7c568c42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -954,10 +954,10 @@ resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz#0b3867776cd7fdb86068b2dd733e6621ded5165a" integrity sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw== -"@oxc-project/types@=0.115.0": - version "0.115.0" - resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz#92a599543529bce45f8f2da77f40a124d63349dc" - integrity sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw== +"@oxc-project/types@=0.120.0": + version "0.120.0" + resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.120.0.tgz#af521b0e689dd0eaa04fe4feef9b68d98b74783d" + integrity sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg== "@oxfmt/binding-android-arm-eabi@0.33.0": version "0.33.0" @@ -1054,77 +1054,87 @@ resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== -"@rolldown/binding-android-arm64@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.6.tgz#4ee6333152206902aa1beb74a487ec7bc9df20bd" - integrity sha512-kvjTSWGcrv+BaR2vge57rsKiYdVR8V8CoS0vgKrc570qRBfty4bT+1X0z3j2TaVV+kAYzA0PjeB9+mdZyqUZlg== - -"@rolldown/binding-darwin-arm64@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.6.tgz#0c1853b3b07e739087b33919fc388fe3ce314e9e" - integrity sha512-+tJhD21KvGNtUrpLXrZQlT+j5HZKiEwR2qtcZb3vNOUpvoT9QjEykr75ZW/Kr0W89gose/HVXU6351uVZD8Qvw== - -"@rolldown/binding-darwin-x64@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.6.tgz#6e52da0ad87253b9cf04dcadf025dca1928e658d" - integrity sha512-DKNhjMk38FAWaHwUt1dFR3rA/qRAvn2NUvSG2UGvxvlMxSmN/qqww/j4ABAbXhNRXtGQNmrAINMXRuwHl16ZHg== - -"@rolldown/binding-freebsd-x64@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.6.tgz#7e500eff970e39d1307e481b00874ab90af4a183" - integrity sha512-8TThsRkCPAnfyMBShxrGdtoOE6h36QepqRQI97iFaQSCRbHFWHcDHppcojZnzXoruuhPnjMEygzaykvPVJsMRg== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.6.tgz#247b60365081872f9ef8426e98bafbda7410c23a" - integrity sha512-ZfmFoOwPUZCWtGOVC9/qbQzfc0249FrRUOzV2XabSMUV60Crp211OWLQN1zmQAsRIVWRcEwhJ46Z1mXGo/L/nQ== - -"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.6.tgz#504840853e42726c7b9c591792f6422aa93f118c" - integrity sha512-ZsGzbNETxPodGlLTYHaCSGVhNN/rvkMDCJYHdT7PZr5jFJRmBfmDi2awhF64Dt2vxrJqY6VeeYSgOzEbHRsb7Q== - -"@rolldown/binding-linux-arm64-musl@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.6.tgz#f5f260bfa51083c45fcb59f10ba77991d29dbed4" - integrity sha512-elPpdevtCdUOqziemR86C4CSCr/5sUxalzDrf/CJdMT+kZt2C556as++qHikNOz0vuFf52h+GJNXZM08eWgGPQ== - -"@rolldown/binding-linux-x64-gnu@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.6.tgz#c59a835f5f4f5ffd937ea4466862d522c5da4928" - integrity sha512-IBwXsf56o3xhzAyaZxdM1CX8UFiBEUFCjiVUgny67Q8vPIqkjzJj0YKhd3TbBHanuxThgBa59f6Pgutg2OGk5A== - -"@rolldown/binding-linux-x64-musl@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.6.tgz#1ea2a7c58f5ed50b3d35142935f6a0234c1d007b" - integrity sha512-vOk7G8V9Zm+8a6PL6JTpCea61q491oYlGtO6CvnsbhNLlKdf0bbCPytFzGQhYmCKZDKkEbmnkcIprTEGCURnwg== - -"@rolldown/binding-openharmony-arm64@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.6.tgz#8ffe37a43e9218af46770784dfbc1cda9efffd97" - integrity sha512-ASjEDI4MRv7XCQb2JVaBzfEYO98JKCGrAgoW6M03fJzH/ilCnC43Mb3ptB9q/lzsaahoJyIBoAGKAYEjUvpyvQ== - -"@rolldown/binding-wasm32-wasi@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.6.tgz#e822081ac37a98c2f63e8a9f65432361a0ac185a" - integrity sha512-mYa1+h2l6Zc0LvmwUh0oXKKYihnw/1WC73vTqw+IgtfEtv47A+rWzzcWwVDkW73+UDr0d/Ie/HRXoaOY22pQDw== +"@rolldown/binding-android-arm64@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.10.tgz#0bbd3380f49a6d0dc96c9b32fb7dad26ae0dfaa7" + integrity sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg== + +"@rolldown/binding-darwin-arm64@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.10.tgz#a30b051784fbb13635e652ba4041c6ce7a4ce7ab" + integrity sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w== + +"@rolldown/binding-darwin-x64@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.10.tgz#2d9dea982d5be90b95b6d8836ff26a4b0959d94b" + integrity sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A== + +"@rolldown/binding-freebsd-x64@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.10.tgz#4efc3aca43ae4dfb90729eeca6e84ef6e6b38c4a" + integrity sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.10.tgz#4a19a5d24537e925b25e9583b6cd575b2ad9fa27" + integrity sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.10.tgz#01a41e5e905838353ae9a3da10dc8242dcd61453" + integrity sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg== + +"@rolldown/binding-linux-arm64-musl@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.10.tgz#bd059e5f83471de29ce35b0ba254995d8091ca40" + integrity sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g== + +"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.10.tgz#fe726a540631015f269a989c0cfb299283190390" + integrity sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w== + +"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.10.tgz#825ced028bad3f1fa9ce83b1f3dac76e0424367f" + integrity sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg== + +"@rolldown/binding-linux-x64-gnu@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.10.tgz#b700dae69274aa3d54a16ca5e00e30f47a089119" + integrity sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw== + +"@rolldown/binding-linux-x64-musl@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.10.tgz#eb875660ad68a2348acab36a7005699e87f6e9dd" + integrity sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA== + +"@rolldown/binding-openharmony-arm64@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.10.tgz#72aa24b412f83025087bcf83ce09634b2bd93c5c" + integrity sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q== + +"@rolldown/binding-wasm32-wasi@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.10.tgz#7f3303a96c5dc01d1f4c539b1dcbc16392c6f17d" + integrity sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA== dependencies: "@napi-rs/wasm-runtime" "^1.1.1" -"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.6.tgz#f7e8455f618505f28e763c8e73213d61eeba2b7f" - integrity sha512-e2ABskbNH3MRUBMjgxaMjYIw11DSwjLJxBII3UgpF6WClGLIh8A20kamc+FKH5vIaFVnYQInmcLYSUVpqMPLow== +"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.10.tgz#3419144a04ad12c69c48536b01fc21ac9d87ecf4" + integrity sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ== -"@rolldown/binding-win32-x64-msvc@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.6.tgz#5100c0a269f5a557cab7011951b48709c6216fa9" - integrity sha512-dJVc3ifhaRXxIEh1xowLohzFrlQXkJ66LepHm+CmSprTWgVrPa8Fx3OL57xwIqDEH9hufcKkDX2v65rS3NZyRA== +"@rolldown/binding-win32-x64-msvc@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.10.tgz#09bee46e6a32c6086beeabc3da12e67be714f882" + integrity sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w== -"@rolldown/pluginutils@1.0.0-rc.6": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.6.tgz#2f729fcf2d68c2d8cc2dcb05a7c3b2eeadfe20e1" - integrity sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA== +"@rolldown/pluginutils@1.0.0-rc.10": + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz#eed997f37f928a3300bbe2161f42687d8a3ae759" + integrity sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg== "@rollup/plugin-babel@^6.0.4": version "6.0.4" @@ -5457,27 +5467,29 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rolldown@^1.0.0-rc.6: - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.6.tgz#fc2209fde9a0947fedd78647af50d2262332e977" - integrity sha512-B8vFPV1ADyegoYfhg+E7RAucYKv0xdVlwYYsIJgfPNeiSxZGWNxts9RqhyGzC11ULK/VaeXyKezGCwpMiH8Ktw== +rolldown@1.0.0-rc.10: + version "1.0.0-rc.10" + resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.10.tgz#41c55e52d833c52c90131973047250548e35f2bf" + integrity sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA== dependencies: - "@oxc-project/types" "=0.115.0" - "@rolldown/pluginutils" "1.0.0-rc.6" + "@oxc-project/types" "=0.120.0" + "@rolldown/pluginutils" "1.0.0-rc.10" optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.0-rc.6" - "@rolldown/binding-darwin-arm64" "1.0.0-rc.6" - "@rolldown/binding-darwin-x64" "1.0.0-rc.6" - "@rolldown/binding-freebsd-x64" "1.0.0-rc.6" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.6" - "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.6" - "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.6" - "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.6" - "@rolldown/binding-linux-x64-musl" "1.0.0-rc.6" - "@rolldown/binding-openharmony-arm64" "1.0.0-rc.6" - "@rolldown/binding-wasm32-wasi" "1.0.0-rc.6" - "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.6" - "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.6" + "@rolldown/binding-android-arm64" "1.0.0-rc.10" + "@rolldown/binding-darwin-arm64" "1.0.0-rc.10" + "@rolldown/binding-darwin-x64" "1.0.0-rc.10" + "@rolldown/binding-freebsd-x64" "1.0.0-rc.10" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.10" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.10" + "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.10" + "@rolldown/binding-linux-ppc64-gnu" "1.0.0-rc.10" + "@rolldown/binding-linux-s390x-gnu" "1.0.0-rc.10" + "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.10" + "@rolldown/binding-linux-x64-musl" "1.0.0-rc.10" + "@rolldown/binding-openharmony-arm64" "1.0.0-rc.10" + "@rolldown/binding-wasm32-wasi" "1.0.0-rc.10" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.10" + "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.10" rollup@3.2.0: version "3.2.0" From 136d4cfe1ed321557f5e3a746c900bc3b21f04dc Mon Sep 17 00:00:00 2001 From: Bruno Carvalho Date: Mon, 30 Mar 2026 12:44:05 +0100 Subject: [PATCH 608/640] fix: Add missing webpack5 entrypoint in webpack-plugin (#905) --- packages/webpack-plugin/rollup.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-plugin/rollup.config.mjs b/packages/webpack-plugin/rollup.config.mjs index 7615ed33cd09..3895fc9cd2e0 100644 --- a/packages/webpack-plugin/rollup.config.mjs +++ b/packages/webpack-plugin/rollup.config.mjs @@ -3,7 +3,7 @@ import modulePackage from "module"; export default { platform: "node", - input: ["src/index.ts", "src/component-annotation-transform.ts"], + input: ["src/index.ts", "src/webpack5.ts", "src/component-annotation-transform.ts"], external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], output: [ { From a0aefde516e6d8f2f7c0225ea161c2fbaaa25b11 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 31 Mar 2026 16:31:34 +0900 Subject: [PATCH 609/640] fix(e2e-tests): Pin axios to 1.13.5 to avoid compromised 1.14.1 (#906) axios 1.14.1 contains a supply chain attack via the plain-crypto-js dependency. Pin to 1.13.5 to prevent accidental upgrades. See: https://x.com/feross/status/2038807290422370479 --- packages/e2e-tests/package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 165e8e1ca70a..37c1549585d7 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -19,7 +19,7 @@ "@sentry/rollup-plugin": "5.1.1", "@sentry/vite-plugin": "5.1.1", "@sentry/webpack-plugin": "5.1.1", - "axios": "^1.1.3" + "axios": "1.13.5" }, "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", diff --git a/yarn.lock b/yarn.lock index 4bde7c568c42..f291b65a3deb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2394,7 +2394,7 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@*, axios@^1.1.3: +axios@*: version "1.4.0" resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== @@ -2403,7 +2403,7 @@ axios@*, axios@^1.1.3: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.12.0: +axios@1.13.5, axios@^1.12.0: version "1.13.5" resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== From 97614c9b046f13f67d4e7fcf1a1ee62e893424b3 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 31 Mar 2026 14:33:18 +0200 Subject: [PATCH 610/640] fix(core): Conditionally add tracing headers (#907) Our trace data was added unconditionally here. --- .../src/build-plugin-manager.ts | 2 +- .../test/build-plugin-manager.test.ts | 50 +++++++++++++++++-- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 25bca86fff24..5ac055de0bb8 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -117,7 +117,7 @@ function createCliInstance(options: NormalizedOptions): SentryCli { url: options.url, vcsRemote: options.release.vcsRemote, headers: { - ...getTraceData(), + ...(options.telemetry ? getTraceData() : {}), ...options.headers, }, }); 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 f5b7b476fde9..9cbaedb5b6c3 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -7,14 +7,19 @@ import { globFiles } from "../src/glob"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; import { describe, it, expect, afterEach, beforeEach, vi, MockedFunction } from "vitest"; -const { mockCliExecute, mockCliUploadSourceMaps, mockCliNewDeploy } = vi.hoisted(() => ({ - mockCliExecute: vi.fn(), - mockCliUploadSourceMaps: vi.fn(), - mockCliNewDeploy: vi.fn(), -})); +const { mockCliExecute, mockCliUploadSourceMaps, mockCliNewDeploy, mockCliConstructor } = + vi.hoisted(() => ({ + mockCliExecute: vi.fn(), + mockCliUploadSourceMaps: vi.fn(), + mockCliNewDeploy: vi.fn(), + mockCliConstructor: vi.fn(), + })); vi.mock("@sentry/cli", () => ({ default: class { + constructor(...args: unknown[]) { + mockCliConstructor(...args); + } execute = mockCliExecute; releases = { uploadSourceMaps: mockCliUploadSourceMaps, @@ -640,6 +645,41 @@ describe("createSentryBuildPluginManager", () => { }); }); + describe("telemetry option", () => { + it("should not pass sentry-trace or baggage headers to CLI when telemetry is false", async () => { + mockCliExecute.mockResolvedValue(undefined); + + const buildPluginManager = createSentryBuildPluginManager( + { + authToken: "test-token", + org: "test-org", + project: "test-project", + telemetry: false, + }, + { + buildTool: "webpack", + loggerPrefix: "[sentry-webpack-plugin]", + } + ); + + // Trigger a CLI operation so createCliInstance is called + await buildPluginManager.injectDebugIds(["/path/to/bundle"]); + + // Find the CLI constructor call that was made by createCliInstance (not the one from allowedToSendTelemetry) + const cliConstructorCalls = mockCliConstructor.mock.calls; + expect(cliConstructorCalls.length).toBeGreaterThan(0); + + // Check that none of the CLI instances were created with sentry-trace or baggage headers + for (const call of cliConstructorCalls) { + const options = call[1] as { headers?: Record }; + if (options?.headers) { + expect(options.headers).not.toHaveProperty("sentry-trace"); + expect(options.headers).not.toHaveProperty("baggage"); + } + } + }); + }); + describe("createRelease deploy deduplication", () => { beforeEach(() => { vi.clearAllMocks(); From 3bf270ca1f987d7013546c2c9b1723fb4c69e91e Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 2 Apr 2026 15:36:30 +0200 Subject: [PATCH 611/640] feat(core): Pass `mapDir` to `rewriteSourcesHook` (#908) --- .../src/debug-id-upload.ts | 5 +- packages/bundler-plugin-core/src/types.ts | 5 +- .../test/debug-id-upload.test.ts | 71 +++++++++++++++++++ .../src/generate-documentation-table.ts | 4 +- 4 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 packages/bundler-plugin-core/test/debug-id-upload.test.ts diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index 4de1aaa6a79e..b2bf8663131f 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -219,7 +219,10 @@ async function prepareSourceMapForDebugIdUpload( } if (map["sources"] && Array.isArray(map["sources"])) { - map["sources"] = map["sources"].map((source: string) => rewriteSourcesHook(source, map)); + const mapDir = path.dirname(sourceMapPath); + map["sources"] = map["sources"].map((source: string) => + rewriteSourcesHook(source, map, { mapDir }) + ); } try { diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugin-core/src/types.ts index 1c00c94abd06..2d197e3b25a0 100644 --- a/packages/bundler-plugin-core/src/types.ts +++ b/packages/bundler-plugin-core/src/types.ts @@ -138,6 +138,9 @@ export interface Options { /** * Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. * + * The hook receives the source path, the parsed source map object, and a context object containing `mapDir` - + * the directory of the source map file, useful for resolving relative source paths. + * * Defaults to making all sources relative to `process.cwd()` while building. */ rewriteSources?: RewriteSourcesHook; @@ -427,7 +430,7 @@ export interface Options { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -export type RewriteSourcesHook = (source: string, map: any) => string; +export type RewriteSourcesHook = (source: string, map: any, context?: { mapDir: string }) => string; export type ResolveSourceMapHook = ( artifactPath: string, diff --git a/packages/bundler-plugin-core/test/debug-id-upload.test.ts b/packages/bundler-plugin-core/test/debug-id-upload.test.ts new file mode 100644 index 000000000000..bbcc86213387 --- /dev/null +++ b/packages/bundler-plugin-core/test/debug-id-upload.test.ts @@ -0,0 +1,71 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import * as fs from "fs"; +import * as path from "path"; +import * as os from "os"; +import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; +import type { RewriteSourcesHook } from "../src/types"; +import { Logger } from "../src"; + +describe("prepareBundleForDebugIdUpload", () => { + let tmpDir: string; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "sentry-test-")); + }); + + afterEach(() => { + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + it("passes mapDir context to rewriteSources hook", async () => { + const bundleDir = path.join(tmpDir, "src"); + const uploadDir = path.join(tmpDir, "upload"); + fs.mkdirSync(bundleDir, { recursive: true }); + fs.mkdirSync(uploadDir, { recursive: true }); + + const debugId = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"; + const bundlePath = path.join(bundleDir, "bundle.js"); + const mapPath = path.join(bundleDir, "bundle.js.map"); + + // Bundle with debug ID snippet and sourceMappingURL + fs.writeFileSync( + bundlePath, + `"use strict";\n// some code\n;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}}();\n//# sourceMappingURL=bundle.js.map` + ); + + // Source map file + fs.writeFileSync( + mapPath, + JSON.stringify({ + version: 3, + sources: ["../original/file.ts"], + mappings: "AAAA", + }) + ); + + const capturedContexts: Array<{ mapDir?: string } | undefined> = []; + const rewriteHook: RewriteSourcesHook = (source, _map, context) => { + capturedContexts.push(context); + return source; + }; + + const logger = { + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + debug: vi.fn(), + }; + + await prepareBundleForDebugIdUpload( + bundlePath, + uploadDir, + 0, + logger as Logger, + rewriteHook, + undefined + ); + + expect(capturedContexts).toHaveLength(1); + expect(capturedContexts[0]!.mapDir).toBe(bundleDir); + }); +}); diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index 4c0bf7766910..c7c5f777695b 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -95,9 +95,9 @@ errorHandler: (err) => { }, { name: "rewriteSources", - type: "(source: string, map: any) => string", + type: "(source: string, map: any, context?: { mapDir: string }) => string", fullDescription: - "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nDefaults to making all sources relative to `process.cwd()` while building.", + "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nThe `context.mapDir` parameter provides the directory path of the source map file, which is useful for resolving relative source paths (e.g. `path.resolve(context.mapDir, source)`).\n\nDefaults to making all sources relative to `process.cwd()` while building.", }, { name: "resolveSourceMap", From 1e6cfc7431ba3cfab99a635cea299f30f4017b23 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 2 Apr 2026 16:56:52 +0200 Subject: [PATCH 612/640] chore(deps): Bump vulnerable webpack version (#909) Bump webpack from vulnerable versions (5.0.0, 5.74.0) to 5.76.0 across 4 packages to fix CVE-2023-28154 (cross-realm object access in Webpack 5) --- packages/e2e-tests/package.json | 2 +- packages/integration-tests/package.json | 2 +- packages/playground/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- yarn.lock | 558 +----------------------- 5 files changed, 16 insertions(+), 550 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 37c1549585d7..cb1aef3d4e07 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -34,7 +34,7 @@ "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack": "5.74.0" + "webpack": "5.76.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 38fd71abf1cd..31a183d0ba14 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -38,7 +38,7 @@ "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack": "5.74.0" + "webpack": "5.76.0" }, "devDependencies": { "premove": "^4.0.0" diff --git a/packages/playground/package.json b/packages/playground/package.json index b0f4bd49bd53..9bf207566e32 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -27,7 +27,7 @@ "http-proxy": "^1.18.1", "rollup": "3.2.0", "vite": "3.0.0", - "webpack": "5.74.0" + "webpack": "5.76.0" }, "devDependencies": { "premove": "^4.0.0" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 300b37a7ffc0..d45d6e48b1c3 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -66,7 +66,7 @@ "rolldown": "1.0.0-rc.10", "ts-node": "^10.9.1", "typescript": "^4.7.4", - "webpack": "5.0.0" + "webpack": "5.76.0" }, "peerDependencies": { "webpack": ">=5.0.0" diff --git a/yarn.lock b/yarn.lock index f291b65a3deb..a075846572ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -704,11 +704,6 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== -"@gar/promisify@^1.0.1": - 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== - "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -766,14 +761,6 @@ "@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" @@ -784,11 +771,6 @@ 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" @@ -802,14 +784,6 @@ "@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" @@ -820,7 +794,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": +"@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== @@ -841,14 +815,6 @@ "@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" - "@napi-rs/wasm-runtime@0.2.4": version "0.2.4" resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" @@ -888,22 +854,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.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/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" - "@nx/nx-darwin-arm64@22.5.2": version "22.5.2" resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz#beff47093c7d95bfb98631db85a3f680ceda8522" @@ -1550,14 +1500,6 @@ 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" @@ -1584,11 +1526,6 @@ 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" @@ -1919,64 +1856,21 @@ "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" 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.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" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" 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.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@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" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" @@ -1991,11 +1885,6 @@ 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.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" @@ -2006,16 +1895,6 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/wasm-gen" "1.11.1" -"@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" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/ieee754@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" @@ -2023,13 +1902,6 @@ 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" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - "@webassemblyjs/leb128@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" @@ -2037,23 +1909,11 @@ 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" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/utf8@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" @@ -2068,20 +1928,6 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wast-printer" "1.11.1" -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - "@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" @@ -2093,17 +1939,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@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" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" @@ -2114,16 +1949,6 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" -"@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" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" @@ -2136,30 +1961,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@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" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" @@ -2168,15 +1969,6 @@ "@webassemblyjs/ast" "1.11.1" "@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" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -2230,11 +2022,6 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -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.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" @@ -2247,14 +2034,6 @@ agent-base@6: dependencies: debug "4" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -2437,11 +2216,6 @@ base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -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== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2503,17 +2277,6 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -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" @@ -2547,30 +2310,6 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -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" - call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" @@ -2597,11 +2336,6 @@ 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" @@ -2624,21 +2358,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -2916,11 +2640,6 @@ 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.286" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" - integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2951,14 +2670,6 @@ enhanced-resolve@^5.10.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" @@ -3421,11 +3132,6 @@ 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" @@ -3472,7 +3178,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.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, 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== @@ -3831,13 +3537,6 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3958,7 +3657,7 @@ glob@^13.0.6: minipass "^7.1.3" path-scurry "^2.0.2" -glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4177,16 +3876,6 @@ imurmurhash@^0.1.4: resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4414,15 +4103,6 @@ jest-diff@^30.0.2: chalk "^4.1.2" pretty-format "30.2.0" -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: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -4457,7 +4137,7 @@ jsesc@^2.5.1: resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -4525,11 +4205,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -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" @@ -4726,39 +4401,6 @@ minimist@^1.2.6: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - 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== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" @@ -4769,19 +4411,6 @@ minipass@^7.1.3: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4849,11 +4478,6 @@ 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== - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5120,13 +4744,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -5237,7 +4854,7 @@ pify@^3.0.0: resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -5286,11 +4903,6 @@ progress@^2.0.3: resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -5581,15 +5193,6 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.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" @@ -5609,7 +5212,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.3.7: +semver@^7.3.7: version "7.5.1" resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== @@ -5640,13 +5243,6 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -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" @@ -5722,11 +5318,6 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -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== - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -5745,7 +5336,7 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -5786,13 +5377,6 @@ sprintf-js@~1.0.2: resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -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" - stackback@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -5898,7 +5482,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -5917,11 +5501,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -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" @@ -5938,33 +5517,6 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -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" - -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" @@ -5986,16 +5538,6 @@ 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" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6162,20 +5704,6 @@ undici-types@~6.21.0: resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6189,14 +5717,6 @@ 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" @@ -6284,14 +5804,6 @@ vitest@^4.0.0: vite "^6.0.0 || ^7.0.0" why-is-node-running "^2.3.0" -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" @@ -6312,61 +5824,15 @@ webidl-conversions@^3.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -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== - dependencies: - 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== -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 "^8.0.3" - browserslist "^4.14.3" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.2.0" - eslint-scope "^5.1.0" - events "^3.2.0" - glob-to-regexp "^0.4.1" - 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" - 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" - -webpack@5.74.0: - version "5.74.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" - integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== +webpack@5.76.0: + version "5.76.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" + integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" From aa73f531880530ec20fed090de9fab50ecde2fa9 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:54:33 +0900 Subject: [PATCH 613/640] fix(rollup): Make rollup an optional peer dependency (#913) This PR makes `rollup` an optional peer dependency of `@sentry/rollup-plugin`. Vite 8 no no longer ships with rollup and installing `@sentry/vite-plugin` leads to dependency warnings of rollup missing even though the plugin works without rollup installed. Closes: #910 --- packages/rollup-plugin/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 7904ff8d7a69..e002d561dff1 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -55,6 +55,11 @@ "peerDependencies": { "rollup": ">=3.2.0" }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + }, "devDependencies": { "@sentry-internal/eslint-config": "5.1.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", From 9fa5191cffc52ecd84d5d29228f8efaa42579db6 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 8 Apr 2026 10:09:28 +0200 Subject: [PATCH 614/640] test: Add esbuild integration tests (#911) --- .../esbuild/after-upload-deletion.config.js | 13 ++++ .../esbuild/after-upload-deletion.test.ts | 41 ++++++++++ .../esbuild/application-key.config.js | 12 +++ .../fixtures/esbuild/application-key.test.ts | 47 ++++++++++++ .../esbuild/basic-release-disabled.config.js | 12 +++ .../esbuild/basic-release-disabled.test.ts | 31 ++++++++ .../esbuild/basic-sourcemaps.config.js | 13 ++++ .../fixtures/esbuild/basic-sourcemaps.test.ts | 47 ++++++++++++ .../fixtures/esbuild/basic.config.js | 12 +++ .../fixtures/esbuild/basic.test.ts | 45 +++++++++++ .../fixtures/esbuild/build-info.config.js | 12 +++ .../fixtures/esbuild/build-info.test.ts | 41 ++++++++++ .../bundle-size-optimizations.config.js | 12 +++ .../esbuild/bundle-size-optimizations.test.ts | 51 +++++++++++++ .../esbuild/debugid-disabled.config.js | 12 +++ .../fixtures/esbuild/debugid-disabled.test.ts | 19 +++++ .../esbuild/module-metadata.config.js | 12 +++ .../fixtures/esbuild/module-metadata.test.ts | 47 ++++++++++++ .../esbuild/multiple-entry-points.config.js | 14 ++++ .../esbuild/multiple-entry-points.test.ts | 76 +++++++++++++++++++ .../fixtures/esbuild/package.json | 20 +++++ .../esbuild/release-disabled.config.js | 12 +++ .../fixtures/esbuild/release-disabled.test.ts | 44 +++++++++++ .../fixtures/esbuild/src/app.jsx | 9 +++ .../fixtures/esbuild/src/basic.js | 2 + .../fixtures/esbuild/src/bundle.js | 10 +++ .../fixtures/esbuild/src/common.js | 3 + .../fixtures/esbuild/src/component-a.jsx | 3 + .../fixtures/esbuild/src/entry1.js | 3 + .../fixtures/esbuild/src/entry2.js | 3 + .../fixtures/esbuild/telemetry.config.js | 12 +++ .../fixtures/esbuild/telemetry.test.ts | 42 ++++++++++ .../fixtures/esbuild/utils.ts | 64 ++++++++++++++++ .../integration-tests-next/fixtures/utils.ts | 9 ++- packages/integration-tests-next/package.json | 2 +- 35 files changed, 805 insertions(+), 2 deletions(-) create mode 100644 packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/application-key.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/application-key.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/build-info.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/build-info.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/package.json create mode 100644 packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/app.jsx create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/basic.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/bundle.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/common.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/entry1.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/entry2.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/telemetry.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/utils.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js new file mode 100644 index 000000000000..bb04c9d47ec4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js @@ -0,0 +1,13 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/after-upload-deletion.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/after-upload-deletion/basic.js", + minify: false, + format: "iife", + sourcemap: true, + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts new file mode 100644 index 000000000000..3fd6de385093 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts @@ -0,0 +1,41 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + //# sourceMappingURL=basic.js.map + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/application-key.config.js b/packages/integration-tests-next/fixtures/esbuild/application-key.config.js new file mode 100644 index 000000000000..fc665c309ac8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/application-key.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/application-key.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/application-key/application-key.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/application-key.test.ts b/packages/integration-tests-next/fixtures/esbuild/application-key.test.ts new file mode 100644 index 000000000000..b9c0ae9182b5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/application-key.test.ts @@ -0,0 +1,47 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "application-key.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n = 1; n < arguments.length; n++) { + var a = arguments[n]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("application-key.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js b/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js new file mode 100644 index 000000000000..bb76e29d2d30 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/basic-release-disabled.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/basic-release-disabled/basic-release-disabled.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts new file mode 100644 index 000000000000..0668bd0305a0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic-release-disabled.js": "(() => { + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("basic-release-disabled.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js b/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js new file mode 100644 index 000000000000..1512be1245e1 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js @@ -0,0 +1,13 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/basic-sourcemaps/basic-sourcemaps.js", + minify: false, + format: "iife", + sourcemap: true, + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts new file mode 100644 index 000000000000..23695e5ccdce --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts @@ -0,0 +1,47 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic-sourcemaps.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + //# sourceMappingURL=basic-sourcemaps.js.map + ", + "basic-sourcemaps.js.map": "{"version":3,"sources":["../../_sentry-injection-stub","sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000","../../src/basic.js","../../src/basic.js"],"sourcesContent":["!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};e.SENTRY_RELEASE={id:\\"CURRENT_SHA\\"};}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]=\\"00000000-0000-0000-0000-000000000000\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-00000000-0000-0000-0000-000000000000\\");}catch(e){}}();","// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n","\\n import \\"_sentry-debug-id-injection-stub\\";\\n import * as OriginalModule from \\"./src/basic.js\\";\\n export default OriginalModule.default;\\n export * from \\"./src/basic.js\\";"],"mappings":";;AAAA,IAAC,WAAU;AAAC,QAAG;AAAC,UAAI,IAAE,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,aAAW,aAAW,eAAa,OAAO,OAAK,OAAK,CAAC;AAAE,QAAE,iBAAe,EAAC,IAAG,2CAA0C;AAAA,IAAE,SAAOA,IAAE;AAAA,IAAC;AAAA,EAAC,GAAE;;;ACAnP,IAAC,WAAU;AAAC,QAAG;AAAC,UAAI,IAAE,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,aAAW,aAAW,eAAa,OAAO,OAAK,OAAK,CAAC;AAAE,UAAI,IAAG,IAAI,EAAE,QAAO;AAAM,YAAI,EAAE,kBAAgB,EAAE,mBAAiB,CAAC,GAAE,EAAE,gBAAgB,CAAC,IAAE,wCAAuC,EAAE,2BAAyB;AAAA,IAAoD,SAAOC,IAAE;AAAA,IAAC;AAAA,EAAC,GAAE;;;ACCnY,UAAQ,IAAI,aAAa;;;ACEX,MAAO,gBAAuB;","names":["e","e"]}", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic-sourcemaps.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic.config.js b/packages/integration-tests-next/fixtures/esbuild/basic.config.js new file mode 100644 index 000000000000..940d6ba08e51 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/basic.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/basic/basic.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic.test.ts b/packages/integration-tests-next/fixtures/esbuild/basic.test.ts new file mode 100644 index 000000000000..cc4449e10efe --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic.test.ts @@ -0,0 +1,45 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/build-info.config.js b/packages/integration-tests-next/fixtures/esbuild/build-info.config.js new file mode 100644 index 000000000000..9d09ebed4bea --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/build-info.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/build-info.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/build-info/build-info.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/build-info.test.ts b/packages/integration-tests-next/fixtures/esbuild/build-info.test.ts new file mode 100644 index 000000000000..9d8a3f3e4e5f --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/build-info.test.ts @@ -0,0 +1,41 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "build-info.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/esbuild-plugin", "esbuild"], "depsVersions": {}, "nodeVersion":"NODE_VERSION" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("build-info.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js b/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js new file mode 100644 index 000000000000..6c7d9f77be3b --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; + +await esbuild.build({ + entryPoints: ["./src/bundle.js"], + bundle: true, + outfile: "./out/bundle-size-optimizations/bundle-size-optimizations.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts new file mode 100644 index 000000000000..2f472a5a68af --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts @@ -0,0 +1,51 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "bundle-size-optimizations.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/bundle.js + console.log( + JSON.stringify({ + debug: false ? "a" : "b", + trace: false ? "a" : "b", + replayCanvas: true ? "a" : "b", + replayIframe: true ? "a" : "b", + replayShadowDom: true ? "a" : "b", + replayWorker: true ? "a" : "b" + }) + ); + + // src/bundle.js?sentryDebugIdProxy=true + var bundle_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("bundle-size-optimizations.js"); + expect(output).toBe( + '{"debug":"b","trace":"b","replayCanvas":"a","replayIframe":"a","replayShadowDom":"a","replayWorker":"a"}\n' + ); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js b/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js new file mode 100644 index 000000000000..9eff90db828e --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/debugid-disabled.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/debugid-disabled/debugid-disabled.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts new file mode 100644 index 000000000000..46615320b23a --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts @@ -0,0 +1,19 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "debugid-disabled.js": ""use strict"; + (() => { + // src/basic.js + console.log("hello world"); + })(); + ", + } + `); + + const output = runFileInNode("debugid-disabled.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js b/packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js new file mode 100644 index 000000000000..bbdfe9de6f39 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/module-metadata.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/module-metadata/module-metadata.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts b/packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts new file mode 100644 index 000000000000..a09d56d23521 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts @@ -0,0 +1,47 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "module-metadata.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + for (var n = 1; n < arguments.length; n++) { + var a = arguments[n]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + } + return e2; + })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("module-metadata.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js b/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js new file mode 100644 index 000000000000..b80ead2cd8b8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js @@ -0,0 +1,14 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/multiple-entry-points.config.js"; + +await esbuild.build({ + entryPoints: ["./src/entry1.js", "./src/entry2.js"], + bundle: true, + outdir: "./out/multiple-entry-points", + minify: false, + format: "esm", + splitting: true, + chunkNames: "[name]", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts new file mode 100644 index 000000000000..6a73daad7b2e --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts @@ -0,0 +1,76 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "chunk.js": "// src/common.js + function add(a, b) { + return a + b; + } + + export { + add + }; + ", + "entry1.js": "import { + add + } from "./chunk.js"; + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/entry1.js + console.log(add(1, 2)); + + // src/entry1.js?sentryDebugIdProxy=true + var entry1_default = void 0; + export { + entry1_default as default + }; + ", + "entry2.js": "import { + add + } from "./chunk.js"; + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/entry2.js + console.log(add(2, 4)); + + // src/entry2.js?sentryDebugIdProxy=true + var entry2_default = void 0; + export { + entry2_default as default + }; + ", + } + `); + + const output1 = runFileInNode("entry1.js"); + expect(output1).toMatchInlineSnapshot(` + "3 + " + `); + const output2 = runFileInNode("entry2.js"); + expect(output2).toMatchInlineSnapshot(` + "6 + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/packages/integration-tests-next/fixtures/esbuild/package.json new file mode 100644 index 000000000000..d10b6e830b03 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/package.json @@ -0,0 +1,20 @@ +{ + "name": "esbuild-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "esbuild": "0.28.0", + "@sentry/esbuild-plugin": "5.1.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", + "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.1.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js b/packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js new file mode 100644 index 000000000000..abc57e5f188f --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/release-disabled.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/release-disabled/release-disabled.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts b/packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts new file mode 100644 index 000000000000..214529d8fe34 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts @@ -0,0 +1,44 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "release-disabled.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("release-disabled.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/app.jsx b/packages/integration-tests-next/fixtures/esbuild/src/app.jsx new file mode 100644 index 000000000000..614d38c834aa --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/app.jsx @@ -0,0 +1,9 @@ +import { ComponentA } from "./component-a"; + +export default function App() { + return ( + + ; + + ); +} diff --git a/packages/integration-tests-next/fixtures/esbuild/src/basic.js b/packages/integration-tests-next/fixtures/esbuild/src/basic.js new file mode 100644 index 000000000000..7ef02afbd244 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/basic.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/bundle.js b/packages/integration-tests-next/fixtures/esbuild/src/bundle.js new file mode 100644 index 000000000000..0d62e559347d --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/bundle.js @@ -0,0 +1,10 @@ +console.log( + JSON.stringify({ + debug: __SENTRY_DEBUG__ ? "a" : "b", + trace: __SENTRY_TRACING__ ? "a" : "b", + replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", + replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", + replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", + replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", + }) +); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/common.js b/packages/integration-tests-next/fixtures/esbuild/src/common.js new file mode 100644 index 000000000000..7d658310b0d9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/common.js @@ -0,0 +1,3 @@ +export function add(a, b) { + return a + b; +} diff --git a/packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx b/packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx new file mode 100644 index 000000000000..5d57ab2215cd --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx @@ -0,0 +1,3 @@ +export function ComponentA() { + return Component A; +} diff --git a/packages/integration-tests-next/fixtures/esbuild/src/entry1.js b/packages/integration-tests-next/fixtures/esbuild/src/entry1.js new file mode 100644 index 000000000000..480816663453 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/entry1.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(1, 2)); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/entry2.js b/packages/integration-tests-next/fixtures/esbuild/src/entry2.js new file mode 100644 index 000000000000..f64af1ea7ae5 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/entry2.js @@ -0,0 +1,3 @@ +import { add } from "./common"; + +console.log(add(2, 4)); diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.config.js b/packages/integration-tests-next/fixtures/esbuild/telemetry.config.js new file mode 100644 index 000000000000..dd1a93fd3ab9 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/telemetry.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/telemetry.config.js"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/telemetry/telemetry.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts new file mode 100644 index 000000000000..464d0d47829b --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts @@ -0,0 +1,42 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + ", + "telemetry.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("telemetry.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/utils.ts b/packages/integration-tests-next/fixtures/esbuild/utils.ts new file mode 100644 index 000000000000..39ebbe721f60 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/utils.ts @@ -0,0 +1,64 @@ +import { basename, dirname, join } from "node:path"; +import { createTempDir, readAllFiles, runBundler } from "../utils"; +import { fileURLToPath } from "node:url"; +import { rmSync } from "node:fs"; +import { TestContext, test as vitestTest } from "vitest"; +import { execSync } from "node:child_process"; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +type TestCallback = (props: { + outDir: string; + runBundler: (env?: Record) => void; + readOutputFiles: () => Record; + runFileInNode: (file: string) => string; + createTempDir: () => string; + ctx: TestContext; +}) => void | Promise; + +function esbuildReplacer(content: string): string { + // esbuild ends up with different debug IDs and UUIDs on different platforms + // so we replace them with placeholders to make snapshots deterministic + return content.replace( + /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g, + "00000000-0000-0000-0000-000000000000" + ); +} + +export function test(url: string, callback: TestCallback) { + const filePath = fileURLToPath(url); + const filename = basename(filePath); + const testName = filename.replace(/\.test\.ts$/, ""); + const outDir = join(cwd, "out", testName); + + // Clear the output directory before running the test + rmSync(outDir, { recursive: true, force: true }); + + vitestTest(`esbuild > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `node ${testName}.config.js`, + { + cwd, + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir, esbuildReplacer), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); +} diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index 22fb76b5278d..e8087563dbe5 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -21,7 +21,10 @@ export function runBundler(command: string, opt: ExecSyncOptions, outDir?: strin execSync(command, { stdio: DEBUG ? "inherit" : "ignore", ...opt }); } -export function readAllFiles(directory: string): Record { +export function readAllFiles( + directory: string, + customReplacer?: (content: string) => string +): Record { const files: Record = {}; const entries = readdirSync(directory); @@ -39,6 +42,10 @@ export function readAllFiles(directory: string): Record { .replaceAll(/nodeVersion:\d+/g, `nodeVersion:"NODE_VERSION"`) .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`); + if (customReplacer) { + contents = customReplacer(contents); + } + // Normalize Windows stuff in .map paths if (entry.endsWith(".map")) { const map = JSON.parse(contents) as SourceMap; diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 6049cd05d46f..3a60457a9824 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -4,7 +4,7 @@ "license": "MIT", "private": true, "scripts": { - "test": "node setup.mjs && vitest run --pool threads", + "test": "node setup.mjs && vitest run --pool threads --test-timeout=10000", "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", From 89bea0fc3e4321349e41dfd9f68147f43e9669a5 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Wed, 8 Apr 2026 10:10:00 +0200 Subject: [PATCH 615/640] ci(tests): Use deterministic debugids (#912) --- .../fixtures/rolldown/after-upload-deletion.test.ts | 2 +- .../fixtures/rolldown/application-key.test.ts | 2 +- .../fixtures/rolldown/basic-release-disabled.test.ts | 2 +- .../fixtures/rolldown/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/rolldown/basic.test.ts | 2 +- .../fixtures/rolldown/build-info.test.ts | 2 +- .../fixtures/rolldown/bundle-size-optimizations.test.ts | 2 +- .../fixtures/rolldown/component-annotation-disabled.test.ts | 2 +- .../fixtures/rolldown/component-annotation-next.test.ts | 2 +- .../fixtures/rolldown/component-annotation.test.ts | 2 +- .../fixtures/rolldown/debugids-already-injected.test.ts | 4 ++-- .../fixtures/rolldown/module-metadata.test.ts | 2 +- .../fixtures/rolldown/multiple-entry-points.test.ts | 6 +++--- .../fixtures/rolldown/query-param.test.ts | 6 +++--- .../fixtures/rolldown/release-disabled.test.ts | 2 +- .../fixtures/rolldown/telemetry.test.ts | 2 +- .../fixtures/rollup3/after-upload-deletion.test.ts | 2 +- .../fixtures/rollup3/application-key.test.ts | 2 +- .../fixtures/rollup3/basic-release-disabled.test.ts | 2 +- .../fixtures/rollup3/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/rollup3/basic.test.ts | 2 +- .../fixtures/rollup3/build-info.test.ts | 2 +- .../fixtures/rollup3/bundle-size-optimizations.test.ts | 2 +- .../fixtures/rollup3/component-annotation-disabled.test.ts | 2 +- .../fixtures/rollup3/component-annotation-next.test.ts | 2 +- .../fixtures/rollup3/component-annotation.test.ts | 2 +- .../fixtures/rollup3/module-metadata.test.ts | 2 +- .../fixtures/rollup3/multiple-entry-points.test.ts | 6 +++--- .../fixtures/rollup3/query-param.test.ts | 6 +++--- .../fixtures/rollup3/release-disabled.test.ts | 2 +- .../fixtures/rollup3/telemetry.test.ts | 2 +- .../fixtures/rollup4/after-upload-deletion.test.ts | 2 +- .../fixtures/rollup4/application-key.test.ts | 2 +- .../fixtures/rollup4/basic-release-disabled.test.ts | 2 +- .../fixtures/rollup4/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/rollup4/basic.test.ts | 2 +- .../fixtures/rollup4/build-info.test.ts | 2 +- .../fixtures/rollup4/bundle-size-optimizations.test.ts | 2 +- .../fixtures/rollup4/component-annotation-disabled.test.ts | 2 +- .../fixtures/rollup4/component-annotation-next.test.ts | 2 +- .../fixtures/rollup4/component-annotation.test.ts | 2 +- .../fixtures/rollup4/debugids-already-injected.test.ts | 4 ++-- .../fixtures/rollup4/module-metadata.test.ts | 2 +- .../fixtures/rollup4/multiple-entry-points.test.ts | 6 +++--- .../fixtures/rollup4/query-param.test.ts | 6 +++--- .../fixtures/rollup4/release-disabled.test.ts | 2 +- .../fixtures/rollup4/telemetry.test.ts | 2 +- packages/integration-tests-next/fixtures/utils.ts | 5 +++++ .../fixtures/vite4/after-upload-deletion.test.ts | 2 +- .../fixtures/vite4/application-key.test.ts | 2 +- .../fixtures/vite4/basic-release-disabled.test.ts | 2 +- .../fixtures/vite4/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/vite4/basic.test.ts | 2 +- .../fixtures/vite4/build-info.test.ts | 2 +- .../fixtures/vite4/bundle-size-optimizations.test.ts | 2 +- .../fixtures/vite4/component-annotation-disabled.test.ts | 2 +- .../fixtures/vite4/component-annotation-next.test.ts | 2 +- .../fixtures/vite4/component-annotation.test.ts | 2 +- .../fixtures/vite4/module-metadata.test.ts | 2 +- .../fixtures/vite4/multiple-entry-points.test.ts | 6 +++--- .../fixtures/vite4/query-param.test.ts | 6 +++--- .../fixtures/vite4/release-disabled.test.ts | 2 +- .../integration-tests-next/fixtures/vite4/telemetry.test.ts | 2 +- .../fixtures/vite7/after-upload-deletion.test.ts | 2 +- .../fixtures/vite7/application-key.test.ts | 2 +- .../fixtures/vite7/basic-release-disabled.test.ts | 2 +- .../fixtures/vite7/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/vite7/basic.test.ts | 2 +- .../fixtures/vite7/build-info.test.ts | 2 +- .../fixtures/vite7/bundle-size-optimizations.test.ts | 2 +- .../fixtures/vite7/component-annotation-disabled.test.ts | 2 +- .../fixtures/vite7/component-annotation-next.test.ts | 2 +- .../fixtures/vite7/component-annotation.test.ts | 2 +- .../fixtures/vite7/debugids-already-injected.test.ts | 4 ++-- .../fixtures/vite7/module-metadata.test.ts | 2 +- .../fixtures/vite7/multiple-entry-points.test.ts | 6 +++--- .../fixtures/vite7/query-param.test.ts | 6 +++--- .../fixtures/vite7/release-disabled.test.ts | 2 +- .../integration-tests-next/fixtures/vite7/telemetry.test.ts | 2 +- .../fixtures/vite8/after-upload-deletion.test.ts | 2 +- .../fixtures/vite8/application-key.test.ts | 2 +- .../fixtures/vite8/basic-release-disabled.test.ts | 2 +- .../fixtures/vite8/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/vite8/basic.test.ts | 2 +- .../fixtures/vite8/build-info.test.ts | 2 +- .../fixtures/vite8/bundle-size-optimizations.test.ts | 2 +- .../fixtures/vite8/component-annotation-disabled.test.ts | 2 +- .../fixtures/vite8/component-annotation-next.test.ts | 2 +- .../fixtures/vite8/component-annotation.test.ts | 2 +- .../fixtures/vite8/debugids-already-injected.test.ts | 4 ++-- .../fixtures/vite8/module-metadata.test.ts | 2 +- .../fixtures/vite8/multiple-entry-points.test.ts | 6 +++--- .../fixtures/vite8/query-param.test.ts | 6 +++--- .../fixtures/vite8/release-disabled.test.ts | 2 +- .../integration-tests-next/fixtures/vite8/telemetry.test.ts | 2 +- .../fixtures/webpack5/after-upload-deletion.test.ts | 2 +- .../fixtures/webpack5/application-key.test.ts | 2 +- .../fixtures/webpack5/basic-release-disabled.test.ts | 2 +- .../fixtures/webpack5/basic-sourcemaps.test.ts | 2 +- .../integration-tests-next/fixtures/webpack5/basic.test.ts | 2 +- .../fixtures/webpack5/build-info.test.ts | 2 +- .../fixtures/webpack5/bundle-size-optimizations.test.ts | 2 +- .../fixtures/webpack5/component-annotation-disabled.test.ts | 2 +- .../fixtures/webpack5/component-annotation-next.test.ts | 2 +- .../fixtures/webpack5/component-annotation.test.ts | 2 +- .../fixtures/webpack5/debugids-already-injected.test.ts | 4 ++-- .../fixtures/webpack5/module-metadata.test.ts | 2 +- .../fixtures/webpack5/multiple-entry-points.test.ts | 4 ++-- .../fixtures/webpack5/release-disabled.test.ts | 2 +- .../fixtures/webpack5/telemetry.test.ts | 2 +- 110 files changed, 144 insertions(+), 139 deletions(-) diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts index 98cb45aa63a0..c0e84898b270 100644 --- a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts index edec4127a516..88a7d0a92d9a 100644 --- a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts @@ -18,7 +18,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { return e; }({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts index 932a4682e904..b39ba31eec49 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { 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] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts index a15fd429161b..11726184aff9 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts index 4f2aa09c4567..ef26f379ba3b 100644 --- a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/basic.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts index 17f63e44bf73..1ff311c422cb 100644 --- a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts @@ -20,7 +20,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts index 63d082bcb4be..eeb6bf284506 100644 --- a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "92a38845-d1ee-42b4-9812-67a76e42b480", e._sentryDebugIdIdentifier = "sentry-dbid-92a38845-d1ee-42b4-9812-67a76e42b480"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log(JSON.stringify({ diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts index 6cfa24bb39ce..3866198ed816 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "85f51673-9b26-4de9-b6ba-12058e53f08b", e._sentryDebugIdIdentifier = "sentry-dbid-85f51673-9b26-4de9-b6ba-12058e53f08b"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts index fc72317d8acd..4e6b7ba923f9 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "08d8ea54-706b-4dfc-9e1f-19af2d0fc86e", e._sentryDebugIdIdentifier = "sentry-dbid-08d8ea54-706b-4dfc-9e1f-19af2d0fc86e"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts index 3d8a49a39e05..98cd6ee88fed 100644 --- a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "0ad46712-3fec-46f3-8539-60a50dfc7fc6", e._sentryDebugIdIdentifier = "sentry-dbid-0ad46712-3fec-46f3-8539-60a50dfc7fc6"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts index 1ea310ac5da5..c5a04f975b7c 100644 --- a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts @@ -15,13 +15,13 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); //#endregion - //# debugId=b699d9c1-b033-4536-aa25-233c92609b54 + //# debugId=00000000-0000-0000-0000-000000000000 //# sourceMappingURL=basic.js.map", "b699d9c1-b033-4536-aa25-233c92609b54-0.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc","debugId":"b699d9c1-b033-4536-aa25-233c92609b54","debug_id":"b699d9c1-b033-4536-aa25-233c92609b54"}", } diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts index 02d3c2a89830..05c0653cd811 100644 --- a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts @@ -21,7 +21,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { "another": 999 }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts index cc61311de5b3..63b5f353f8f4 100644 --- a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "3f33b953-1cf1-4c05-850d-3f5b805fa101", e._sentryDebugIdIdentifier = "sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); function add(a, b) { @@ -23,7 +23,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "cbcd67c2-83a7-44e1-94e6-9a8ab161f162", e._sentryDebugIdIdentifier = "sentry-dbid-cbcd67c2-83a7-44e1-94e6-9a8ab161f162"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { t as add } from "./common.js"; @@ -35,7 +35,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "a4f71127-2139-4e9f-af54-f35982254569", e._sentryDebugIdIdentifier = "sentry-dbid-a4f71127-2139-4e9f-af54-f35982254569"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { t as add } from "./common.js"; diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts index f3e323644136..96666e28df19 100644 --- a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts @@ -16,7 +16,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3f33b953-1cf1-4c05-850d-3f5b805fa101", e._sentryDebugIdIdentifier = "sentry-dbid-3f33b953-1cf1-4c05-850d-3f5b805fa101"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); function add(a, b) { @@ -30,7 +30,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bf11f932-fe2b-4b54-97e0-45abde2a0d81", e._sentryDebugIdIdentifier = "sentry-dbid-bf11f932-fe2b-4b54-97e0-45abde2a0d81"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { t as add } from "./common.js?seP58q4g"; @@ -43,7 +43,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e", e._sentryDebugIdIdentifier = "sentry-dbid-5aaa817b-a0e4-4c91-a4f4-aa8f3c26e66e"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); import { t as add } from "./common.js?seP58q4g"; diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts index 8003ac691aba..18e4c8f80f47 100644 --- a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts index e89a87dbd995..ebd149c87a8a 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b699d9c1-b033-4536-aa25-233c92609b54", e._sentryDebugIdIdentifier = "sentry-dbid-b699d9c1-b033-4536-aa25-233c92609b54"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e) {} })(); console.log("hello world"); diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts index 108927566a71..a4305945f767 100644 --- a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); //# sourceMappingURL=basic.js.map ", } diff --git a/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts b/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts index eb1bfb06cd23..893eb03cfbb1 100644 --- a/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !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]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts index e6c8698909df..0f4f0bed3833 100644 --- a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); //# sourceMappingURL=basic.js.map ", "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC"}", diff --git a/packages/integration-tests-next/fixtures/rollup3/basic.test.ts b/packages/integration-tests-next/fixtures/rollup3/basic.test.ts index 47d056666336..1d68d3104370 100644 --- a/packages/integration-tests-next/fixtures/rollup3/basic.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/basic.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts index 92a8188641c4..d0af291ecb4e 100644 --- a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts index f7ddff94d37c..c685a2b794e2 100644 --- a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4",e._sentryDebugIdIdentifier="sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4");}catch(e){}}();console.log( + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log( JSON.stringify({ debug: "b", trace: "b", diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts index d61c1290324f..054e90c0e827 100644 --- a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e0d3404a-8cd2-4497-8ac0-7d0973080851",e._sentryDebugIdIdentifier="sentry-dbid-e0d3404a-8cd2-4497-8ac0-7d0973080851");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts index 0bc86e7fbfc8..62cfe0816cc5 100644 --- a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92286409-18f3-4cfe-8a2d-8e7ee88697ef",e._sentryDebugIdIdentifier="sentry-dbid-92286409-18f3-4cfe-8a2d-8e7ee88697ef");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts index 90d896e28c0f..387beb7fda07 100644 --- a/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b640794-e3e7-486c-b3b4-52d37c4fbae1",e._sentryDebugIdIdentifier="sentry-dbid-0b640794-e3e7-486c-b3b4-52d37c4fbae1");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts index 59d819cf61ff..b4acc59902a5 100644 --- a/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.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]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + "common.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();function add(a, b) { return a + b; } export { add as a }; ", - "entry1.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]="462efaa9-6efa-471b-94ae-88b2852f0c20",e._sentryDebugIdIdentifier="sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20");}catch(e){}}();import { a as add } from './common.js'; + "entry1.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js'; console.log(add(1, 2)); ", - "entry2.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]="0231818d-9e30-4d5b-94a9-3da56ffd79af",e._sentryDebugIdIdentifier="sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af");}catch(e){}}();import { a as add } from './common.js'; + "entry2.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js'; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts b/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts index d6560ec40bd8..d65cb2e349da 100644 --- a/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts @@ -10,17 +10,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();function add(a, b) { return a + b; } export { add as a }; ", - "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="161db429-4399-479c-9466-6ff8ad3344f9",e._sentryDebugIdIdentifier="sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; console.log(add(1, 2)); ", - "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3bc51c0-20dc-4a52-a69a-6a43acf7cd65",e._sentryDebugIdIdentifier="sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts index d8239cf3c24f..b8e6f6b9d32f 100644 --- a/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts index b688c9184aec..1585f17dbe03 100644 --- a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts index 108927566a71..a4305945f767 100644 --- a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); //# sourceMappingURL=basic.js.map ", } diff --git a/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts b/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts index eb1bfb06cd23..893eb03cfbb1 100644 --- a/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !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]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts index e6c8698909df..0f4f0bed3833 100644 --- a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); //# sourceMappingURL=basic.js.map ", "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC"}", diff --git a/packages/integration-tests-next/fixtures/rollup4/basic.test.ts b/packages/integration-tests-next/fixtures/rollup4/basic.test.ts index 47d056666336..1d68d3104370 100644 --- a/packages/integration-tests-next/fixtures/rollup4/basic.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/basic.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts index 60fe63ca564a..9e121ac7e6e2 100644 --- a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts index f7ddff94d37c..c685a2b794e2 100644 --- a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4",e._sentryDebugIdIdentifier="sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4");}catch(e){}}();console.log( + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log( JSON.stringify({ debug: "b", trace: "b", diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts index d61c1290324f..054e90c0e827 100644 --- a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e0d3404a-8cd2-4497-8ac0-7d0973080851",e._sentryDebugIdIdentifier="sentry-dbid-e0d3404a-8cd2-4497-8ac0-7d0973080851");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts index 0bc86e7fbfc8..62cfe0816cc5 100644 --- a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="92286409-18f3-4cfe-8a2d-8e7ee88697ef",e._sentryDebugIdIdentifier="sentry-dbid-92286409-18f3-4cfe-8a2d-8e7ee88697ef");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts b/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts index 90d896e28c0f..387beb7fda07 100644 --- a/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b640794-e3e7-486c-b3b4-52d37c4fbae1",e._sentryDebugIdIdentifier="sentry-dbid-0b640794-e3e7-486c-b3b4-52d37c4fbae1");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime'; function ComponentA() { return /*#__PURE__*/jsx("span", { diff --git a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts index fad6713f2de3..de92ed454402 100644 --- a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts @@ -10,8 +10,8 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { expect(files).toMatchInlineSnapshot(` { "252e0338-8927-4f52-bd57-188131defd0f-0.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}catch(e){}}();console.log("hello world"); - //# debugId=252e0338-8927-4f52-bd57-188131defd0f + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); + //# debugId=00000000-0000-0000-0000-000000000000 //# sourceMappingURL=basic.js.map ", "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;scACA,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,CAAA,KAAA,CAAa,CAAC","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", diff --git a/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts b/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts index 59d819cf61ff..b4acc59902a5 100644 --- a/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.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]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + "common.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();function add(a, b) { return a + b; } export { add as a }; ", - "entry1.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]="462efaa9-6efa-471b-94ae-88b2852f0c20",e._sentryDebugIdIdentifier="sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20");}catch(e){}}();import { a as add } from './common.js'; + "entry1.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js'; console.log(add(1, 2)); ", - "entry2.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]="0231818d-9e30-4d5b-94a9-3da56ffd79af",e._sentryDebugIdIdentifier="sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af");}catch(e){}}();import { a as add } from './common.js'; + "entry2.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js'; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts b/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts index d6560ec40bd8..d65cb2e349da 100644 --- a/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts @@ -10,17 +10,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d6522b10-3189-4ceb-b9e3-9764b0420211",e._sentryDebugIdIdentifier="sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211");}catch(e){}}();function add(a, b) { + "common.js?seP58q4g": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();function add(a, b) { return a + b; } export { add as a }; ", - "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="161db429-4399-479c-9466-6ff8ad3344f9",e._sentryDebugIdIdentifier="sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + "entry1.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; console.log(add(1, 2)); ", - "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3bc51c0-20dc-4a52-a69a-6a43acf7cd65",e._sentryDebugIdIdentifier="sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; + "entry2.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();import { a as add } from './common.js?seP58q4g'; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts b/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts index d8239cf3c24f..b8e6f6b9d32f 100644 --- a/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts index b688c9184aec..1585f17dbe03 100644 --- a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="252e0338-8927-4f52-bd57-188131defd0f",e._sentryDebugIdIdentifier="sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f");}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:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index e8087563dbe5..a6b2500a6073 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -71,6 +71,11 @@ export function readAllFiles( } else { // Normalize Windows line endings for cross-platform snapshots contents = contents.replace(/\r\n/g, "\n"); + // Normalize debug IDs to make snapshots deterministic across environments + contents = contents.replace( + /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi, + "00000000-0000-0000-0000-000000000000" + ); } files[entry] = contents; } diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts index ced3602eb876..1345b6fb3e7b 100644 --- a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts index 902f8657de17..72768296ba91 100644 --- a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts index eb87a85811e5..3f31dcee5a9b 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { 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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts index d99bd4e64ae8..89553dea9a3f 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/basic.test.ts b/packages/integration-tests-next/fixtures/vite4/basic.test.ts index 5b79abcf1d5c..4b334c167dbb 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts index e185858a87a0..a25f980e70c8 100644 --- a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { e.SENTRY_RELEASE = { id: "build-information-injection-test" }; e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 4 }, "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts index a853e327390a..ee0a41658dad 100644 --- a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts index 3fdf123e0367..23f18a092d31 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5950dfde-7033-4e00-a69c-652e1b5bc157", e._sentryDebugIdIdentifier = "sentry-dbid-5950dfde-7033-4e00-a69c-652e1b5bc157"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts index 4a616db3e9a8..f27ee2946afa 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "62a0263b-dddb-4ac5-bb1a-a352edfa415c", e._sentryDebugIdIdentifier = "sentry-dbid-62a0263b-dddb-4ac5-bb1a-a352edfa415c"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts index 7f123f0bcbbf..1331f9de1e68 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d2aba7de-9acd-4eaf-8153-269a881dd7a6", e._sentryDebugIdIdentifier = "sentry-dbid-d2aba7de-9acd-4eaf-8153-269a881dd7a6"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts index 66fb3b112351..d807e3d04b30 100644 --- a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts index 0ea77c27d8de..e3ee93ed40a5 100644 --- a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -24,7 +24,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -35,7 +35,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts index b7def38700b7..dbf701028f0c 100644 --- a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts @@ -15,7 +15,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -31,7 +31,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -43,7 +43,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts index 82038026d045..be2e8688f19a 100644 --- a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts index f02b90e06b3f..e41bc2142efd 100644 --- a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts index ced3602eb876..1345b6fb3e7b 100644 --- a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/application-key.test.ts b/packages/integration-tests-next/fixtures/vite7/application-key.test.ts index 902f8657de17..72768296ba91 100644 --- a/packages/integration-tests-next/fixtures/vite7/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/application-key.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts index eb87a85811e5..3f31dcee5a9b 100644 --- a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { 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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts index d99bd4e64ae8..89553dea9a3f 100644 --- a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/basic.test.ts b/packages/integration-tests-next/fixtures/vite7/basic.test.ts index 5b79abcf1d5c..4b334c167dbb 100644 --- a/packages/integration-tests-next/fixtures/vite7/basic.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/basic.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/build-info.test.ts b/packages/integration-tests-next/fixtures/vite7/build-info.test.ts index 86290fae7c75..c998d7ae550d 100644 --- a/packages/integration-tests-next/fixtures/vite7/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/build-info.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { e.SENTRY_RELEASE = { id: "build-information-injection-test" }; e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 7 }, "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts index a853e327390a..ee0a41658dad 100644 --- a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts index 3fdf123e0367..23f18a092d31 100644 --- a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5950dfde-7033-4e00-a69c-652e1b5bc157", e._sentryDebugIdIdentifier = "sentry-dbid-5950dfde-7033-4e00-a69c-652e1b5bc157"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts index 4a616db3e9a8..f27ee2946afa 100644 --- a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "62a0263b-dddb-4ac5-bb1a-a352edfa415c", e._sentryDebugIdIdentifier = "sentry-dbid-62a0263b-dddb-4ac5-bb1a-a352edfa415c"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts index 7f123f0bcbbf..1331f9de1e68 100644 --- a/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d2aba7de-9acd-4eaf-8153-269a881dd7a6", e._sentryDebugIdIdentifier = "sentry-dbid-d2aba7de-9acd-4eaf-8153-269a881dd7a6"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts index 5735e77121ae..997b0c3e4b1e 100644 --- a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts @@ -14,12 +14,12 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); console.log("hello world"); - //# debugId=252e0338-8927-4f52-bd57-188131defd0f + //# debugId=00000000-0000-0000-0000-000000000000 //# sourceMappingURL=basic.js.map ", "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", diff --git a/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts index 66fb3b112351..d807e3d04b30 100644 --- a/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts index 0ea77c27d8de..e3ee93ed40a5 100644 --- a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -24,7 +24,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -35,7 +35,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/query-param.test.ts b/packages/integration-tests-next/fixtures/vite7/query-param.test.ts index b7def38700b7..dbf701028f0c 100644 --- a/packages/integration-tests-next/fixtures/vite7/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/query-param.test.ts @@ -15,7 +15,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -31,7 +31,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -43,7 +43,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts index 82038026d045..be2e8688f19a 100644 --- a/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts index f02b90e06b3f..e41bc2142efd 100644 --- a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts index ced3602eb876..1345b6fb3e7b 100644 --- a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts index 902f8657de17..72768296ba91 100644 --- a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts index eb87a85811e5..3f31dcee5a9b 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { 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] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts index d99bd4e64ae8..89553dea9a3f 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/basic.test.ts b/packages/integration-tests-next/fixtures/vite8/basic.test.ts index 5b79abcf1d5c..4b334c167dbb 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts index f4715d4c45c4..6073c7e914d9 100644 --- a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { e.SENTRY_RELEASE = { id: "build-information-injection-test" }; e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 8 }, "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts index a853e327390a..ee0a41658dad 100644 --- a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4", e._sentryDebugIdIdentifier = "sentry-dbid-9ba2eb17-5b67-4bb4-bfcf-dca3e3b993b4"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts index 6087e1fc001e..df95dc2d5c99 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "fad021a7-2309-4b95-9454-c14eaca9c494", e._sentryDebugIdIdentifier = "sentry-dbid-fad021a7-2309-4b95-9454-c14eaca9c494"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts index 15a8de428208..e86ad8a5fc7e 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "e360fd0a-f174-42e5-a616-ca20792b40f7", e._sentryDebugIdIdentifier = "sentry-dbid-e360fd0a-f174-42e5-a616-ca20792b40f7"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts index c059336cc49f..b0fa1d6d91e9 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "7cf1a3cd-d2df-426b-8527-27fd153bf757", e._sentryDebugIdIdentifier = "sentry-dbid-7cf1a3cd-d2df-426b-8527-27fd153bf757"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts index 5735e77121ae..997b0c3e4b1e 100644 --- a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts @@ -14,12 +14,12 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); console.log("hello world"); - //# debugId=252e0338-8927-4f52-bd57-188131defd0f + //# debugId=00000000-0000-0000-0000-000000000000 //# sourceMappingURL=basic.js.map ", "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts index 66fb3b112351..d807e3d04b30 100644 --- a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts @@ -17,7 +17,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { return e2; })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts index 0ea77c27d8de..e3ee93ed40a5 100644 --- a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -24,7 +24,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "462efaa9-6efa-471b-94ae-88b2852f0c20", e._sentryDebugIdIdentifier = "sentry-dbid-462efaa9-6efa-471b-94ae-88b2852f0c20"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -35,7 +35,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { 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] = "0231818d-9e30-4d5b-94a9-3da56ffd79af", e._sentryDebugIdIdentifier = "sentry-dbid-0231818d-9e30-4d5b-94a9-3da56ffd79af"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts index b7def38700b7..dbf701028f0c 100644 --- a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts @@ -15,7 +15,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d6522b10-3189-4ceb-b9e3-9764b0420211", e._sentryDebugIdIdentifier = "sentry-dbid-d6522b10-3189-4ceb-b9e3-9764b0420211"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -31,7 +31,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "161db429-4399-479c-9466-6ff8ad3344f9", e._sentryDebugIdIdentifier = "sentry-dbid-161db429-4399-479c-9466-6ff8ad3344f9"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); @@ -43,7 +43,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a3bc51c0-20dc-4a52-a69a-6a43acf7cd65", e._sentryDebugIdIdentifier = "sentry-dbid-a3bc51c0-20dc-4a52-a69a-6a43acf7cd65"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts index 82038026d045..be2e8688f19a 100644 --- a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts index f02b90e06b3f..e41bc2142efd 100644 --- a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "252e0338-8927-4f52-bd57-188131defd0f", e._sentryDebugIdIdentifier = "sentry-dbid-252e0338-8927-4f52-bd57-188131defd0f"); + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } })(); diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts index 53c8e5a41788..a4bcd8a767cb 100644 --- a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts b/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts index 10ccca8a99b2..76b6d9adb0e8 100644 --- a/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts index f939d6753704..c7fc5905957a 100644 --- a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.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]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + "basic.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts index 6db94a83cd0c..c9fedd3d47f8 100644 --- a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/basic.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic.test.ts index 484819ee438f..baa396d20e70 100644 --- a/packages/integration-tests-next/fixtures/webpack5/basic.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/basic.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts index 6fa65cdcd6fe..0241339a52d3 100644 --- a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts index ea838e8cf9b0..7313767b10ad 100644 --- a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1ddfd748-f716-49b5-a6bb-a08a480112e2",e._sentryDebugIdIdentifier="sentry-dbid-1ddfd748-f716-49b5-a6bb-a08a480112e2");}catch(e){}}(); + "bundle.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; console.log( diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts index 448b9fc92f74..39a5b67c4108 100644 --- a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="56aca27b-2809-426a-9842-c74241cd7985",e._sentryDebugIdIdentifier="sentry-dbid-56aca27b-2809-426a-9842-c74241cd7985");}catch(e){}}(); + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts index 30fa06af4f10..28d9443ae50d 100644 --- a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="550fd31a-707a-4221-b84e-f3964d7c368b",e._sentryDebugIdIdentifier="sentry-dbid-550fd31a-707a-4221-b84e-f3964d7c368b");}catch(e){}}(); + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts b/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts index 5f8cb1a0a41d..1c5f9f8cc6ac 100644 --- a/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cfc1abb3-018d-4ab5-adbb-cdba19bbd8e0",e._sentryDebugIdIdentifier="sentry-dbid-cfc1abb3-018d-4ab5-adbb-cdba19bbd8e0");}catch(e){}}(); + "app.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; diff --git a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts index 4e23efde0c33..3509e3431c86 100644 --- a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { const files = readAllFiles(tempDir); expect(files).toMatchInlineSnapshot(` { - "33730b8e-5b8d-4795-94b2-666cea28fce6-0.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33730b8e-5b8d-4795-94b2-666cea28fce6",e._sentryDebugIdIdentifier="sentry-dbid-33730b8e-5b8d-4795-94b2-666cea28fce6");}catch(e){}}(); + "33730b8e-5b8d-4795-94b2-666cea28fce6-0.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console @@ -18,7 +18,7 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { /******/ })() ; //# sourceMappingURL=basic.js.map - //# debugId=33730b8e-5b8d-4795-94b2-666cea28fce6", + //# debugId=00000000-0000-0000-0000-000000000000", "33730b8e-5b8d-4795-94b2-666cea28fce6-0.js.map": "{"version":3,"file":"basic.js","mappings":";;;AAAA;AACA","sources":["webpack5-integration-tests/./src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"sourceRoot":"","debug_id":"33730b8e-5b8d-4795-94b2-666cea28fce6","debugId":"33730b8e-5b8d-4795-94b2-666cea28fce6"}", } `); diff --git a/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts b/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts index 44bc19d9c2bb..2672e9edf824 100644 --- a/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts index fa76d2b4f7a8..5f054a9ba2da 100644 --- a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "entry1.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]="a50aee12-d2d3-4d16-88bd-652f76f59160",e._sentryDebugIdIdentifier="sentry-dbid-a50aee12-d2d3-4d16-88bd-652f76f59160");}catch(e){}}(); + "entry1.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; @@ -21,7 +21,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { /******/ })() ;", - "entry2.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]="ca296a6b-7e8f-4158-a4c6-725f2e93e232",e._sentryDebugIdIdentifier="sentry-dbid-ca296a6b-7e8f-4158-a4c6-725f2e93e232");}catch(e){}}(); + "entry2.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]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; diff --git a/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts b/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts index 721d02f65e0e..5f0e210be09d 100644 --- a/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts index bf7f62d0ef2c..afea545d0fe8 100644 --- a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6438758c-c236-4f8b-af24-575a5948a617",e._sentryDebugIdIdentifier="sentry-dbid-6438758c-c236-4f8b-af24-575a5948a617");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console From e2cdbf8dbb4da9426432657bea9119966f6f0c0f Mon Sep 17 00:00:00 2001 From: chargome <20254395+chargome@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:27:29 +0000 Subject: [PATCH 616/640] release: 5.2.0 --- CHANGELOG.md | 28 +++++++++++++++++++ .../package.json | 6 ++-- packages/bundler-plugin-core/package.json | 8 +++--- packages/dev-utils/package.json | 2 +- packages/e2e-tests/package.json | 14 +++++----- packages/esbuild-plugin/package.json | 8 +++--- packages/eslint-configs/package.json | 2 +- .../fixtures/esbuild/package.json | 8 +++--- .../fixtures/rolldown/package.json | 8 +++--- .../fixtures/rollup3/package.json | 8 +++--- .../fixtures/rollup4/package.json | 8 +++--- .../fixtures/vite4/package.json | 10 +++---- .../fixtures/vite7/package.json | 10 +++---- .../fixtures/vite8/package.json | 10 +++---- .../fixtures/webpack5/package.json | 8 +++--- packages/integration-tests-next/package.json | 14 +++++----- packages/integration-tests/package.json | 16 +++++------ packages/playground/package.json | 4 +-- packages/rollup-plugin/package.json | 8 +++--- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 +++---- packages/webpack-plugin/package.json | 8 +++--- 22 files changed, 114 insertions(+), 86 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34aad1b08714..7cf5ebb3d636 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## 5.2.0 + +### New Features ✨ + +- (core) Pass `mapDir` to `rewriteSourcesHook` by @chargome in [#908](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/908) +- Use `crypto.randomUUID` rather than `uuid` by @timfish in [#892](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/892) + +### Bug Fixes 🐛 + +- (core) Conditionally add tracing headers by @chargome in [#907](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/907) +- (e2e-tests) Pin axios to 1.13.5 to avoid compromised 1.14.1 by @andreiborza in [#906](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/906) +- (rollup) Make rollup an optional peer dependency by @andreiborza in [#913](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/913) +- Add missing webpack5 entrypoint in webpack-plugin by @brunodccarvalho in [#905](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/905) + +### Internal Changes 🔧 + +- (deps) Bump vulnerable webpack version by @chargome in [#909](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/909) +- (tests) Use deterministic debugids by @chargome in [#912](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/912) +- Add esbuild integration tests by @timfish in [#911](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/911) +- Vite integration tests by @timfish in [#899](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/899) +- Webpack integration tests by @timfish in [#904](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/904) +- Isolate integration test package installs by @timfish in [#902](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/902) +- Pin GitHub Actions to full-length commit SHAs by @joshuarli in [#900](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/900) +- Rollup integration tests by @timfish in [#897](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/897) +- New integration tests by @timfish in [#896](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/896) +- Remove lerna by @timfish in [#895](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/895) +- Migrate to Vitest by @timfish in [#894](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/894) + ## 5.1.1 ### Bug Fixes 🐛 diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 119de3e9f616..c5caee415f18 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "5.1.1", + "version": "5.2.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -52,8 +52,8 @@ "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index e766050fbf45..ca45113fd6dd 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "5.1.1", + "version": "5.2.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.1.1", + "@sentry/babel-plugin-component-annotate": "5.2.0", "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 80a023fff8ec..bd54586fa390 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index cb1aef3d4e07..d3428db42eb4 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "scripts": { @@ -15,15 +15,15 @@ "lint": "eslint ." }, "dependencies": { - "@sentry/esbuild-plugin": "5.1.1", - "@sentry/rollup-plugin": "5.1.1", - "@sentry/vite-plugin": "5.1.1", - "@sentry/webpack-plugin": "5.1.1", + "@sentry/esbuild-plugin": "5.2.0", + "@sentry/rollup-plugin": "5.2.0", + "@sentry/vite-plugin": "5.2.0", + "@sentry/webpack-plugin": "5.2.0", "axios": "1.13.5" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", "esbuild": "0.14.49", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index bedf0d0444b4..049e6f97fb75 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "5.1.1", + "version": "5.2.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,11 +48,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1" + "@sentry/bundler-plugin-core": "5.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index c84ab03a3319..65a5caee84a5 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/packages/integration-tests-next/fixtures/esbuild/package.json index d10b6e830b03..7dba8adbd3a3 100644 --- a/packages/integration-tests-next/fixtures/esbuild/package.json +++ b/packages/integration-tests-next/fixtures/esbuild/package.json @@ -5,13 +5,13 @@ "type": "module", "dependencies": { "esbuild": "0.28.0", - "@sentry/esbuild-plugin": "5.1.1" + "@sentry/esbuild-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 99414718b609..005d166d2c1a 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -4,15 +4,15 @@ "private": true, "type": "module", "dependencies": { - "@sentry/rollup-plugin": "5.1.1", + "@sentry/rollup-plugin": "5.2.0", "react": "19.2.4", "rolldown": "1.0.0-rc.10" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index 0317ba75b40e..d02ba359c751 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -8,13 +8,13 @@ "rollup": "3.30.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "15.2.3", - "@sentry/rollup-plugin": "5.1.1" + "@sentry/rollup-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index a9d649e33f46..670ce8ffe750 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -8,13 +8,13 @@ "rollup": "4.59.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "16.0.3", - "@sentry/rollup-plugin": "5.1.1" + "@sentry/rollup-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/packages/integration-tests-next/fixtures/vite4/package.json index d57b814eed69..079937e13b16 100644 --- a/packages/integration-tests-next/fixtures/vite4/package.json +++ b/packages/integration-tests-next/fixtures/vite4/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "4.5.14", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.1.1" + "@sentry/vite-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/packages/integration-tests-next/fixtures/vite7/package.json index 2ff628aae9fe..3c1d6244a21c 100644 --- a/packages/integration-tests-next/fixtures/vite7/package.json +++ b/packages/integration-tests-next/fixtures/vite7/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "7.3.1", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.1.1" + "@sentry/vite-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/packages/integration-tests-next/fixtures/vite8/package.json index 0528d663b676..df24ce9a6bc4 100644 --- a/packages/integration-tests-next/fixtures/vite8/package.json +++ b/packages/integration-tests-next/fixtures/vite8/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "8.0.1", "@vitejs/plugin-react": "6.0.1", - "@sentry/vite-plugin": "5.1.1" + "@sentry/vite-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.1.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json index 4e198e5936c3..b99dc17fa252 100644 --- a/packages/integration-tests-next/fixtures/webpack5/package.json +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -7,13 +7,13 @@ "webpack": "5.105.4", "webpack-cli": "6.0.1", "@babel/preset-react": "7.23.3", - "@sentry/webpack-plugin": "5.1.1" + "@sentry/webpack-plugin": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.1.1.tgz", - "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.1.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.1.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", + "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.2.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 3a60457a9824..60f1aa84a7f8 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests-next", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "scripts": { @@ -13,12 +13,12 @@ "clean:deps": "premove node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", - "@sentry/esbuild-plugin": "5.1.1", - "@sentry/rollup-plugin": "5.1.1", - "@sentry/vite-plugin": "5.1.1", - "@sentry/webpack-plugin": "5.1.1" + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry/esbuild-plugin": "5.2.0", + "@sentry/rollup-plugin": "5.2.0", + "@sentry/vite-plugin": "5.2.0", + "@sentry/webpack-plugin": "5.2.0" }, "devDependencies": { "premove": "^4.0.0", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 31a183d0ba14..1bc4dfccacfb 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", - "@sentry/bundler-plugin-core": "5.1.1", - "@sentry/esbuild-plugin": "5.1.1", - "@sentry/rollup-plugin": "5.1.1", - "@sentry/vite-plugin": "5.1.1", - "@sentry/webpack-plugin": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry/bundler-plugin-core": "5.2.0", + "@sentry/esbuild-plugin": "5.2.0", + "@sentry/rollup-plugin": "5.2.0", + "@sentry/vite-plugin": "5.2.0", + "@sentry/webpack-plugin": "5.2.0", "@types/react": "^18.2.0", "@vitejs/plugin-react": "^4.2.1", "babel-loader": "^8.0.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 9bf207566e32..31891ff06d67 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1", + "@sentry/bundler-plugin-core": "5.2.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index e002d561dff1..b6d54a694dd0 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "5.1.1", + "version": "5.2.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1", + "@sentry/bundler-plugin-core": "5.2.0", "magic-string": "~0.30.8" }, "peerDependencies": { @@ -61,8 +61,8 @@ } }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 91ebe370b2ce..53dcf7be2a64 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.1.1", + "version": "5.2.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 54f6d0091adc..291a1e8aa076 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "5.1.1", + "version": "5.2.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1", - "@sentry/rollup-plugin": "5.1.1" + "@sentry/bundler-plugin-core": "5.2.0", + "@sentry/rollup-plugin": "5.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@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 d45d6e48b1c3..a25fea6fdf9d 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "5.1.1", + "version": "5.2.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,11 +53,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.1.1" + "@sentry/bundler-plugin-core": "5.2.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.1.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.1", + "@sentry-internal/eslint-config": "5.2.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", From 17d28fca07bcd9828454066de2c8b0d2f5aca743 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Apr 2026 13:54:22 +0100 Subject: [PATCH 617/640] test: Remove unused e2e tests (#915) --- .github/workflows/checks.yml | 38 ------ .oxfmtrc.json | 6 +- package.json | 7 +- packages/e2e-tests/.env.example | 1 - packages/e2e-tests/.eslintrc.js | 17 --- packages/e2e-tests/.gitignore | 3 - packages/e2e-tests/README.md | 20 --- packages/e2e-tests/package.json | 42 ------ .../__snapshots__/basic-upload.test.ts.snap | 92 ------------- .../basic-upload/basic-upload.test.ts | 14 -- .../scenarios/basic-upload/config.ts | 15 --- .../scenarios/basic-upload/input/fib.js | 9 -- .../scenarios/basic-upload/input/index.js | 6 - .../e2e-tests/scenarios/basic-upload/setup.ts | 16 --- .../e2e-tests/scripts/run-scenario-setups.ts | 10 -- packages/e2e-tests/tsconfig.json | 9 -- packages/e2e-tests/utils/bundlers.ts | 1 - .../e2e-tests/utils/create-cjs-bundles.ts | 123 ------------------ packages/e2e-tests/utils/releases.ts | 65 --------- packages/e2e-tests/utils/sentry-api.ts | 39 ------ yarn.lock | 71 +++------- 21 files changed, 21 insertions(+), 583 deletions(-) delete mode 100644 packages/e2e-tests/.env.example delete mode 100644 packages/e2e-tests/.eslintrc.js delete mode 100644 packages/e2e-tests/.gitignore delete mode 100644 packages/e2e-tests/README.md delete mode 100644 packages/e2e-tests/package.json delete mode 100644 packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap delete mode 100644 packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts delete mode 100644 packages/e2e-tests/scenarios/basic-upload/config.ts delete mode 100644 packages/e2e-tests/scenarios/basic-upload/input/fib.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/input/index.js delete mode 100644 packages/e2e-tests/scenarios/basic-upload/setup.ts delete mode 100644 packages/e2e-tests/scripts/run-scenario-setups.ts delete mode 100644 packages/e2e-tests/tsconfig.json delete mode 100644 packages/e2e-tests/utils/bundlers.ts delete mode 100644 packages/e2e-tests/utils/create-cjs-bundles.ts delete mode 100644 packages/e2e-tests/utils/releases.ts delete mode 100644 packages/e2e-tests/utils/sentry-api.ts diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6db2a6296228..4ef66407e395 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -190,44 +190,6 @@ jobs: path: packages - run: yarn test:integration-next - test-e2e: - # We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks - # Dependabot PRs sadly also don't have access to secrets, so we skip them as well - if: - (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && - github.actor != 'dependabot[bot]' && - false # Debug ID backend changes broke the E2E tests, we need to revisit them - needs: build - name: E2E Tests - runs-on: ubuntu-latest - env: - SENTRY_AUTH_TOKEN: ${{ secrets.E2E_TESTS_SENTRY_AUTH_TOKEN }} - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: volta-cli/action@007b1509d3ea9999dbba62ca34f4eb968363bb78 # v3 - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}-${{ matrix.target }}-${{ matrix.jobIndex }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: packages - - run: yarn test:e2e - lint: needs: build name: Linter check diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 9a803f10a600..ba18e1d9ddab 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -3,9 +3,5 @@ "printWidth": 100, "experimentalSortPackageJson": false, "trailingComma": "es5", - "ignorePatterns": [ - "packages/e2e-tests/scenarios/*/ref/**/*", - "packages/bundler-plugin-core/test/fixtures", - ".nxcache" - ] + "ignorePatterns": ["packages/bundler-plugin-core/test/fixtures", ".nxcache"] } diff --git a/package.json b/package.json index 72295217025a..d1e957aa6ea5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "packages/babel-plugin-component-annotate", "packages/bundler-plugin-core", "packages/dev-utils", - "packages/e2e-tests", "packages/esbuild-plugin", "packages/eslint-configs", "packages/integration-tests", @@ -28,12 +27,10 @@ "check:types": "nx run-many --target=check:types --all", "clean": "nx run-many --target=clean --all", "clean:all": "nx run-many --target=clean:all --all && yarn", - "test": "nx run-many --target=test --all --exclude=@sentry-internal/bundler-plugin-e2e-tests", - "test:all": "nx run-many --target=test --all", - "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/integration-tests-next,@sentry-internal/bundler-plugin-e2e-tests", + "test": "nx run-many --target=test --all", + "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/integration-tests-next", "test:integration": "nx run @sentry-internal/integration-tests:test", "test:integration-next": "nx run @sentry-internal/integration-tests-next:test", - "test:e2e": "nx run @sentry-internal/bundler-plugin-e2e-tests:test", "lint": "nx run-many --target=lint --all", "check:formatting": "oxfmt --check .", "fix:formatting": "oxfmt ." diff --git a/packages/e2e-tests/.env.example b/packages/e2e-tests/.env.example deleted file mode 100644 index 98608208d085..000000000000 --- a/packages/e2e-tests/.env.example +++ /dev/null @@ -1 +0,0 @@ -SENTRY_AUTH_TOKEN= \ No newline at end of file diff --git a/packages/e2e-tests/.eslintrc.js b/packages/e2e-tests/.eslintrc.js deleted file mode 100644 index c0340602ec8b..000000000000 --- a/packages/e2e-tests/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "scenarios/*/out", "scenarios/*/ref", "scenarios/*/input"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - env: { - node: true, - }, - rules: { - "no-console": "off", - "@typescript-eslint/explicit-function-return-type": "off", - }, -}; diff --git a/packages/e2e-tests/.gitignore b/packages/e2e-tests/.gitignore deleted file mode 100644 index bacbd86e6069..000000000000 --- a/packages/e2e-tests/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -**/out -!scenarios/*/ref/** -.env \ No newline at end of file diff --git a/packages/e2e-tests/README.md b/packages/e2e-tests/README.md deleted file mode 100644 index de8a2e6ea78d..000000000000 --- a/packages/e2e-tests/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# 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 `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 - -For snapshot tests where files uploaded to Sentry are cpompared with local reference files, it's recommended to stick to the following structure inside a scenario folder: - -- `input` contains the JS input files. These will be bundled by all bundlers defined in `utils/bundlers.ts`. -- `ref` contains the reference files. All files that are uploaded to Sentry for one release must be present in this folder, in the same structure as the uploaded filename contains (e.g. `~/index.js`). Because generated JS and source maps look entirely different per bundler, reference files must be specified separately for each bundler. -- `config.ts` contains the bundler plugin config that is used to - 1. Delete a release from Sentry with the given `release` property - 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 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 deleted file mode 100644 index d3428db42eb4..000000000000 --- a/packages/e2e-tests/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@sentry-internal/bundler-plugin-e2e-tests", - "version": "5.2.0", - "license": "MIT", - "private": true, - "scripts": { - "test": "run-s test:setup test:e2e", - "test:setup": "ts-node scripts/run-scenario-setups.ts", - "test:e2e": "vitest run", - "check:types": "tsc --project ./tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./scenarios/*/out", - "clean:deps": "premove node_modules", - "lint": "eslint ." - }, - "dependencies": { - "@sentry/esbuild-plugin": "5.2.0", - "@sentry/rollup-plugin": "5.2.0", - "@sentry/vite-plugin": "5.2.0", - "@sentry/webpack-plugin": "5.2.0", - "axios": "1.13.5" - }, - "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", - "@types/axios": "^0.14.0", - "@types/glob": "8.0.0", - "esbuild": "0.14.49", - "eslint": "^8.18.0", - "glob": "^13.0.6", - "vitest": "^4.0.0", - "premove": "^4.0.0", - "rollup": "3.2.0", - "ts-node": "^10.9.1", - "vite": "3.0.0", - "webpack": "5.76.0" - }, - "volta": { - "extends": "../../package.json" - } -} 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 deleted file mode 100644 index 51eb0c893262..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap +++ /dev/null @@ -1,92 +0,0 @@ -// 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`] = ` -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\\"); -//# sourceMappingURL=index.js.map -", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"sources\\":[\\"../../../../../bundler-plugin-core/sentry-release-injection-file.js\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"// 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-esbuild\\\\\\"};\\",\\"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\\":[],\\"mappings\\":\\"aAKI,GAAI,GACF,MAAO,QAAW,IAChB,OACA,MAAO,QAAW,IAChB,OACA,MAAO,MAAS,IACd,KACA,CAAC,EAET,EAAQ,eAAe,CAAC,GAAG,sBAAsB,ECd9C,GAAM,GAAY,AAAC,GAAM,CAC9B,GAAI,IAAM,EACR,KAAM,IAAI,OAAM,uBAAuB,EAEzC,MAAI,IAAK,EACA,EAEF,EAAU,EAAI,CAAC,EAAI,EAAU,EAAI,CAAC,CAC3C,ECPA,QAAQ,IAAI,2BAA2B,EAEvC,EAAU,EAAE,EAEZ,QAAQ,IAAI,UAAU\\"}", - "name": "~/index.js.map", - }, -] -`; - -exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using rollup 1`] = ` -Array [ - Object { - "content": "'use strict'; - -// This const is used for nothing except to make this file identifiable via its content. -// 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. - -// _sentry_release_injection_file - - var _global = - typeof window !== 'undefined' ? - window : - typeof global !== 'undefined' ? - global : - typeof self !== 'undefined' ? - self : - {}; - - _global.SENTRY_RELEASE={id:\\"basic-upload-rollup\\"}; - -const fibonacci = (n) => { - if (n === 3) { - throw new Error(\\"I'm an uncaught error\\"); - } - if (n <= 1) { - return n; - } - return fibonacci(n - 1) + fibonacci(n - 2); -}; - -console.log(\\"Hi, I'm a very simple app\\"); - -fibonacci(10); - -console.log(\\"I'm done\\"); -//# sourceMappingURL=index.js.map -", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../../../../bundler-plugin-core/sentry-release-injection-file.js\\",\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"// 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\\",\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[],\\"mappings\\":\\";;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA,MAAA,SAAA,GAAA,CAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA;AACA,IAAA,MAAA,IAAA,KAAA,CAAA,uBAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,IAAA,OAAA,CAAA,CAAA;AACA,GAAA;AACA,EAAA,OAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,CAAA;;ACPA,OAAA,CAAA,GAAA,CAAA,2BAAA,CAAA,CAAA;AACA;AACA,SAAA,CAAA,EAAA,CAAA,CAAA;AACA;AACA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA\\"}", - "name": "~/index.js.map", - }, -] -`; - -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\\"); -//# sourceMappingURL=index.js.map -", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"../../input/fib.js\\",\\"../../input/index.js\\"],\\"sourcesContent\\":[\\"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\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n\\"],\\"names\\":[\\"fibonacci\\",\\"n\\"],\\"mappings\\":\\"uIAAA,MAAAA,EAAAC,GAAA,CACA,GAAAA,IAAA,EACA,MAAA,IAAA,MAAA,uBAAA,EAEA,OAAAA,GAAA,EACAA,EAEAD,EAAAC,EAAA,CAAA,EAAAD,EAAAC,EAAA,CAAA,CACA,ECPA,QAAA,IAAA,2BAAA,EAEAD,EAAA,EAAA,EAEA,QAAA,IAAA,UAAA\\"}", - "name": "~/index.js.map", - }, -] -`; - -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-webpack\\"}}},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})})(); -//# sourceMappingURL=index.js.map", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/../bundler-plugin-core/sentry-release-injection-file.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/bootstrap\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/global\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/webpack/runtime/make namespace object\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/fib.js\\",\\"webpack://@sentry-internal/bundler-plugin-e2e-tests/./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\"// 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-webpack\\\\\\"};\\",\\"// The module cache\\\\nvar __webpack_module_cache__ = {};\\\\n\\\\n// The require function\\\\nfunction __webpack_require__(moduleId) {\\\\n\\\\t// Check if module is in cache\\\\n\\\\tvar cachedModule = __webpack_module_cache__[moduleId];\\\\n\\\\tif (cachedModule !== undefined) {\\\\n\\\\t\\\\treturn cachedModule.exports;\\\\n\\\\t}\\\\n\\\\t// Create a new module (and put it into the cache)\\\\n\\\\tvar module = __webpack_module_cache__[moduleId] = {\\\\n\\\\t\\\\t// no module.id needed\\\\n\\\\t\\\\t// no module.loaded needed\\\\n\\\\t\\\\texports: {}\\\\n\\\\t};\\\\n\\\\n\\\\t// Execute the module function\\\\n\\\\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\\\\n\\\\n\\\\t// Return the exports of the module\\\\n\\\\treturn module.exports;\\\\n}\\\\n\\\\n\\",\\"__webpack_require__.g = (function() {\\\\n\\\\tif (typeof globalThis === 'object') return globalThis;\\\\n\\\\ttry {\\\\n\\\\t\\\\treturn this || new Function('return this')();\\\\n\\\\t} catch (e) {\\\\n\\\\t\\\\tif (typeof window === 'object') return window;\\\\n\\\\t}\\\\n})();\\",\\"// define __esModule on exports\\\\n__webpack_require__.r = (exports) => {\\\\n\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n\\\\t}\\\\n\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n};\\",\\"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\\":[\\"window\\",\\"g\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"__webpack_module_cache__\\",\\"__webpack_require__\\",\\"moduleId\\",\\"cachedModule\\",\\"undefined\\",\\"exports\\",\\"module\\",\\"__webpack_modules__\\",\\"globalThis\\",\\"this\\",\\"Function\\",\\"e\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"Object\\",\\"defineProperty\\",\\"value\\",\\"fibonacci\\",\\"n\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"4BAMwB,oBAAXA,OACLA,YACkB,IAAX,EAAAC,EACL,EAAAA,EACgB,oBAATC,KACLA,KACA,CAAC,GAEDC,eAAe,CAACC,GAAG,wB,GCb3BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CCtBAJ,EAAoBL,EAAI,WACvB,GAA0B,iBAAfY,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCCxBM,EAAoBW,EAAKP,IACH,oBAAXQ,QAA0BA,OAAOC,aAC1CC,OAAOC,eAAeX,EAASQ,OAAOC,YAAa,CAAEG,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,GAAO,E,0CCLvD,MAAMC,EAAaC,IACxB,GAAU,IAANA,EACF,MAAM,IAAIC,MAAM,yBAElB,OAAID,GAAK,EACAA,EAEFD,EAAUC,EAAI,GAAKD,EAAUC,EAAI,EAAE,ECN5CE,QAAQC,IAAI,6BAEZJ,EAAU,IAEVG,QAAQC,IAAI,W\\"}", - "name": "~/index.js.map", - }, -] -`; diff --git a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts deleted file mode 100644 index 3626dc737b57..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -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) => { - const release = `${pluginConfig.release?.name || ""}-${bundler}`; - - const sentryFiles = await getSentryReleaseFiles(release); - - expect(sentryFiles).toMatchSnapshot(); - }); -}); diff --git a/packages/e2e-tests/scenarios/basic-upload/config.ts b/packages/e2e-tests/scenarios/basic-upload/config.ts deleted file mode 100644 index c869c8d01e92..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Options } from "@sentry/bundler-plugin-core"; -import * as path from "path"; - -/** - * The Sentry bundler plugin config object used for this test - */ -export const pluginConfig: Options = { - release: { - name: "basic-upload", - uploadLegacySourcemaps: path.resolve(__dirname, "out"), - }, - authToken: process.env["SENTRY_AUTH_TOKEN"] || "", - org: "sentry-sdks", - project: "js-bundler-plugin-e2e-tests", -}; diff --git a/packages/e2e-tests/scenarios/basic-upload/input/fib.js b/packages/e2e-tests/scenarios/basic-upload/input/fib.js deleted file mode 100644 index a6da581e758e..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/input/fib.js +++ /dev/null @@ -1,9 +0,0 @@ -export const fibonacci = (n) => { - if (n === 3) { - throw new Error("I'm an uncaught error"); - } - if (n <= 1) { - return n; - } - return fibonacci(n - 1) + fibonacci(n - 2); -}; diff --git a/packages/e2e-tests/scenarios/basic-upload/input/index.js b/packages/e2e-tests/scenarios/basic-upload/input/index.js deleted file mode 100644 index 8159534a46a4..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/input/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { fibonacci } from "./fib"; -console.log("Hi, I'm a very simple app"); - -fibonacci(10); - -console.log("I'm done"); diff --git a/packages/e2e-tests/scenarios/basic-upload/setup.ts b/packages/e2e-tests/scenarios/basic-upload/setup.ts deleted file mode 100644 index f6c4a4f4e604..000000000000 --- a/packages/e2e-tests/scenarios/basic-upload/setup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as path from "path"; - -import { pluginConfig } from "./config"; -import { deleteAllReleases } from "../../utils/releases"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -deleteAllReleases(pluginConfig.release?.name || "") - .then(() => { - const entryPointPath = path.resolve(__dirname, "input", "index.js"); - const outputDir = path.resolve(__dirname, "out"); - - createCjsBundles({ index: entryPointPath }, outputDir, pluginConfig); - }) - .catch(() => { - console.error("Could not delete release!"); - }); diff --git a/packages/e2e-tests/scripts/run-scenario-setups.ts b/packages/e2e-tests/scripts/run-scenario-setups.ts deleted file mode 100644 index 2d55a4b28dce..000000000000 --- a/packages/e2e-tests/scripts/run-scenario-setups.ts +++ /dev/null @@ -1,10 +0,0 @@ -import fs from "fs"; -import path from "path"; - -const scenarioPaths = fs - .readdirSync(path.join(__dirname, "..", "scenarios")) - .map((fixtureDir) => path.join(__dirname, "..", "scenarios", fixtureDir)); - -scenarioPaths.forEach((fixturePath) => { - require(path.join(fixturePath, "setup.ts")); -}); diff --git a/packages/e2e-tests/tsconfig.json b/packages/e2e-tests/tsconfig.json deleted file mode 100644 index b472a5524ce5..000000000000 --- a/packages/e2e-tests/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*"], - "compilerOptions": { - "esModuleInterop": true, - "types": ["node"] - } -} diff --git a/packages/e2e-tests/utils/bundlers.ts b/packages/e2e-tests/utils/bundlers.ts deleted file mode 100644 index 32cea7898b47..000000000000 --- a/packages/e2e-tests/utils/bundlers.ts +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 931a886298c7..000000000000 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ /dev/null @@ -1,123 +0,0 @@ -import * as vite from "vite"; -import * as path from "path"; -import * as rollup from "rollup"; -import { webpack } from "webpack"; -import * as esbuild from "esbuild"; - -import type { 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"; - -export function createCjsBundles( - entrypoints: { [name: string]: string }, - outFolder: string, - sentryPluginOptions: Options -): void { - if (!sentryPluginOptions.release) { - console.error("Config has no release set, aborting"); - return; - } - - void vite.build({ - clearScreen: false, - build: { - sourcemap: true, - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [ - sentryVitePlugin({ - ...sentryPluginOptions, - release: { - name: `${sentryPluginOptions.release.name!}-vite`, - uploadLegacySourcemaps: `${ - sentryPluginOptions.release.uploadLegacySourcemaps as string - }/vite`, - }, - }) as unknown as vite.Plugin, - ], - }); - - void rollup - .rollup({ - input: entrypoints, - plugins: [ - sentryRollupPlugin({ - ...sentryPluginOptions, - release: { - name: `${sentryPluginOptions.release.name!}-rollup`, - uploadLegacySourcemaps: `${ - sentryPluginOptions.release.uploadLegacySourcemaps as string - }/rollup`, - }, - }), - ], - }) - .then((bundle) => - bundle.write({ - sourcemap: true, - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", - }) - ); - - void esbuild.build({ - entryPoints: entrypoints, - outdir: path.join(outFolder, "esbuild"), - sourcemap: true, - plugins: [ - sentryEsbuildPlugin({ - ...sentryPluginOptions, - release: { - name: `${sentryPluginOptions.release.name!}-esbuild`, - uploadLegacySourcemaps: `${ - sentryPluginOptions.release.uploadLegacySourcemaps as string - }/esbuild`, - }, - }), - ], - minify: true, - bundle: true, - format: "cjs", - }); - - webpack( - { - devtool: "source-map", - cache: false, - entry: entrypoints, - output: { - path: path.join(outFolder, "webpack"), - library: { - type: "commonjs", - }, - }, - mode: "production", - plugins: [ - sentryWebpackPlugin({ - ...sentryPluginOptions, - release: { - name: `${sentryPluginOptions.release.name!}-webpack`, - uploadLegacySourcemaps: `${ - sentryPluginOptions.release.uploadLegacySourcemaps as string - }/webpack`, - }, - }), - ], - }, - (err) => { - if (err) { - throw err; - } - } - ); -} diff --git a/packages/e2e-tests/utils/releases.ts b/packages/e2e-tests/utils/releases.ts deleted file mode 100644 index 9f8740a49c0a..000000000000 --- a/packages/e2e-tests/utils/releases.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { AxiosError } from "axios"; -import { BUNDLERS } from "./bundlers"; -import { - deleteReleaseFromSentry, - getReleaseFileFromSentry, - getReleaseFilesFromSentry, -} from "./sentry-api"; - -type ReleaseFilesData = { - id: string; - name: string; - dist?: string; - headers: Record; - size: number; - sha1: string; - dateCreated: string; -}; - -type ReleaseFile = { - name: string; - content: string; -}; - -export function deleteAllReleases(release: string) { - return Promise.all( - BUNDLERS.map(async (bundler) => { - const bundlerRelease = `${release}-${bundler}`; - try { - const response = await deleteReleaseFromSentry(bundlerRelease); - return response; - } catch (e) { - if ((e as AxiosError).response?.status === 404) { - return Promise.resolve(); - } - throw e; - } - }) - ); -} - -export async function getSentryReleaseFiles(release: string): Promise { - const releaseFileEntries = await getReleaseFiles(release); - - const releaseFiles: ReleaseFile[] = await Promise.all( - releaseFileEntries.map((entry) => getReleaseFile(release, entry)) - ); - return releaseFiles; -} - -async function getReleaseFiles(release: string): Promise { - const response = await getReleaseFilesFromSentry(release); - return response.data as ReleaseFilesData[]; -} - -async function getReleaseFile(release: string, fileEntry: ReleaseFilesData): Promise { - const response = await getReleaseFileFromSentry(release, fileEntry.id); - const data = response.data as ReleaseFile; - - return { - name: fileEntry.name, - // source maps are JSON and therefore, axios returns them as an object - // We want them as a string, though, so we convert it - content: typeof data === "object" ? JSON.stringify(data) : data, - }; -} diff --git a/packages/e2e-tests/utils/sentry-api.ts b/packages/e2e-tests/utils/sentry-api.ts deleted file mode 100644 index c275b0fa88fa..000000000000 --- a/packages/e2e-tests/utils/sentry-api.ts +++ /dev/null @@ -1,39 +0,0 @@ -import axios from "axios"; - -const AUTH_TOKEN = process.env["SENTRY_AUTH_TOKEN"] || ""; -const SENTRY_TEST_ORG_SLUG = "sentry-sdks"; -const SENTRY_TEST_PROJECT = "js-bundler-plugin-e2e-tests"; - -/** - * Sends a request to the Sentry API to GET all release files of a given release name - */ -export async function getReleaseFilesFromSentry(release: string) { - return axios.get( - `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/files/`, - { headers: getSentryApiHeaders() } - ); -} - -/** - * Sends a request to the Sentry API to GET a specific release file of a given release name and fileId - */ -export async function getReleaseFileFromSentry(release: string, fileId: string) { - return axios.get( - `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/files/${fileId}/?download=1`, - { headers: getSentryApiHeaders() } - ); -} - -/** - * Sends a request to the Sentry API to DELETE a specific release for a given release name - */ -export async function deleteReleaseFromSentry(release: string) { - return axios.delete( - `https://sentry.io/api/0/projects/${SENTRY_TEST_ORG_SLUG}/${SENTRY_TEST_PROJECT}/releases/${release}/`, - { headers: getSentryApiHeaders() } - ); -} - -function getSentryApiHeaders() { - return { Authorization: `Bearer ${AUTH_TOKEN}` }; -} diff --git a/yarn.lock b/yarn.lock index a075846572ab..0668ea6828a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1432,13 +1432,6 @@ dependencies: tslib "^2.4.0" -"@types/axios@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" - integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== - dependencies: - axios "*" - "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -1551,14 +1544,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" - integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/http-proxy@^1.17.9": version "1.17.11" resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" @@ -1581,13 +1566,6 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*": - version "6.0.0" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" - integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== - dependencies: - minimatch "*" - "@types/node@*": version "22.19.11" resolved "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz#7e1feaad24e4e36c52fa5558d5864bb4b272603e" @@ -2173,23 +2151,14 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@*: - version "1.4.0" - resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axios@1.13.5, axios@^1.12.0: - version "1.13.5" - resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" - integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== +axios@^1.12.0: + version "1.15.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f" + integrity sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q== dependencies: follow-redirects "^1.15.11" form-data "^4.0.5" - proxy-from-env "^1.1.0" + proxy-from-env "^2.1.0" babel-loader@^8.0.0: version "8.3.0" @@ -3478,7 +3447,7 @@ flatted@^3.1.0: resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.0.0, follow-redirects@^1.15.0: +follow-redirects@^1.0.0: version "1.15.2" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -3495,15 +3464,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@^4.0.5: version "4.0.5" resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" @@ -4368,13 +4328,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@*, minimatch@^10.2.2: - version "10.2.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" - integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== - dependencies: - brace-expansion "^5.0.2" - minimatch@10.1.1: version "10.1.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" @@ -4382,6 +4335,13 @@ minimatch@10.1.1: dependencies: "@isaacs/brace-expansion" "^5.0.0" +minimatch@^10.2.2: + version "10.2.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" + integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== + dependencies: + brace-expansion "^5.0.2" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624" @@ -4925,6 +4885,11 @@ proxy-from-env@^1.1.0: resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +proxy-from-env@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz#a7487568adad577cfaaa7e88c49cab3ab3081aba" + integrity sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" From 2d6e401e624b3926ca5439e0dd50c516eac0c9f8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Apr 2026 13:54:38 +0100 Subject: [PATCH 618/640] test: Add additional integration tests (#914) --- .../after-upload-deletion-promise.config.d.ts | 2 + .../after-upload-deletion-promise.config.js | 17 ++ .../fixtures/configs/basic.config.cjs | 6 + .../dont-mess-up-user-code.config.d.ts | 2 + .../configs/dont-mess-up-user-code.config.js | 4 + .../configs/errorhandling.config.d.ts | 2 + .../fixtures/configs/errorhandling.config.js | 13 ++ .../release-value-with-quotes.config.d.ts | 2 + .../release-value-with-quotes.config.js | 6 + .../vite-mpa-extra-modules.config.d.ts | 2 + .../configs/vite-mpa-extra-modules.config.js | 3 + .../after-upload-deletion-promise.config.js | 15 ++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/esbuild/basic-cjs.config.cjs | 12 ++ .../fixtures/esbuild/basic-cjs.test.ts | 45 +++++ .../esbuild/dont-mess-up-user-code.config.js | 13 ++ .../esbuild/dont-mess-up-user-code.test.ts | 46 ++++++ .../fixtures/esbuild/errorhandling.config.js | 15 ++ .../fixtures/esbuild/errorhandling.test.ts | 16 ++ .../esbuild/esbuild-inject-compat.config.js | 17 ++ .../esbuild/esbuild-inject-compat.test.ts | 51 ++++++ .../release-value-with-quotes.config.js | 12 ++ .../esbuild/release-value-with-quotes.test.ts | 8 + .../fixtures/esbuild/src/import.js | 4 + .../fixtures/esbuild/src/index.js | 4 + .../esbuild/src/inject-compat-index.ts | 4 + .../fixtures/esbuild/src/inject.ts | 7 + .../esbuild/src/release-value-with-quotes.js | 3 + .../fixtures/esbuild/utils.ts | 5 +- .../after-upload-deletion-promise.config.ts | 14 ++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/rolldown/basic-cjs.config.cjs | 11 ++ .../fixtures/rolldown/basic-cjs.test.ts | 30 ++++ .../rolldown/dont-mess-up-user-code.config.ts | 12 ++ .../rolldown/dont-mess-up-user-code.test.ts | 31 ++++ .../fixtures/rolldown/errorhandling.config.ts | 15 ++ .../fixtures/rolldown/errorhandling.test.ts | 16 ++ .../release-value-with-quotes.config.ts | 12 ++ .../release-value-with-quotes.test.ts | 8 + .../fixtures/rolldown/src/import.js | 4 + .../fixtures/rolldown/src/index.js | 4 + .../rolldown/src/release-value-with-quotes.js | 3 + .../fixtures/rolldown/utils.ts | 5 +- .../after-upload-deletion-promise.config.js | 14 ++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/rollup3/basic-cjs.config.cjs | 11 ++ .../fixtures/rollup3/basic-cjs.test.ts | 21 +++ .../rollup3/dont-mess-up-user-code.config.js | 12 ++ .../rollup3/dont-mess-up-user-code.test.ts | 22 +++ .../fixtures/rollup3/errorhandling.config.js | 15 ++ .../fixtures/rollup3/errorhandling.test.ts | 16 ++ .../release-value-with-quotes.config.js | 12 ++ .../rollup3/release-value-with-quotes.test.ts | 8 + .../fixtures/rollup3/src/import.js | 4 + .../fixtures/rollup3/src/index.js | 4 + .../rollup3/src/release-value-with-quotes.js | 3 + .../fixtures/rollup3/utils.ts | 5 +- .../after-upload-deletion-promise.config.js | 14 ++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/rollup4/basic-cjs.config.cjs | 11 ++ .../fixtures/rollup4/basic-cjs.test.ts | 21 +++ .../rollup4/dont-mess-up-user-code.config.js | 12 ++ .../rollup4/dont-mess-up-user-code.test.ts | 22 +++ .../fixtures/rollup4/errorhandling.config.js | 15 ++ .../fixtures/rollup4/errorhandling.test.ts | 16 ++ .../release-value-with-quotes.config.js | 12 ++ .../rollup4/release-value-with-quotes.test.ts | 8 + .../fixtures/rollup4/src/import.js | 4 + .../fixtures/rollup4/src/index.js | 4 + .../rollup4/src/release-value-with-quotes.js | 3 + .../fixtures/rollup4/utils.ts | 5 +- .../integration-tests-next/fixtures/utils.ts | 154 ++++++++++++------ .../after-upload-deletion-promise.config.ts | 20 +++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/vite4/basic-cjs.config.cjs | 17 ++ .../fixtures/vite4/basic-cjs.test.ts | 29 ++++ .../vite4/dont-mess-up-user-code.config.ts | 18 ++ .../vite4/dont-mess-up-user-code.test.ts | 28 ++++ .../fixtures/vite4/errorhandling.config.ts | 21 +++ .../fixtures/vite4/errorhandling.test.ts | 16 ++ .../vite4/release-value-with-quotes.config.ts | 17 ++ .../vite4/release-value-with-quotes.test.ts | 8 + .../fixtures/vite4/src/import.js | 4 + .../fixtures/vite4/src/index.js | 4 + .../vite4/src/release-value-with-quotes.js | 3 + .../fixtures/vite4/src/shared-module.js | 10 ++ .../fixtures/vite4/src/vite-mpa-index.html | 11 ++ .../fixtures/vite4/src/vite-mpa-page1.html | 11 ++ .../fixtures/vite4/src/vite-mpa-page2.html | 11 ++ .../fixtures/vite4/utils.ts | 5 +- .../vite4/vite-mpa-extra-modules.config.ts | 24 +++ .../vite4/vite-mpa-extra-modules.test.ts | 94 +++++++++++ .../after-upload-deletion-promise.config.ts | 20 +++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/vite7/basic-cjs.config.cjs | 17 ++ .../fixtures/vite7/basic-cjs.test.ts | 29 ++++ .../vite7/dont-mess-up-user-code.config.ts | 18 ++ .../vite7/dont-mess-up-user-code.test.ts | 28 ++++ .../fixtures/vite7/errorhandling.config.ts | 21 +++ .../fixtures/vite7/errorhandling.test.ts | 16 ++ .../vite7/release-value-with-quotes.config.ts | 17 ++ .../vite7/release-value-with-quotes.test.ts | 8 + .../fixtures/vite7/src/import.js | 4 + .../fixtures/vite7/src/index.js | 4 + .../vite7/src/release-value-with-quotes.js | 3 + .../fixtures/vite7/src/shared-module.js | 10 ++ .../fixtures/vite7/src/vite-mpa-index.html | 11 ++ .../fixtures/vite7/src/vite-mpa-page1.html | 11 ++ .../fixtures/vite7/src/vite-mpa-page2.html | 11 ++ .../fixtures/vite7/utils.ts | 5 +- .../vite7/vite-mpa-extra-modules.config.ts | 24 +++ .../vite7/vite-mpa-extra-modules.test.ts | 94 +++++++++++ .../after-upload-deletion-promise.config.ts | 20 +++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/vite8/basic-cjs.config.cjs | 17 ++ .../fixtures/vite8/basic-cjs.test.ts | 29 ++++ .../vite8/dont-mess-up-user-code.config.ts | 18 ++ .../vite8/dont-mess-up-user-code.test.ts | 28 ++++ .../fixtures/vite8/errorhandling.config.ts | 21 +++ .../fixtures/vite8/errorhandling.test.ts | 16 ++ .../vite8/release-value-with-quotes.config.ts | 17 ++ .../vite8/release-value-with-quotes.test.ts | 8 + .../fixtures/vite8/src/import.js | 4 + .../fixtures/vite8/src/index.js | 4 + .../vite8/src/release-value-with-quotes.js | 3 + .../fixtures/vite8/src/shared-module.js | 10 ++ .../fixtures/vite8/src/vite-mpa-index.html | 11 ++ .../fixtures/vite8/src/vite-mpa-page1.html | 11 ++ .../fixtures/vite8/src/vite-mpa-page2.html | 11 ++ .../fixtures/vite8/utils.ts | 5 +- .../vite8/vite-mpa-extra-modules.config.ts | 24 +++ .../vite8/vite-mpa-extra-modules.test.ts | 94 +++++++++++ .../after-upload-deletion-promise.config.js | 20 +++ .../after-upload-deletion-promise.test.ts | 16 ++ .../fixtures/webpack5/basic-cjs.config.cjs | 17 ++ .../fixtures/webpack5/basic-cjs.test.ts | 26 +++ .../fixtures/webpack5/errorhandling.config.js | 21 +++ .../fixtures/webpack5/errorhandling.test.ts | 16 ++ .../release-value-with-quotes.config.js | 17 ++ .../release-value-with-quotes.test.ts | 8 + .../webpack5/src/release-value-with-quotes.js | 3 + .../fixtures/webpack5/utils.ts | 5 +- 142 files changed, 2206 insertions(+), 57 deletions(-) create mode 100644 packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/basic.config.cjs create mode 100644 packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/errorhandling.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js create mode 100644 packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts create mode 100644 packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/import.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/index.js create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/inject.ts create mode 100644 packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/import.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/index.js create mode 100644 packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/import.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/index.js create mode 100644 packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/import.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/index.js create mode 100644 packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/src/import.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/index.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/shared-module.js create mode 100644 packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html create mode 100644 packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html create mode 100644 packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html create mode 100644 packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/src/import.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/index.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/shared-module.js create mode 100644 packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html create mode 100644 packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html create mode 100644 packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html create mode 100644 packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/src/import.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/index.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/shared-module.js create mode 100644 packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html create mode 100644 packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html create mode 100644 packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html create mode 100644 packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts create mode 100644 packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs create mode 100644 packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js create mode 100644 packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts create mode 100644 packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts b/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts new file mode 100644 index 000000000000..d8036dba640a --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare function getSentryConfig(outDir: string): SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js b/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js new file mode 100644 index 000000000000..a165efa18482 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js @@ -0,0 +1,17 @@ +// Config that uses a Promise for filesToDeleteAfterUpload +// This tests that the plugin can handle async file deletion patterns +export function getSentryConfig(outDir) { + const fileDeletionPromise = new Promise((resolve) => { + setTimeout(() => { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + resolve([`${outDir}/basic.js.map`]); + }, 100); + }); + + return { + telemetry: false, + sourcemaps: { + filesToDeleteAfterUpload: fileDeletionPromise, + }, + }; +} diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.cjs b/packages/integration-tests-next/fixtures/configs/basic.config.cjs new file mode 100644 index 000000000000..3e4aac9eb97d --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/basic.config.cjs @@ -0,0 +1,6 @@ +exports.sentryConfig = { + telemetry: false, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", +}; diff --git a/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts b/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js b/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js new file mode 100644 index 000000000000..615bdc33b044 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js @@ -0,0 +1,4 @@ +export const sentryConfig = { + telemetry: false, + release: { name: "I am release!", create: false }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts b/packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts new file mode 100644 index 000000000000..81563911c16d --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare function getErrorHandlingConfig(port: string): SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/errorhandling.config.js b/packages/integration-tests-next/fixtures/configs/errorhandling.config.js new file mode 100644 index 000000000000..d5b3f5648d07 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/errorhandling.config.js @@ -0,0 +1,13 @@ +export function getErrorHandlingConfig(port) { + return { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + url: `http://localhost:${port}`, + authToken: "fake-auth", + org: "fake-org", + project: "fake-project", + release: { + name: "1.0.0", + }, + debug: true, + }; +} diff --git a/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts b/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js b/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js new file mode 100644 index 000000000000..95fd62fd0ae2 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js @@ -0,0 +1,6 @@ +export const sentryConfig = { + telemetry: false, + release: { + name: 'i am a dangerous release value because I contain a "', + }, +}; diff --git a/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts b/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts new file mode 100644 index 000000000000..f739482fd774 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts @@ -0,0 +1,2 @@ +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js b/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js new file mode 100644 index 000000000000..8891d92b0722 --- /dev/null +++ b/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js @@ -0,0 +1,3 @@ +export const sentryConfig = { + telemetry: false, +}; diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js new file mode 100644 index 000000000000..f67f4059c5a0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js @@ -0,0 +1,15 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "./out/after-upload-deletion-promise"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: `${outDir}/basic.js`, + minify: false, + format: "iife", + sourcemap: true, + plugins: [sentryEsbuildPlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs new file mode 100644 index 000000000000..60e49b8b6fcb --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs @@ -0,0 +1,12 @@ +const esbuild = require("esbuild"); +const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); +const { sentryConfig } = require("../configs/basic.config.cjs"); + +esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/basic-cjs/basic.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts new file mode 100644 index 000000000000..cc4449e10efe --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts @@ -0,0 +1,45 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/basic.js + console.log("hello world"); + + // src/basic.js?sentryDebugIdProxy=true + var basic_default = void 0; + })(); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js b/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js new file mode 100644 index 000000000000..e0375d7d8887 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js @@ -0,0 +1,13 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +await esbuild.build({ + entryPoints: ["./src/index.js"], + bundle: true, + outfile: "./out/dont-mess-up-user-code/index.js", + minify: false, + format: "iife", + sourcemap: true, + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..571aad51c5a7 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts @@ -0,0 +1,46 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "(() => { + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/import.js + console.log("I am import!"); + + // src/index.js + console.log("I am index!"); + + // src/index.js?sentryDebugIdProxy=true + var index_default = void 0; + })(); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"sources":["../../_sentry-injection-stub","sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000","../../src/import.js","../../src/index.js","../../src/index.js"],"sourcesContent":["!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};e.SENTRY_RELEASE={id:\\"I am release!\\"};}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]=\\"00000000-0000-0000-0000-000000000000\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-00000000-0000-0000-0000-000000000000\\");}catch(e){}}();","// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n","\\n import \\"_sentry-debug-id-injection-stub\\";\\n import * as OriginalModule from \\"./src/index.js\\";\\n export default OriginalModule.default;\\n export * from \\"./src/index.js\\";"],"mappings":";;AAAA,IAAC,WAAU;AAAC,QAAG;AAAC,UAAI,IAAE,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,aAAW,aAAW,eAAa,OAAO,OAAK,OAAK,CAAC;AAAE,QAAE,iBAAe,EAAC,IAAG,gBAAe;AAAA,IAAE,SAAOA,IAAE;AAAA,IAAC;AAAA,EAAC,GAAE;;;ACAxN,IAAC,WAAU;AAAC,QAAG;AAAC,UAAI,IAAE,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,aAAW,aAAW,eAAa,OAAO,OAAK,OAAK,CAAC;AAAE,UAAI,IAAG,IAAI,EAAE,QAAO;AAAM,YAAI,EAAE,kBAAgB,EAAE,mBAAiB,CAAC,GAAE,EAAE,gBAAgB,CAAC,IAAE,wCAAuC,EAAE,2BAAyB;AAAA,IAAoD,SAAOC,IAAE;AAAA,IAAC;AAAA,EAAC,GAAE;;;ACCnY,UAAQ,IAAI,cAAc;;;ACE1B,UAAQ,IAAI,aAAa;;;ACAX,MAAO,gBAAuB;","names":["e","e"]}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js b/packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js new file mode 100644 index 000000000000..dce81a1a6ba1 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js @@ -0,0 +1,15 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +await esbuild.build({ + entryPoints: ["./src/basic.js"], + bundle: true, + outfile: "./out/errorhandling/basic.js", + minify: false, + format: "cjs", + sourcemap: true, + plugins: [sentryEsbuildPlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts b/packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js b/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js new file mode 100644 index 000000000000..56103b7dd5f3 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js @@ -0,0 +1,17 @@ +import * as esbuild from "esbuild"; +import * as path from "path"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; + +await esbuild.build({ + entryPoints: ["./src/inject-compat-index.ts"], + bundle: true, + outfile: "./out/esbuild-inject-compat/index.js", + inject: [path.resolve("./src/inject.ts")], + minify: false, + format: "iife", + plugins: [ + sentryEsbuildPlugin({ + telemetry: false, + }), + ], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts b/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts new file mode 100644 index 000000000000..dae1cb7b9289 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts @@ -0,0 +1,51 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ readOutputFiles, runBundler, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "(() => { + // src/inject.ts + var process = { + env: { + FOO: "some-injected-value" + } + }; + var global2 = globalThis; + + // _sentry-injection-stub + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + } catch (e2) { + } + })(); + + // sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=00000000-0000-0000-0000-000000000000 + !(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global2 ? global2 : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + + // src/inject-compat-index.ts + console.log(process.env["FOO"]); + + // src/inject-compat-index.ts?sentryDebugIdProxy=true + var inject_compat_index_default = void 0; + })(); + ", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toMatchInlineSnapshot(` + "some-injected-value + " + `); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js b/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js new file mode 100644 index 000000000000..a84ea0d59731 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js @@ -0,0 +1,12 @@ +import * as esbuild from "esbuild"; +import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +await esbuild.build({ + entryPoints: ["./src/release-value-with-quotes.js"], + bundle: true, + outfile: "./out/release-value-with-quotes/bundle.js", + minify: false, + format: "iife", + plugins: [sentryEsbuildPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/import.js b/packages/integration-tests-next/fixtures/esbuild/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/esbuild/src/index.js b/packages/integration-tests-next/fixtures/esbuild/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts b/packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts new file mode 100644 index 000000000000..25401bb5c6e1 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts @@ -0,0 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore just a test file +// eslint-disable-next-line no-console +console.log(process.env["FOO"]); diff --git a/packages/integration-tests-next/fixtures/esbuild/src/inject.ts b/packages/integration-tests-next/fixtures/esbuild/src/inject.ts new file mode 100644 index 000000000000..089b32ff1122 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/inject.ts @@ -0,0 +1,7 @@ +export const process = { + env: { + FOO: "some-injected-value", + }, +}; +// eslint-disable-next-line no-undef +export const global = globalThis; diff --git a/packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/esbuild/utils.ts b/packages/integration-tests-next/fixtures/esbuild/utils.ts index 39ebbe721f60..73479a8aab3d 100644 --- a/packages/integration-tests-next/fixtures/esbuild/utils.ts +++ b/packages/integration-tests-next/fixtures/esbuild/utils.ts @@ -34,12 +34,15 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.js"; + vitestTest(`esbuild > ${testName}`, (ctx) => callback({ outDir, runBundler: (env) => runBundler( - `node ${testName}.config.js`, + `node ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts new file mode 100644 index 000000000000..af3e2e277b5d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts @@ -0,0 +1,14 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: `${outDir}/basic.js`, + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs new file mode 100644 index 000000000000..18bef7859c56 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs @@ -0,0 +1,11 @@ +const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { defineConfig } = require("rolldown"); +const { sentryConfig } = require("../configs/basic.config.js"); + +module.exports = defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-cjs/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts new file mode 100644 index 000000000000..ef26f379ba3b --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts @@ -0,0 +1,30 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} + })(); + console.log("hello world"); + //#endregion + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts b/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts new file mode 100644 index 000000000000..53878c72ed53 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + input: "src/index.js", + output: { + file: "out/dont-mess-up-user-code/index.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..08a0afffca51 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts @@ -0,0 +1,31 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "//#region src/import.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} + })(); + console.log("I am import!"); + //#endregion + //#region src/index.js + console.log("I am index!"); + //#endregion + + //# sourceMappingURL=index.js.map", + "index.js.map": "{"version":3,"file":"index.js","names":[],"sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,eAAe;;;ACE3B,QAAQ,IAAI,cAAc"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts b/packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts new file mode 100644 index 000000000000..76682aad5dd8 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts @@ -0,0 +1,15 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env["FAKE_SENTRY_PORT"] || "9876"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/errorhandling/basic.js", + format: "cjs", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts b/packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts b/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts new file mode 100644 index 000000000000..b7563a57d264 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rolldown"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + input: "src/release-value-with-quotes.js", + output: { + file: "out/release-value-with-quotes/bundle.js", + format: "iife", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/import.js b/packages/integration-tests-next/fixtures/rolldown/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/rolldown/src/index.js b/packages/integration-tests-next/fixtures/rolldown/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts index d858292ec775..6de2f9e69cca 100644 --- a/packages/integration-tests-next/fixtures/rolldown/utils.ts +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -26,6 +26,9 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.ts"; + // Rolldown requires Node 20+ if (NODE_MAJOR_VERSION < 20) { // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -36,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `rolldown --config ${testName}.config.ts`, + `rolldown --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js new file mode 100644 index 000000000000..ce77934a69ae --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js @@ -0,0 +1,14 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: `${outDir}/basic.js`, + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs new file mode 100644 index 000000000000..756fc35040f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs @@ -0,0 +1,11 @@ +const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { defineConfig } = require("rollup"); +const { sentryConfig } = require("../configs/basic.config.cjs"); + +module.exports = defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-cjs/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts new file mode 100644 index 000000000000..1d68d3104370 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js b/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js new file mode 100644 index 000000000000..34a819c8ec9c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + input: "src/index.js", + output: { + file: "out/dont-mess-up-user-code/index.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..42d6d3679b9c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"I am release!"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("I am import!"); + + // eslint-disable-next-line no-console + console.log("I am index!"); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;2aACA,OAAO,CAAC,GAAG,CAAC,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAc,CAAC;;ACC3B,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AACA,OAAO,CAAC,GAAG,CAAC,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAa,CAAC"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js b/packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js new file mode 100644 index 000000000000..c32f6b65508d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js @@ -0,0 +1,15 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/errorhandling/basic.js", + format: "cjs", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts b/packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js b/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js new file mode 100644 index 000000000000..6c9d13e6ca37 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + input: "src/release-value-with-quotes.js", + output: { + file: "out/release-value-with-quotes/bundle.js", + format: "iife", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/import.js b/packages/integration-tests-next/fixtures/rollup3/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/rollup3/src/index.js b/packages/integration-tests-next/fixtures/rollup3/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/rollup3/utils.ts b/packages/integration-tests-next/fixtures/rollup3/utils.ts index 6da0009dc420..0893f70ec781 100644 --- a/packages/integration-tests-next/fixtures/rollup3/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup3/utils.ts @@ -25,12 +25,15 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.js"; + vitestTest(`rollup v3 > ${testName}`, (ctx) => callback({ outDir, runBundler: (env) => runBundler( - `rollup --config ${testName}.config.js`, + `rollup --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js new file mode 100644 index 000000000000..ce77934a69ae --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js @@ -0,0 +1,14 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: `${outDir}/basic.js`, + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs new file mode 100644 index 000000000000..756fc35040f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs @@ -0,0 +1,11 @@ +const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { defineConfig } = require("rollup"); +const { sentryConfig } = require("../configs/basic.config.cjs"); + +module.exports = defineConfig({ + input: "src/basic.js", + output: { + file: "out/basic-cjs/basic.js", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts new file mode 100644 index 000000000000..1d68d3104370 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts @@ -0,0 +1,21 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js b/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js new file mode 100644 index 000000000000..34a819c8ec9c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + input: "src/index.js", + output: { + file: "out/dont-mess-up-user-code/index.js", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..42d6d3679b9c --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts @@ -0,0 +1,22 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "// eslint-disable-next-line no-console + !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"I am release!"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("I am import!"); + + // eslint-disable-next-line no-console + console.log("I am index!"); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":"AAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;2aACA,OAAO,CAAC,GAAG,CAAC,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAc,CAAC;;ACC3B,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AACA,OAAO,CAAC,GAAG,CAAC,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAa,CAAC"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js b/packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js new file mode 100644 index 000000000000..c32f6b65508d --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js @@ -0,0 +1,15 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default defineConfig({ + input: "src/basic.js", + output: { + file: "out/errorhandling/basic.js", + format: "cjs", + sourcemap: true, + }, + plugins: [sentryRollupPlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts b/packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js b/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js new file mode 100644 index 000000000000..6c9d13e6ca37 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js @@ -0,0 +1,12 @@ +import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { defineConfig } from "rollup"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + input: "src/release-value-with-quotes.js", + output: { + file: "out/release-value-with-quotes/bundle.js", + format: "iife", + }, + plugins: [sentryRollupPlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/import.js b/packages/integration-tests-next/fixtures/rollup4/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/rollup4/src/index.js b/packages/integration-tests-next/fixtures/rollup4/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/rollup4/utils.ts b/packages/integration-tests-next/fixtures/rollup4/utils.ts index 2ad6dd0de2dc..101a278febff 100644 --- a/packages/integration-tests-next/fixtures/rollup4/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup4/utils.ts @@ -25,12 +25,15 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.js"; + vitestTest(`rollup v4 > ${testName}`, (ctx) => callback({ outDir, runBundler: (env) => runBundler( - `rollup --config ${testName}.config.js`, + `rollup --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index a6b2500a6073..883f25c50a2f 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -26,61 +26,70 @@ export function readAllFiles( customReplacer?: (content: string) => string ): Record { const files: Record = {}; - const entries = readdirSync(directory); - - for (const entry of entries) { - const fullPath = join(directory, entry); - const stat = statSync(fullPath); - - if (stat.isFile()) { - let contents = readFileSync(fullPath, "utf-8"); - // We replace the current SHA with a placeholder to make snapshots deterministic - contents = contents - .replaceAll(CURRENT_SHA, "CURRENT_SHA") - .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`) - .replaceAll(/"nodeVersion": \d+/g, `"nodeVersion":"NODE_VERSION"`) - .replaceAll(/nodeVersion:\d+/g, `nodeVersion:"NODE_VERSION"`) - .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`); - - if (customReplacer) { - contents = customReplacer(contents); - } - // Normalize Windows stuff in .map paths - if (entry.endsWith(".map")) { - const map = JSON.parse(contents) as SourceMap; - map.sources = map.sources.map((c) => c.replace(/\\/g, "/")); - map.sourcesContent = map.sourcesContent.map((c) => c.replace(/\r\n/g, "\n")); - contents = JSON.stringify(map); - } else if (entry === "sentry-cli-mock.json") { - // Remove the temporary directory path too - contents = contents.replace( - /"[^"]+sentry-bundler-plugin-upload.+?",/g, - '"sentry-bundler-plugin-upload-path",' - ); - } else if (entry === "sentry-telemetry.json") { - // Remove the temporary directory path too + function readDirRecursive(currentDir: string, relativePath = ""): void { + const entries = readdirSync(currentDir); + + for (const entry of entries) { + const fullPath = join(currentDir, entry); + const stat = statSync(fullPath); + const relativeFilePath = relativePath ? join(relativePath, entry) : entry; + + if (stat.isDirectory()) { + // Recursively read subdirectories + readDirRecursive(fullPath, relativeFilePath); + } else if (stat.isFile()) { + let contents = readFileSync(fullPath, "utf-8"); + // We replace the current SHA with a placeholder to make snapshots deterministic contents = contents - .replace( - /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/g, - "TIMESTAMP" - ) - .replace(/[a-f0-9]{32}/g, "UUID") - .replace(/"duration":[\d.]+/g, '"duration":DURATION') - .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"'); - } else { - // Normalize Windows line endings for cross-platform snapshots - contents = contents.replace(/\r\n/g, "\n"); - // Normalize debug IDs to make snapshots deterministic across environments - contents = contents.replace( - /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi, - "00000000-0000-0000-0000-000000000000" - ); + .replaceAll(CURRENT_SHA, "CURRENT_SHA") + .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`) + .replaceAll(/"nodeVersion": \d+/g, `"nodeVersion":"NODE_VERSION"`) + .replaceAll(/nodeVersion:\d+/g, `nodeVersion:"NODE_VERSION"`) + .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`); + + if (customReplacer) { + contents = customReplacer(contents); + } + + // Normalize Windows stuff in .map paths + if (entry.endsWith(".map")) { + const map = JSON.parse(contents) as SourceMap; + map.sources = map.sources.map((c) => c.replace(/\\/g, "/")); + map.sourcesContent = map.sourcesContent.map((c) => c.replace(/\r\n/g, "\n")); + contents = JSON.stringify(map); + } else if (entry === "sentry-cli-mock.json") { + // Remove the temporary directory path too + contents = contents.replace( + /"[^"]+sentry-bundler-plugin-upload.+?",/g, + '"sentry-bundler-plugin-upload-path",' + ); + } else if (entry === "sentry-telemetry.json") { + // Remove the temporary directory path too + contents = contents + .replace( + /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/g, + "TIMESTAMP" + ) + .replace(/[a-f0-9]{32}/g, "UUID") + .replace(/"duration":[\d.]+/g, '"duration":DURATION') + .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"'); + } else { + // Normalize Windows line endings for cross-platform snapshots + contents = contents.replace(/\r\n/g, "\n"); + // Normalize debug IDs to make snapshots deterministic across environments + contents = contents.replace( + /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi, + "00000000-0000-0000-0000-000000000000" + ); + } + // Use forward slashes for consistent cross-platform keys + files[relativeFilePath.replace(/\\/g, "/")] = contents; } - files[entry] = contents; } } + readDirRecursive(directory); return files; } @@ -97,3 +106,50 @@ process.on("exit", () => { rmSync(dir, { recursive: true, force: true }); } }); + +/** + * Runs a callback with a fake Sentry server running on an auto-allocated port. + * The server returns 503 errors for all requests. + * Automatically starts and stops the server. + * The allocated port is passed to the callback. + */ +export async function withFakeSentryServer( + callback: (port: string) => void | Promise +): Promise { + const { createServer } = await import("node:http"); + + const server = createServer((req, res) => { + if (DEBUG) { + // eslint-disable-next-line no-console + console.log("[FAKE SENTRY] incoming request", req.url); + } + res.statusCode = 503; + res.end("Error: Sentry unreachable"); + }); + + // Listen on port 0 to get an auto-allocated port + await new Promise((resolve) => { + server.listen(0, () => { + resolve(); + }); + }); + + const address = server.address(); + if (!address || typeof address === "string") { + throw new Error("Failed to get server port"); + } + const port = address.port.toString(); + + if (DEBUG) { + // eslint-disable-next-line no-console + console.log(`[FAKE SENTRY] running on http://localhost:${port}/`); + } + + try { + await callback(port); + } finally { + await new Promise((resolve) => { + server.close(() => resolve()); + }); + } +} diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts new file mode 100644 index 000000000000..92b5107787d0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts @@ -0,0 +1,20 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: outDir, + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs new file mode 100644 index 000000000000..c3b54af7be5f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs @@ -0,0 +1,17 @@ +const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { defineConfig } = require("vite"); +const { sentryConfig } = require("../configs/basic.config.js"); + +module.exports = defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts new file mode 100644 index 000000000000..4b334c167dbb --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts new file mode 100644 index 000000000000..20057f5ac438 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/index.js", + output: { + dir: "out/dont-mess-up-user-code", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..90177fb7b5ba --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("I am import!"); + console.log("I am index!"); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc;ACE1B,QAAQ,IAAI,aAAa;"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts b/packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts new file mode 100644 index 000000000000..974a4857aeb4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/errorhandling", + entryFileNames: "[name].js", + format: "cjs", + }, + }, + }, + plugins: [sentryVitePlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts b/packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts b/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts new file mode 100644 index 000000000000..251613957c4c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + build: { + minify: false, + outDir: "./out/release-value-with-quotes", + rollupOptions: { + input: "./src/release-value-with-quotes.js", + output: { + entryFileNames: "bundle.js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/vite4/src/import.js b/packages/integration-tests-next/fixtures/vite4/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/vite4/src/index.js b/packages/integration-tests-next/fixtures/vite4/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/vite4/src/shared-module.js b/packages/integration-tests-next/fixtures/vite4/src/shared-module.js new file mode 100644 index 000000000000..07182654d2da --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/shared-module.js @@ -0,0 +1,10 @@ +// This is a shared module that is used by multiple HTML pages +export function greet(name) { + // eslint-disable-next-line no-console + console.log(`Hello, ${String(name)}!`); +} + +export const VERSION = "1.0.0"; + +// Side effect: greet on load +greet("World"); diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html new file mode 100644 index 000000000000..b18731ac6fab --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html @@ -0,0 +1,11 @@ + + + + + Index Page + + +

Index Page - No Scripts

+ + + diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html new file mode 100644 index 000000000000..44cb873cef18 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html @@ -0,0 +1,11 @@ + + + + + Page 1 + + +

Page 1 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html new file mode 100644 index 000000000000..6cac57fe9b22 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html @@ -0,0 +1,11 @@ + + + + + Page 2 + + +

Page 2 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite4/utils.ts b/packages/integration-tests-next/fixtures/vite4/utils.ts index 89f7a2a6e18f..fd0b44673b2b 100644 --- a/packages/integration-tests-next/fixtures/vite4/utils.ts +++ b/packages/integration-tests-next/fixtures/vite4/utils.ts @@ -25,12 +25,15 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.ts"; + vitestTest(`Vite v4 > ${testName}`, (ctx) => callback({ outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}.config.ts`, + `vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts new file mode 100644 index 000000000000..d21a38148348 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; +import { resolve } from "node:path"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + outDir: "./out/vite-mpa-extra-modules", + rollupOptions: { + input: { + index: resolve("./src/vite-mpa-index.html"), + page1: resolve("./src/vite-mpa-page1.html"), + page2: resolve("./src/vite-mpa-page2.html"), + }, + output: { + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts new file mode 100644 index 000000000000..0d9b6cb56090 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts @@ -0,0 +1,94 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js.map": "{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}", + "page1.js.map": "{"version":3,"file":"page1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "page2.js.map": "{"version":3,"file":"page2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "shared-module.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + (function polyfill() { + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) return; + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link); + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") continue; + for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); + } + }).observe(document, { + childList: true, + subtree: true + }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; + else fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } + })(); + function greet(name) { + console.log(\`Hello, \${String(name)}!\`); + } + greet("World"); + //# sourceMappingURL=shared-module.js.map + ", + "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", + "src/vite-mpa-index.html": " + + + + Index Page + + +

Index Page - No Scripts

+ + + + ", + "src/vite-mpa-page1.html": " + + + + Page 1 + + + +

Page 1 - With Shared Module

+ + + ", + "src/vite-mpa-page2.html": " + + + + Page 2 + + + +

Page 2 - With Shared Module

+ + + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts new file mode 100644 index 000000000000..92b5107787d0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts @@ -0,0 +1,20 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: outDir, + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs new file mode 100644 index 000000000000..c3b54af7be5f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs @@ -0,0 +1,17 @@ +const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { defineConfig } = require("vite"); +const { sentryConfig } = require("../configs/basic.config.js"); + +module.exports = defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts new file mode 100644 index 000000000000..4b334c167dbb --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts b/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts new file mode 100644 index 000000000000..20057f5ac438 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/index.js", + output: { + dir: "out/dont-mess-up-user-code", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..90177fb7b5ba --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("I am import!"); + console.log("I am index!"); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc;ACE1B,QAAQ,IAAI,aAAa;"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts b/packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts new file mode 100644 index 000000000000..974a4857aeb4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/errorhandling", + entryFileNames: "[name].js", + format: "cjs", + }, + }, + }, + plugins: [sentryVitePlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts b/packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts b/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts new file mode 100644 index 000000000000..251613957c4c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + build: { + minify: false, + outDir: "./out/release-value-with-quotes", + rollupOptions: { + input: "./src/release-value-with-quotes.js", + output: { + entryFileNames: "bundle.js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/vite7/src/import.js b/packages/integration-tests-next/fixtures/vite7/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/vite7/src/index.js b/packages/integration-tests-next/fixtures/vite7/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/vite7/src/shared-module.js b/packages/integration-tests-next/fixtures/vite7/src/shared-module.js new file mode 100644 index 000000000000..07182654d2da --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/shared-module.js @@ -0,0 +1,10 @@ +// This is a shared module that is used by multiple HTML pages +export function greet(name) { + // eslint-disable-next-line no-console + console.log(`Hello, ${String(name)}!`); +} + +export const VERSION = "1.0.0"; + +// Side effect: greet on load +greet("World"); diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html new file mode 100644 index 000000000000..b18731ac6fab --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html @@ -0,0 +1,11 @@ + + + + + Index Page + + +

Index Page - No Scripts

+ + + diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html new file mode 100644 index 000000000000..44cb873cef18 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html @@ -0,0 +1,11 @@ + + + + + Page 1 + + +

Page 1 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html new file mode 100644 index 000000000000..6cac57fe9b22 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html @@ -0,0 +1,11 @@ + + + + + Page 2 + + +

Page 2 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite7/utils.ts b/packages/integration-tests-next/fixtures/vite7/utils.ts index 0990f4001064..6a06244fbadd 100644 --- a/packages/integration-tests-next/fixtures/vite7/utils.ts +++ b/packages/integration-tests-next/fixtures/vite7/utils.ts @@ -26,6 +26,9 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.ts"; + // Vite v7 requires Node 20+ if (NODE_MAJOR_VERSION < 20) { // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -36,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}.config.ts`, + `vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts b/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts new file mode 100644 index 000000000000..d21a38148348 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; +import { resolve } from "node:path"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + outDir: "./out/vite-mpa-extra-modules", + rollupOptions: { + input: { + index: resolve("./src/vite-mpa-index.html"), + page1: resolve("./src/vite-mpa-page1.html"), + page2: resolve("./src/vite-mpa-page2.html"), + }, + output: { + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts b/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts new file mode 100644 index 000000000000..0d9b6cb56090 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts @@ -0,0 +1,94 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js.map": "{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}", + "page1.js.map": "{"version":3,"file":"page1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "page2.js.map": "{"version":3,"file":"page2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "shared-module.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + (function polyfill() { + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) return; + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link); + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") continue; + for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); + } + }).observe(document, { + childList: true, + subtree: true + }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; + else fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } + })(); + function greet(name) { + console.log(\`Hello, \${String(name)}!\`); + } + greet("World"); + //# sourceMappingURL=shared-module.js.map + ", + "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", + "src/vite-mpa-index.html": " + + + + Index Page + + +

Index Page - No Scripts

+ + + + ", + "src/vite-mpa-page1.html": " + + + + Page 1 + + + +

Page 1 - With Shared Module

+ + + ", + "src/vite-mpa-page2.html": " + + + + Page 2 + + + +

Page 2 - With Shared Module

+ + + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts new file mode 100644 index 000000000000..92b5107787d0 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts @@ -0,0 +1,20 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; + +const outDir = "out/after-upload-deletion-promise"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: outDir, + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(getSentryConfig(outDir))], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs new file mode 100644 index 000000000000..c3b54af7be5f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs @@ -0,0 +1,17 @@ +const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { defineConfig } = require("vite"); +const { sentryConfig } = require("../configs/basic.config.js"); + +module.exports = defineConfig({ + build: { + minify: false, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/basic-cjs", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts new file mode 100644 index 000000000000..4b334c167dbb --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts @@ -0,0 +1,29 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("hello world"); + ", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts new file mode 100644 index 000000000000..20057f5ac438 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts @@ -0,0 +1,18 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/index.js", + output: { + dir: "out/dont-mess-up-user-code", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts new file mode 100644 index 000000000000..90177fb7b5ba --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts @@ -0,0 +1,28 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + console.log("I am import!"); + console.log("I am index!"); + //# sourceMappingURL=index.js.map + ", + "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc;ACE1B,QAAQ,IAAI,aAAa;"}", + } + `); + + const output = runFileInNode("index.js"); + expect(output).toContain("I am import!"); + expect(output).toContain("I am index!"); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts b/packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts new file mode 100644 index 000000000000..974a4857aeb4 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts @@ -0,0 +1,21 @@ +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { defineConfig } from "vite"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + rollupOptions: { + input: "src/basic.js", + output: { + dir: "out/errorhandling", + entryFileNames: "[name].js", + format: "cjs", + }, + }, + }, + plugins: [sentryVitePlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts b/packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts b/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts new file mode 100644 index 000000000000..251613957c4c --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; + +export default defineConfig({ + build: { + minify: false, + outDir: "./out/release-value-with-quotes", + rollupOptions: { + input: "./src/release-value-with-quotes.js", + output: { + entryFileNames: "bundle.js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/vite8/src/import.js b/packages/integration-tests-next/fixtures/vite8/src/import.js new file mode 100644 index 000000000000..733d5d48f137 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/import.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-console +console.log("I am import!"); + +export {}; diff --git a/packages/integration-tests-next/fixtures/vite8/src/index.js b/packages/integration-tests-next/fixtures/vite8/src/index.js new file mode 100644 index 000000000000..719d8428cac6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/index.js @@ -0,0 +1,4 @@ +import "./import"; + +// eslint-disable-next-line no-console +console.log("I am index!"); diff --git a/packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/vite8/src/shared-module.js b/packages/integration-tests-next/fixtures/vite8/src/shared-module.js new file mode 100644 index 000000000000..07182654d2da --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/shared-module.js @@ -0,0 +1,10 @@ +// This is a shared module that is used by multiple HTML pages +export function greet(name) { + // eslint-disable-next-line no-console + console.log(`Hello, ${String(name)}!`); +} + +export const VERSION = "1.0.0"; + +// Side effect: greet on load +greet("World"); diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html new file mode 100644 index 000000000000..b18731ac6fab --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html @@ -0,0 +1,11 @@ + + + + + Index Page + + +

Index Page - No Scripts

+ + + diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html new file mode 100644 index 000000000000..44cb873cef18 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html @@ -0,0 +1,11 @@ + + + + + Page 1 + + +

Page 1 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html new file mode 100644 index 000000000000..6cac57fe9b22 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html @@ -0,0 +1,11 @@ + + + + + Page 2 + + +

Page 2 - With Shared Module

+ + + diff --git a/packages/integration-tests-next/fixtures/vite8/utils.ts b/packages/integration-tests-next/fixtures/vite8/utils.ts index 911fc7ccbf6d..271579bb2997 100644 --- a/packages/integration-tests-next/fixtures/vite8/utils.ts +++ b/packages/integration-tests-next/fixtures/vite8/utils.ts @@ -26,6 +26,9 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.ts"; + // Vite v8 requires Node 20+ if (NODE_MAJOR_VERSION < 20) { // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -36,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}.config.ts`, + `vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts new file mode 100644 index 000000000000..d21a38148348 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; +import { resolve } from "node:path"; + +export default defineConfig({ + build: { + minify: false, + sourcemap: true, + outDir: "./out/vite-mpa-extra-modules", + rollupOptions: { + input: { + index: resolve("./src/vite-mpa-index.html"), + page1: resolve("./src/vite-mpa-page1.html"), + page2: resolve("./src/vite-mpa-page2.html"), + }, + output: { + chunkFileNames: "[name].js", + entryFileNames: "[name].js", + }, + }, + }, + plugins: [sentryVitePlugin(sentryConfig)], +}); diff --git a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts new file mode 100644 index 000000000000..0d9b6cb56090 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts @@ -0,0 +1,94 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "index.js.map": "{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}", + "page1.js.map": "{"version":3,"file":"page1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "page2.js.map": "{"version":3,"file":"page2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", + "shared-module.js": "!(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e2) { + } + })(); + (function polyfill() { + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) return; + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link); + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") continue; + for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); + } + }).observe(document, { + childList: true, + subtree: true + }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; + else fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } + })(); + function greet(name) { + console.log(\`Hello, \${String(name)}!\`); + } + greet("World"); + //# sourceMappingURL=shared-module.js.map + ", + "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", + "src/vite-mpa-index.html": " + + + + Index Page + + +

Index Page - No Scripts

+ + + + ", + "src/vite-mpa-page1.html": " + + + + Page 1 + + + +

Page 1 - With Shared Module

+ + + ", + "src/vite-mpa-page2.html": " + + + + Page 2 + + + +

Page 2 - With Shared Module

+ + + ", + } + `); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js new file mode 100644 index 000000000000..4d2cef6624ac --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js @@ -0,0 +1,20 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; +import { resolve } from "node:path"; + +const outDir = "./out/after-upload-deletion-promise"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve(outDir), + filename: "basic.js", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(getSentryConfig(outDir))], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts new file mode 100644 index 000000000000..92c6bd553f5a --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { existsSync } from "node:fs"; +import { join } from "node:path"; + +test(import.meta.url, ({ runBundler, outDir, runFileInNode }) => { + runBundler(); + + // Verify the JS file exists and works + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); + + // Verify the sourcemap was deleted (by the Promise) + const sourcemapPath = join(outDir, "basic.js.map"); + expect(existsSync(sourcemapPath)).toBe(false); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs b/packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs new file mode 100644 index 000000000000..07bf24061485 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs @@ -0,0 +1,17 @@ +const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); +const { sentryConfig } = require("../configs/basic.config.cjs"); +const { resolve } = require("node:path"); + +module.exports = { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/basic-cjs"), + filename: "basic.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts new file mode 100644 index 000000000000..baa396d20e70 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts @@ -0,0 +1,26 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { + runBundler(); + expect(readOutputFiles()).toMatchInlineSnapshot(` + { + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); + /******/ (() => { // webpackBootstrap + /******/ "use strict"; + // eslint-disable-next-line no-console + console.log("hello world"); + + /******/ })() + ;", + "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], + ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], + ["releases","finalize","CURRENT_SHA"], + ["sourcemaps","upload","-p","fake-project","--release","CURRENT_SHA","sentry-bundler-plugin-upload-path","--ignore","node_modules","--no-rewrite"], + ", + } + `); + + const output = runFileInNode("basic.js"); + expect(output).toBe("hello world\n"); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js b/packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js new file mode 100644 index 000000000000..c3b47736ddfb --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js @@ -0,0 +1,21 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; +import { resolve } from "node:path"; + +const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; + +export default { + cache: false, + entry: "./src/basic.js", + output: { + path: resolve("./out/errorhandling"), + filename: "basic.js", + libraryTarget: "commonjs2", + }, + devtool: "source-map", + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(getErrorHandlingConfig(FAKE_SENTRY_PORT))], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts b/packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts new file mode 100644 index 000000000000..f2672a372553 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts @@ -0,0 +1,16 @@ +import { expect } from "vitest"; +import { test } from "./utils"; +import { withFakeSentryServer } from "../utils"; + +test(import.meta.url, async ({ runBundler }) => { + await withFakeSentryServer((port) => { + // Run bundler with fake server - should succeed despite server errors + runBundler({ + FAKE_SENTRY_PORT: port, + SENTRY_HTTP_MAX_RETRIES: "1", // Only retry once to avoid timeout + }); + + // If we get here, the build succeeded (didn't throw) + expect(true).toBe(true); + }); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js b/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js new file mode 100644 index 000000000000..1b5374b5591e --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js @@ -0,0 +1,17 @@ +import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; +import { resolve } from "node:path"; + +export default { + cache: false, + entry: "./src/release-value-with-quotes.js", + output: { + path: resolve("./out/release-value-with-quotes"), + filename: "bundle.js", + }, + optimization: { + minimize: false, + }, + mode: "production", + plugins: [sentryWebpackPlugin(sentryConfig)], +}; diff --git a/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts b/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts new file mode 100644 index 000000000000..314a41b865f6 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts @@ -0,0 +1,8 @@ +import { expect } from "vitest"; +import { test } from "./utils"; + +test(import.meta.url, ({ runBundler, runFileInNode }) => { + runBundler(); + const output = runFileInNode("bundle.js"); + expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); +}); diff --git a/packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js b/packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js new file mode 100644 index 000000000000..aa73bfa8be00 --- /dev/null +++ b/packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js @@ -0,0 +1,3 @@ +// Simply output the metadata to the console so it can be checked in a test +// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access +console.log(JSON.stringify(global.SENTRY_RELEASE.id)); diff --git a/packages/integration-tests-next/fixtures/webpack5/utils.ts b/packages/integration-tests-next/fixtures/webpack5/utils.ts index 010edbb0fc1d..00a7b04b6d11 100644 --- a/packages/integration-tests-next/fixtures/webpack5/utils.ts +++ b/packages/integration-tests-next/fixtures/webpack5/utils.ts @@ -25,12 +25,15 @@ export function test(url: string, callback: TestCallback) { // Clear the output directory before running the test rmSync(outDir, { recursive: true, force: true }); + // Detect CJS config files by test name suffix + const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.js"; + vitestTest(`webpack v5 > ${testName}`, (ctx) => callback({ outDir, runBundler: (env) => runBundler( - `pnpm webpack --config ${testName}.config.js`, + `pnpm webpack --config ${testName}${configExt}`, { cwd, env: { From ae53f55f99de93b00f8717fce33f55b3c35717a9 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 21 Apr 2026 16:58:55 +0200 Subject: [PATCH 619/640] chore(ci): Disable changelog preview (#917) rm changelog preview --- .github/workflows/changelog-preview.yml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .github/workflows/changelog-preview.yml diff --git a/.github/workflows/changelog-preview.yml b/.github/workflows/changelog-preview.yml deleted file mode 100644 index b55f6100ad12..000000000000 --- a/.github/workflows/changelog-preview.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Changelog Preview -on: - pull_request_target: - types: - - opened - - synchronize - - reopened - - edited - - labeled - - unlabeled -permissions: - contents: write - pull-requests: write - statuses: write - -jobs: - changelog-preview: - uses: getsentry/craft/.github/workflows/changelog-preview.yml@f4889d04564e47311038ecb6b910fef6b6cf1363 # v2 - secrets: inherit From b7d8ea6333f94e7b51aaec96ae57251f2f8b4ff4 Mon Sep 17 00:00:00 2001 From: Andrei <168741329+andreiborza@users.noreply.github.com> Date: Tue, 28 Apr 2026 17:29:33 +0900 Subject: [PATCH 620/640] fix(webpack): Await source map deletion before signaling build completion (#918) * fix(webpack): Await source map deletion before signaling build completion This PR reworks the webpack plugin to await the source map deletion before moving on. This matches the behavior of the rollup and esbuild plugins. * Clean up code structure to use try/catch/await --- packages/webpack-plugin/src/webpack4and5.ts | 24 +++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index cd6ee3c3a649..09f331b6a9df 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -277,13 +277,13 @@ export function sentryWebpackPluginFactory({ compiler.hooks.afterEmit.tapAsync( "sentry-webpack-plugin", - (compilation: WebpackCompilation, callback: () => void) => { + (compilation: WebpackCompilation, callback: (err?: Error) => void) => { const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); - void sentryBuildPluginManager - .createRelease() - .then(async () => { + const run = async (): Promise => { + try { + await sentryBuildPluginManager.createRelease(); if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { const outputPath = compilation.outputOptions.path ?? path.resolve(); const buildArtifacts = Object.keys(compilation.assets).map((asset) => @@ -291,14 +291,16 @@ export function sentryWebpackPluginFactory({ ); await upload(buildArtifacts); } - }) - .then(() => { - callback(); - }) - .finally(() => { + } finally { freeGlobalDependencyOnBuildArtifacts(); - void sentryBuildPluginManager.deleteArtifacts(); - }); + await sentryBuildPluginManager.deleteArtifacts(); + } + }; + + run().then( + () => callback(), + (err: Error) => callback(err) + ); } ); From b1aa6885886856ca817913a923d06ce5a4398dfc Mon Sep 17 00:00:00 2001 From: andreiborza <168741329+andreiborza@users.noreply.github.com> Date: Wed, 29 Apr 2026 06:50:36 +0000 Subject: [PATCH 621/640] release: 5.2.1 --- CHANGELOG.md | 12 ++++++++++++ .../babel-plugin-component-annotate/package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- .../fixtures/esbuild/package.json | 8 ++++---- .../fixtures/rolldown/package.json | 8 ++++---- .../fixtures/rollup3/package.json | 8 ++++---- .../fixtures/rollup4/package.json | 8 ++++---- .../fixtures/vite4/package.json | 10 +++++----- .../fixtures/vite7/package.json | 10 +++++----- .../fixtures/vite8/package.json | 10 +++++----- .../fixtures/webpack5/package.json | 8 ++++---- packages/integration-tests-next/package.json | 14 +++++++------- packages/integration-tests/package.json | 16 ++++++++-------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 +++++----- packages/webpack-plugin/package.json | 8 ++++---- 21 files changed, 91 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cf5ebb3d636..307bb60f5488 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 5.2.1 + +### Bug Fixes 🐛 + +- (webpack) Await source map deletion before signaling build completion by @andreiborza in [#918](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/918) + +### Internal Changes 🔧 + +- (ci) Disable changelog preview by @chargome in [#917](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/917) +- Add additional integration tests by @timfish in [#914](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/914) +- Remove unused e2e tests by @timfish in [#915](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/915) + ## 5.2.0 ### New Features ✨ diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index c5caee415f18..8a6d9f68b207 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "5.2.0", + "version": "5.2.1", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -52,8 +52,8 @@ "devDependencies": { "@babel/core": "7.18.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index ca45113fd6dd..97d3d5109246 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "5.2.0", + "version": "5.2.1", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.2.0", + "@sentry/babel-plugin-component-annotate": "5.2.1", "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index bd54586fa390..335afeab8207 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true, "files": [ diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 049e6f97fb75..952bc85b60ad 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "5.2.0", + "version": "5.2.1", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,11 +48,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.0" + "@sentry/bundler-plugin-core": "5.2.1" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 65a5caee84a5..f3060e2a31ee 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/packages/integration-tests-next/fixtures/esbuild/package.json index 7dba8adbd3a3..79991e019f7f 100644 --- a/packages/integration-tests-next/fixtures/esbuild/package.json +++ b/packages/integration-tests-next/fixtures/esbuild/package.json @@ -5,13 +5,13 @@ "type": "module", "dependencies": { "esbuild": "0.28.0", - "@sentry/esbuild-plugin": "5.2.0" + "@sentry/esbuild-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 005d166d2c1a..8e05e8dbd5ee 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -4,15 +4,15 @@ "private": true, "type": "module", "dependencies": { - "@sentry/rollup-plugin": "5.2.0", + "@sentry/rollup-plugin": "5.2.1", "react": "19.2.4", "rolldown": "1.0.0-rc.10" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index d02ba359c751..0c41f32d6e41 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -8,13 +8,13 @@ "rollup": "3.30.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "15.2.3", - "@sentry/rollup-plugin": "5.2.0" + "@sentry/rollup-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index 670ce8ffe750..4db10769efc6 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -8,13 +8,13 @@ "rollup": "4.59.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "16.0.3", - "@sentry/rollup-plugin": "5.2.0" + "@sentry/rollup-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/packages/integration-tests-next/fixtures/vite4/package.json index 079937e13b16..d228d3b8f269 100644 --- a/packages/integration-tests-next/fixtures/vite4/package.json +++ b/packages/integration-tests-next/fixtures/vite4/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "4.5.14", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.2.0" + "@sentry/vite-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/packages/integration-tests-next/fixtures/vite7/package.json index 3c1d6244a21c..724c5ea2a000 100644 --- a/packages/integration-tests-next/fixtures/vite7/package.json +++ b/packages/integration-tests-next/fixtures/vite7/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "7.3.1", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.2.0" + "@sentry/vite-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/packages/integration-tests-next/fixtures/vite8/package.json index df24ce9a6bc4..9d3d2bbc04ae 100644 --- a/packages/integration-tests-next/fixtures/vite8/package.json +++ b/packages/integration-tests-next/fixtures/vite8/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "8.0.1", "@vitejs/plugin-react": "6.0.1", - "@sentry/vite-plugin": "5.2.0" + "@sentry/vite-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json index b99dc17fa252..5f13904fbcf8 100644 --- a/packages/integration-tests-next/fixtures/webpack5/package.json +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -7,13 +7,13 @@ "webpack": "5.105.4", "webpack-cli": "6.0.1", "@babel/preset-react": "7.23.3", - "@sentry/webpack-plugin": "5.2.0" + "@sentry/webpack-plugin": "5.2.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.0.tgz", - "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.2.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.0.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 60f1aa84a7f8..247b59b1afd6 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests-next", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true, "scripts": { @@ -13,12 +13,12 @@ "clean:deps": "premove node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", - "@sentry/esbuild-plugin": "5.2.0", - "@sentry/rollup-plugin": "5.2.0", - "@sentry/vite-plugin": "5.2.0", - "@sentry/webpack-plugin": "5.2.0" + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry/esbuild-plugin": "5.2.1", + "@sentry/rollup-plugin": "5.2.1", + "@sentry/vite-plugin": "5.2.1", + "@sentry/webpack-plugin": "5.2.1" }, "devDependencies": { "premove": "^4.0.0", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 1bc4dfccacfb..c64d62257799 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true, "scripts": { @@ -19,13 +19,13 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", - "@sentry/bundler-plugin-core": "5.2.0", - "@sentry/esbuild-plugin": "5.2.0", - "@sentry/rollup-plugin": "5.2.0", - "@sentry/vite-plugin": "5.2.0", - "@sentry/webpack-plugin": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry/bundler-plugin-core": "5.2.1", + "@sentry/esbuild-plugin": "5.2.1", + "@sentry/rollup-plugin": "5.2.1", + "@sentry/vite-plugin": "5.2.1", + "@sentry/webpack-plugin": "5.2.1", "@types/react": "^18.2.0", "@vitejs/plugin-react": "^4.2.1", "babel-loader": "^8.0.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 31891ff06d67..8a92e3688c04 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.0", + "@sentry/bundler-plugin-core": "5.2.1", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index b6d54a694dd0..2b17cd941dc9 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "5.2.0", + "version": "5.2.1", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.0", + "@sentry/bundler-plugin-core": "5.2.1", "magic-string": "~0.30.8" }, "peerDependencies": { @@ -61,8 +61,8 @@ } }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index 53dcf7be2a64..d0d84901cb36 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 291a1e8aa076..118d61376bd5 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "5.2.0", + "version": "5.2.1", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.0", - "@sentry/rollup-plugin": "5.2.0" + "@sentry/bundler-plugin-core": "5.2.1", + "@sentry/rollup-plugin": "5.2.1" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@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 a25fea6fdf9d..3ee79be90d59 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "5.2.0", + "version": "5.2.1", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,11 +53,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.0" + "@sentry/bundler-plugin-core": "5.2.1" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.0", + "@sentry-internal/eslint-config": "5.2.1", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", From dea88198875aca711553f4bbd45ee55832b0d9b6 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 4 May 2026 13:06:31 +0200 Subject: [PATCH 622/640] test: Fix telemetry tests to capture all envelopes (#920) --- packages/bundler-plugin-core/src/sentry/transports.ts | 10 ++++++---- .../fixtures/esbuild/telemetry.test.ts | 4 +++- .../fixtures/rolldown/telemetry.test.ts | 4 +++- .../fixtures/rollup3/telemetry.test.ts | 4 +++- .../fixtures/rollup4/telemetry.test.ts | 4 +++- packages/integration-tests-next/fixtures/utils.ts | 6 ++++++ .../fixtures/vite4/telemetry.config.ts | 2 ++ .../fixtures/vite4/telemetry.test.ts | 4 +++- .../fixtures/vite7/telemetry.config.ts | 2 ++ .../fixtures/vite7/telemetry.test.ts | 4 +++- .../fixtures/vite8/telemetry.config.ts | 2 ++ .../fixtures/vite8/telemetry.test.ts | 4 +++- .../fixtures/webpack5/telemetry.test.ts | 4 +++- packages/integration-tests-next/setup.mjs | 2 +- 14 files changed, 43 insertions(+), 13 deletions(-) diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugin-core/src/sentry/transports.ts index 0bcccee524e9..c6ab5f43dc8a 100644 --- a/packages/bundler-plugin-core/src/sentry/transports.ts +++ b/packages/bundler-plugin-core/src/sentry/transports.ts @@ -12,6 +12,8 @@ import type { TransportRequest, TransportRequestExecutor, } from "@sentry/types"; +import { join } from "node:path"; +import { appendFileSync, mkdirSync } from "node:fs"; // Estimated maximum size for reasonable standalone event const GZIP_THRESHOLD = 1024 * 32; @@ -105,6 +107,7 @@ export function makeOptionallyEnabledNodeTransport( ): (options: BaseTransportOptions) => Transport { return (nodeTransportOptions) => { const nodeTransport = makeNodeTransport(nodeTransportOptions); + return { flush: (timeout) => nodeTransport.flush(timeout), send: async (request) => { @@ -120,10 +123,9 @@ export function makeOptionallyEnabledNodeTransport( if (await shouldSendTelemetry) { if (process.env["SENTRY_TEST_OUT_DIR"]) { - // eslint-disable-next-line @typescript-eslint/unbound-method - const { join } = await import("node:path"); - const { appendFileSync } = await import("node:fs"); - const path = join(process.env["SENTRY_TEST_OUT_DIR"], "sentry-telemetry.json"); + const outDir = process.env["SENTRY_TEST_OUT_DIR"]; + mkdirSync(outDir, { recursive: true }); + const path = join(outDir, "sentry-telemetry.json"); appendFileSync(path, JSON.stringify(request) + ",\n"); return { statusCode: 200 }; } diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts index 464d0d47829b..cdd521796dbc 100644 --- a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts @@ -5,7 +5,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"esbuild","bundler-major-version":"28"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", "telemetry.js": "(() => { // _sentry-injection-stub diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts index ebd149c87a8a..f1cc4370048c 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -17,7 +17,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { console.log("hello world"); //#endregion ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts index 1585f17dbe03..3f95d11e52ae 100644 --- a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts @@ -8,7 +8,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { "basic.js": "// eslint-disable-next-line no-console !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts index 1585f17dbe03..667b55a13d49 100644 --- a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts @@ -8,7 +8,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { "basic.js": "// eslint-disable-next-line no-console !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"4"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index 883f25c50a2f..f3dabc3ae2dd 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -72,7 +72,13 @@ export function readAllFiles( "TIMESTAMP" ) .replace(/[a-f0-9]{32}/g, "UUID") + .replace(/"[a-f0-9]{16}"/g, '"SHORT_UUID"') + .replaceAll(process.version, "NODE_VERSION") + .replace(/"ci":false/g, '"ci":true') + .replace(/"platform":".+?"/g, '"platform":"PLATFORM"') .replace(/"duration":[\d.]+/g, '"duration":DURATION') + .replace(/"start_timestamp":[\d.]+/g, '"start_timestamp":START_TIMESTAMP') + .replace(/"timestamp":[\d.]+/g, '"timestamp":TIMESTAMP') .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"'); } else { // Normalize Windows line endings for cross-platform snapshots diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts index c02f3a57b082..dee23957840e 100644 --- a/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts @@ -12,6 +12,8 @@ export default defineConfig({ entryFileNames: "[name].js", }, }, + // We already delete the directory and don't want our telemetry file to be deleted + emptyOutDir: false, }, plugins: [sentryVitePlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts index e41bc2142efd..313815c93b61 100644 --- a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts @@ -16,7 +16,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { })(); console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"4"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts index c02f3a57b082..dee23957840e 100644 --- a/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts @@ -12,6 +12,8 @@ export default defineConfig({ entryFileNames: "[name].js", }, }, + // We already delete the directory and don't want our telemetry file to be deleted + emptyOutDir: false, }, plugins: [sentryVitePlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts index e41bc2142efd..f90b8e9567c1 100644 --- a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts @@ -16,7 +16,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { })(); console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"7"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts index c02f3a57b082..dee23957840e 100644 --- a/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts @@ -12,6 +12,8 @@ export default defineConfig({ entryFileNames: "[name].js", }, }, + // We already delete the directory and don't want our telemetry file to be deleted + emptyOutDir: false, }, plugins: [sentryVitePlugin(sentryConfig)], }); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts index e41bc2142efd..093653dcaa5d 100644 --- a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts @@ -16,7 +16,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { })(); console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"8"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts index afea545d0fe8..fcd6e517307d 100644 --- a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts @@ -13,7 +13,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { /******/ })() ;", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"webpack","bundler-major-version":"5"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/setup.mjs b/packages/integration-tests-next/setup.mjs index c83353b653f2..f20943016bc2 100644 --- a/packages/integration-tests-next/setup.mjs +++ b/packages/integration-tests-next/setup.mjs @@ -27,7 +27,7 @@ for (const dir of directories) { continue; } - execSync("pnpm install", { + execSync("pnpm install --force", { cwd: dir, stdio: "inherit", }); From 1b599cd67a25d82cae3df1c7fb836867406fdd01 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 4 May 2026 13:08:43 +0200 Subject: [PATCH 623/640] test: Ensure correct bundlers are resolved (#921) --- .../fixtures/rolldown/utils.ts | 2 +- .../fixtures/rollup3/utils.ts | 2 +- .../fixtures/rollup4/utils.ts | 2 +- .../integration-tests-next/fixtures/utils.ts | 3 +- .../vite4/after-upload-deletion.test.ts | 4 +- .../fixtures/vite4/application-key.test.ts | 12 +-- .../fixtures/vite4/basic-cjs.test.ts | 4 +- .../vite4/basic-release-disabled.test.ts | 4 +- .../fixtures/vite4/basic-sourcemaps.test.ts | 4 +- .../fixtures/vite4/basic.test.ts | 4 +- .../fixtures/vite4/build-info.test.ts | 4 +- .../vite4/bundle-size-optimizations.test.ts | 4 +- .../component-annotation-disabled.test.ts | 4 +- .../vite4/component-annotation-next.test.ts | 4 +- .../vite4/component-annotation.test.ts | 4 +- .../vite4/dont-mess-up-user-code.test.ts | 4 +- .../fixtures/vite4/module-metadata.test.ts | 12 +-- .../vite4/multiple-entry-points.test.ts | 12 +-- .../fixtures/vite4/query-param.test.ts | 12 +-- .../fixtures/vite4/release-disabled.test.ts | 4 +- .../fixtures/vite4/telemetry.test.ts | 4 +- .../fixtures/vite4/utils.ts | 2 +- .../vite4/vite-mpa-extra-modules.test.ts | 48 +++++++---- .../fixtures/vite7/utils.ts | 2 +- .../vite8/after-upload-deletion.test.ts | 21 ++--- .../fixtures/vite8/application-key.test.ts | 31 +++---- .../fixtures/vite8/basic-cjs.test.ts | 17 ++-- .../vite8/basic-release-disabled.test.ts | 15 ++-- .../fixtures/vite8/basic-sourcemaps.test.ts | 23 ++--- .../fixtures/vite8/basic.test.ts | 17 ++-- .../fixtures/vite8/build-info.test.ts | 31 +++++-- .../vite8/bundle-size-optimizations.test.ts | 35 ++++---- .../component-annotation-disabled.test.ts | 38 ++++++--- .../vite8/component-annotation-next.test.ts | 44 +++++++--- .../vite8/component-annotation.test.ts | 49 ++++++++--- .../fixtures/vite8/debugid-disabled.test.ts | 10 ++- .../vite8/debugids-already-injected.test.ts | 23 ++--- .../vite8/dont-mess-up-user-code.test.ts | 25 +++--- .../fixtures/vite8/module-metadata.test.ts | 34 ++++---- .../vite8/multiple-entry-points.test.ts | 55 ++++++------ .../fixtures/vite8/query-param.test.ts | 61 +++++++------- .../fixtures/vite8/release-disabled.test.ts | 17 ++-- .../fixtures/vite8/telemetry.test.ts | 17 ++-- .../fixtures/vite8/utils.ts | 2 +- .../vite8/vite-mpa-extra-modules.test.ts | 84 +++++++++---------- 45 files changed, 466 insertions(+), 344 deletions(-) diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts index 6de2f9e69cca..914ae398fbab 100644 --- a/packages/integration-tests-next/fixtures/rolldown/utils.ts +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -39,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `rolldown --config ${testName}${configExt}`, + `pnpm rolldown --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/rollup3/utils.ts b/packages/integration-tests-next/fixtures/rollup3/utils.ts index 0893f70ec781..9061171dc442 100644 --- a/packages/integration-tests-next/fixtures/rollup3/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup3/utils.ts @@ -33,7 +33,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `rollup --config ${testName}${configExt}`, + `pnpm rollup --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/rollup4/utils.ts b/packages/integration-tests-next/fixtures/rollup4/utils.ts index 101a278febff..f85039bcf602 100644 --- a/packages/integration-tests-next/fixtures/rollup4/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup4/utils.ts @@ -33,7 +33,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `rollup --config ${testName}${configExt}`, + `pnpm rollup --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index f3dabc3ae2dd..f33fec2090f4 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -46,7 +46,8 @@ export function readAllFiles( .replaceAll(/"nodeVersion":\d+/g, `"nodeVersion":"NODE_VERSION"`) .replaceAll(/"nodeVersion": \d+/g, `"nodeVersion":"NODE_VERSION"`) .replaceAll(/nodeVersion:\d+/g, `nodeVersion:"NODE_VERSION"`) - .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`); + .replaceAll(/nodeVersion: \d+/g, `nodeVersion:"NODE_VERSION"`) + .replaceAll(process.cwd().replace(/\\/g, "/"), ""); if (customReplacer) { contents = customReplacer(contents); diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts index 1345b6fb3e7b..dcb7e717f69f 100644 --- a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); //# sourceMappingURL=basic.js.map ", diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts index 72768296ba91..971a984e7e74 100644 --- a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/application-key.test.ts @@ -5,22 +5,24 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = function(e2) { for (var n2 = 1; n2 < arguments.length; n2++) { var a = arguments[n2]; - if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + if (null != a) + for (var t in a) + a.hasOwnProperty(t) && (e2[t] = a[t]); } return e2; - })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + }({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); var n = new e.Error().stack; n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", } diff --git a/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts index 4b334c167dbb..10e0aad0e5e9 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts index 3f31dcee5a9b..abe9dc12208a 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts @@ -5,14 +5,14 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", } diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts index 89553dea9a3f..423bc333ea17 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); //# sourceMappingURL=basic.js.map ", diff --git a/packages/integration-tests-next/fixtures/vite4/basic.test.ts b/packages/integration-tests-next/fixtures/vite4/basic.test.ts index 4b334c167dbb..10e0aad0e5e9 100644 --- a/packages/integration-tests-next/fixtures/vite4/basic.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/basic.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts index a25f980e70c8..e27bcf881e0b 100644 --- a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/build-info.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "build-information-injection-test" }; @@ -14,7 +14,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", } diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts index ee0a41658dad..c0292d9d8264 100644 --- a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "bundle.js": "!(function() { + "bundle.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log( JSON.stringify({ debug: "b", diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts index 23f18a092d31..d08e2db52ad4 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { + "app.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; function ComponentA() { return /* @__PURE__ */ jsx("span", { children: "Component A" }); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts index f27ee2946afa..13f07b4f1490 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { + "app.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; function ComponentA() { return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", children: "Component A" }); diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts index 1331f9de1e68..d1ff5500914e 100644 --- a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { + "app.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { jsx, jsxs } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"; function ComponentA() { return /* @__PURE__ */ jsx("span", { "data-sentry-component": "ComponentA", "data-sentry-source-file": "component-a.jsx", children: "Component A" }); diff --git a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts index 90177fb7b5ba..014726a3a510 100644 --- a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "index.js": "!(function() { + "index.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "I am release!" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("I am import!"); console.log("I am index!"); //# sourceMappingURL=index.js.map diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts index d807e3d04b30..57bcc9864223 100644 --- a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts @@ -5,22 +5,24 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = function(e2) { for (var n2 = 1; n2 < arguments.length; n2++) { var a = arguments[n2]; - if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); + if (null != a) + for (var t in a) + a.hasOwnProperty(t) && (e2[t] = a[t]); } return e2; - })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); + }({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); var n = new e.Error().stack; n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", } diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts index e3ee93ed40a5..f2738df8a503 100644 --- a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts @@ -5,14 +5,14 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.js": "!(function() { + "common.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); function add(a, b) { return a + b; } @@ -20,25 +20,25 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { add as a }; ", - "entry1.js": "!(function() { + "entry1.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { a as add } from "./common.js"; console.log(add(1, 2)); ", - "entry2.js": "!(function() { + "entry2.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { a as add } from "./common.js"; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts index dbf701028f0c..f31483760d4b 100644 --- a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/query-param.test.ts @@ -10,7 +10,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.js?seP58q4g": "!(function() { + "common.js?seP58q4g": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -18,7 +18,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); function add(a, b) { return a + b; } @@ -26,7 +26,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { add as a }; ", - "entry1.js": "!(function() { + "entry1.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -34,11 +34,11 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { a as add } from "./common.js?seP58q4g"; console.log(add(1, 2)); ", - "entry2.js": "!(function() { + "entry2.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -46,7 +46,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); import { a as add } from "./common.js?seP58q4g"; console.log(add(2, 4)); ", diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts index be2e8688f19a..b8a755e78265 100644 --- a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts index 313815c93b61..4b74c39f58f1 100644 --- a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { + "basic.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -13,7 +13,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); console.log("hello world"); ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], diff --git a/packages/integration-tests-next/fixtures/vite4/utils.ts b/packages/integration-tests-next/fixtures/vite4/utils.ts index fd0b44673b2b..7e3b659c40eb 100644 --- a/packages/integration-tests-next/fixtures/vite4/utils.ts +++ b/packages/integration-tests-next/fixtures/vite4/utils.ts @@ -33,7 +33,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}${configExt}`, + `pnpm vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts index 0d9b6cb56090..148ecbe301c0 100644 --- a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts @@ -8,7 +8,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { "index.js.map": "{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}", "page1.js.map": "{"version":3,"file":"page1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", "page2.js.map": "{"version":3,"file":"page2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", - "shared-module.js": "!(function() { + "shared-module.js": "!function() { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; @@ -16,31 +16,43 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { } - })(); + }(); (function polyfill() { const relList = document.createElement("link").relList; - if (relList && relList.supports && relList.supports("modulepreload")) return; - for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link); + if (relList && relList.supports && relList.supports("modulepreload")) { + return; + } + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { + processPreload(link); + } new MutationObserver((mutations) => { for (const mutation of mutations) { - if (mutation.type !== "childList") continue; - for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); + if (mutation.type !== "childList") { + continue; + } + for (const node of mutation.addedNodes) { + if (node.tagName === "LINK" && node.rel === "modulepreload") + processPreload(node); + } } - }).observe(document, { - childList: true, - subtree: true - }); + }).observe(document, { childList: true, subtree: true }); function getFetchOpts(link) { const fetchOpts = {}; - if (link.integrity) fetchOpts.integrity = link.integrity; - if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; - if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; - else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; - else fetchOpts.credentials = "same-origin"; + if (link.integrity) + fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) + fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") + fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") + fetchOpts.credentials = "omit"; + else + fetchOpts.credentials = "same-origin"; return fetchOpts; } function processPreload(link) { - if (link.ep) return; + if (link.ep) + return; link.ep = true; const fetchOpts = getFetchOpts(link); fetch(link.href, fetchOpts); @@ -52,7 +64,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { greet("World"); //# sourceMappingURL=shared-module.js.map ", - "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", + "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", "src/vite-mpa-index.html": " @@ -74,6 +86,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => {

Page 1 - With Shared Module

+ ", @@ -86,6 +99,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => {

Page 2 - With Shared Module

+ ", diff --git a/packages/integration-tests-next/fixtures/vite7/utils.ts b/packages/integration-tests-next/fixtures/vite7/utils.ts index 6a06244fbadd..1b055a8af030 100644 --- a/packages/integration-tests-next/fixtures/vite7/utils.ts +++ b/packages/integration-tests-next/fixtures/vite7/utils.ts @@ -39,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}${configExt}`, + `pnpm vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts index 1345b6fb3e7b..c0e84898b270 100644 --- a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts @@ -5,18 +5,19 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); - //# sourceMappingURL=basic.js.map - ", + //#endregion + + //# sourceMappingURL=basic.js.map", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts index 72768296ba91..88a7d0a92d9a 100644 --- a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/application-key.test.ts @@ -5,23 +5,24 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { - for (var n2 = 1; n2 < arguments.length; n2++) { - var a = arguments[n2]; - if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); - } - return e2; - })({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = function(e) { + for (var n = 1; n < arguments.length; n++) { + var a = arguments[n]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e[t] = a[t]); + } + return e; + }({}, e._sentryModuleMetadata[new e.Error().stack], { "_sentryBundlerPluginAppKey:1234567890abcdef": true }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts index 4b334c167dbb..ef26f379ba3b 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts @@ -5,16 +5,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts index 3f31dcee5a9b..b39ba31eec49 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts @@ -5,15 +5,16 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts index 89553dea9a3f..11726184aff9 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts @@ -5,19 +5,20 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); - //# sourceMappingURL=basic.js.map - ", - "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;"}", + //#endregion + + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc"}", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/vite8/basic.test.ts b/packages/integration-tests-next/fixtures/vite8/basic.test.ts index 4b334c167dbb..ef26f379ba3b 100644 --- a/packages/integration-tests-next/fixtures/vite8/basic.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/basic.test.ts @@ -5,16 +5,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", "sentry-cli-mock.json": "["releases","new","CURRENT_SHA"], ["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts index 6073c7e914d9..c8f713c0690a 100644 --- a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/build-info.test.ts @@ -5,17 +5,30 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "build-information-injection-test" }; - e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 8 }, "nodeVersion":"NODE_VERSION" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "build-information-injection-test" }; + e.SENTRY_BUILD_INFO = { + "deps": [ + "@sentry/vite-plugin", + "@vitejs/plugin-react", + "react", + "vite" + ], + "depsVersions": { + "react": 19, + "vite": 8 + }, + "nodeVersion":"NODE_VERSION" + }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts index ee0a41658dad..eeb6bf284506 100644 --- a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts @@ -5,25 +5,24 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "bundle.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "bundle.js": "//#region src/bundle.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); - console.log( - JSON.stringify({ - debug: "b", - trace: "b", - replayCanvas: "a", - replayIframe: "a", - replayShadowDom: "a", - replayWorker: "a" - }) - ); + console.log(JSON.stringify({ + debug: "b", + trace: "b", + replayCanvas: "a", + replayIframe: "a", + replayShadowDom: "a", + replayWorker: "a" + })); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts index df95dc2d5c99..6f32107615e6 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts @@ -5,22 +5,40 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); + import { jsxDEV } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-dev-runtime.js"; + //#region src/component-a.jsx + var _jsxFileName$1 = "/fixtures/vite8/src/component-a.jsx"; function ComponentA() { - return /* @__PURE__ */ React.createElement("span", null, "Component A"); + return /* @__PURE__ */ jsxDEV("span", { children: "Component A" }, void 0, false, { + fileName: _jsxFileName$1, + lineNumber: 2, + columnNumber: 10 + }, this); } + //#endregion + //#region src/app.jsx + var _jsxFileName = "/fixtures/vite8/src/app.jsx"; function App() { - return /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement(ComponentA, null), ";"); + return /* @__PURE__ */ jsxDEV("span", { children: [/* @__PURE__ */ jsxDEV(ComponentA, {}, void 0, false, { + fileName: _jsxFileName, + lineNumber: 6, + columnNumber: 7 + }, this), ";"] }, void 0, true, { + fileName: _jsxFileName, + lineNumber: 5, + columnNumber: 5 + }, this); } console.log(App()); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts index e86ad8a5fc7e..ad52e996a9f5 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts @@ -5,22 +5,46 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); + import { jsxDEV } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-dev-runtime.js"; + //#region src/component-a.jsx + var _jsxFileName$1 = "/fixtures/vite8/src/component-a.jsx"; function ComponentA() { - return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "ComponentA" }, "Component A"); + return /* @__PURE__ */ jsxDEV("span", { + "data-sentry-component": "ComponentA", + children: "Component A" + }, void 0, false, { + fileName: _jsxFileName$1, + lineNumber: 2, + columnNumber: 10 + }, this); } + //#endregion + //#region src/app.jsx + var _jsxFileName = "/fixtures/vite8/src/app.jsx"; function App() { - return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "App" }, /* @__PURE__ */ React.createElement(ComponentA, null), ";"); + return /* @__PURE__ */ jsxDEV("span", { + "data-sentry-component": "App", + children: [/* @__PURE__ */ jsxDEV(ComponentA, {}, void 0, false, { + fileName: _jsxFileName, + lineNumber: 4, + columnNumber: 7 + }, this), ";"] + }, void 0, true, { + fileName: _jsxFileName, + lineNumber: 3, + columnNumber: 10 + }, this); } console.log(App()); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts index b0fa1d6d91e9..b6991cfcd6f0 100644 --- a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts @@ -5,22 +5,51 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "app.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "app.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); + import { jsxDEV } from "../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-dev-runtime.js"; + //#region src/component-a.jsx + var _jsxFileName$1 = "/fixtures/vite8/src/component-a.jsx"; function ComponentA() { - return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "ComponentA", "data-sentry-source-file": "component-a.jsx" }, "Component A"); + return /* @__PURE__ */ jsxDEV("span", { + "data-sentry-component": "ComponentA", + "data-sentry-source-file": "component-a.jsx", + children: "Component A" + }, void 0, false, { + fileName: _jsxFileName$1, + lineNumber: 2, + columnNumber: 10 + }, this); } + //#endregion + //#region src/app.jsx + var _jsxFileName = "/fixtures/vite8/src/app.jsx"; function App() { - return /* @__PURE__ */ React.createElement("span", { "data-sentry-component": "App", "data-sentry-source-file": "app.jsx" }, /* @__PURE__ */ React.createElement(ComponentA, { "data-sentry-element": "ComponentA", "data-sentry-source-file": "app.jsx" }), ";"); + return /* @__PURE__ */ jsxDEV("span", { + "data-sentry-component": "App", + "data-sentry-source-file": "app.jsx", + children: [/* @__PURE__ */ jsxDEV(ComponentA, { + "data-sentry-element": "ComponentA", + "data-sentry-source-file": "app.jsx" + }, void 0, false, { + fileName: _jsxFileName, + lineNumber: 4, + columnNumber: 7 + }, this), ";"] + }, void 0, true, { + fileName: _jsxFileName, + lineNumber: 3, + columnNumber: 10 + }, this); } console.log(App()); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts index 1c99d55fbec9..0502dbb79f0c 100644 --- a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts @@ -5,10 +5,12 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "console.log("hello world"); - //# sourceMappingURL=basic.js.map - ", - "basic.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":"AACA,QAAQ,IAAI,aAAa;"}", + "basic.js": "//#region src/basic.js + console.log("hello world"); + //#endregion + + //# sourceMappingURL=basic.js.map", + "basic.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";AACA,QAAQ,IAAI,cAAc"}", } `); }); diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts index 997b0c3e4b1e..c5a04f975b7c 100644 --- a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts @@ -9,20 +9,21 @@ test(import.meta.url, ({ runBundler, createTempDir }) => { const files = readAllFiles(tempDir); expect(files).toMatchInlineSnapshot(` { - "252e0338-8927-4f52-bd57-188131defd0f-0.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "b699d9c1-b033-4536-aa25-233c92609b54-0.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion + //# debugId=00000000-0000-0000-0000-000000000000 - //# sourceMappingURL=basic.js.map - ", - "252e0338-8927-4f52-bd57-188131defd0f-0.js.map": "{"version":3,"file":"basic.js","sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,aAAa;","debugId":"252e0338-8927-4f52-bd57-188131defd0f","debug_id":"252e0338-8927-4f52-bd57-188131defd0f"}", + //# sourceMappingURL=basic.js.map", + "b699d9c1-b033-4536-aa25-233c92609b54-0.js.map": "{"version":3,"file":"basic.js","names":[],"sources":["../../src/basic.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"hello world\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc","debugId":"b699d9c1-b033-4536-aa25-233c92609b54","debug_id":"b699d9c1-b033-4536-aa25-233c92609b54"}", } `); }); diff --git a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts index 90177fb7b5ba..08a0afffca51 100644 --- a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts @@ -5,20 +5,23 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "index.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "I am release!" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "index.js": "//#region src/import.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "I am release!" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("I am import!"); + //#endregion + //#region src/index.js console.log("I am index!"); - //# sourceMappingURL=index.js.map - ", - "index.js.map": "{"version":3,"file":"index.js","sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"names":[],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,cAAc;ACE1B,QAAQ,IAAI,aAAa;"}", + //#endregion + + //# sourceMappingURL=index.js.map", + "index.js.map": "{"version":3,"file":"index.js","names":[],"sources":["../../src/import.js","../../src/index.js"],"sourcesContent":["// eslint-disable-next-line no-console\\nconsole.log(\\"I am import!\\");\\n\\nexport {};\\n","import \\"./import\\";\\n\\n// eslint-disable-next-line no-console\\nconsole.log(\\"I am index!\\");\\n"],"mappings":";;;;;;;;;AACA,QAAQ,IAAI,eAAe;;;ACE3B,QAAQ,IAAI,cAAc"}", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts index d807e3d04b30..05c0653cd811 100644 --- a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts @@ -5,23 +5,27 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = (function(e2) { - for (var n2 = 1; n2 < arguments.length; n2++) { - var a = arguments[n2]; - if (null != a) for (var t in a) a.hasOwnProperty(t) && (e2[t] = a[t]); - } - return e2; - })({}, e._sentryModuleMetadata[new e.Error().stack], { "something": "value", "another": 999 }); - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + e._sentryModuleMetadata = e._sentryModuleMetadata || {}, e._sentryModuleMetadata[new e.Error().stack] = function(e) { + for (var n = 1; n < arguments.length; n++) { + var a = arguments[n]; + if (null != a) for (var t in a) a.hasOwnProperty(t) && (e[t] = a[t]); + } + return e; + }({}, e._sentryModuleMetadata[new e.Error().stack], { + "something": "value", + "another": 999 + }); + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts index e3ee93ed40a5..63b5f353f8f4 100644 --- a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts @@ -5,42 +5,43 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "common.js": "//#region src/common.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); function add(a, b) { - return a + b; + return a + b; } - export { - add as a - }; + //#endregion + export { add as t }; ", - "entry1.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "entry1.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); - import { a as add } from "./common.js"; + import { t as add } from "./common.js"; + //#region src/entry1.js console.log(add(1, 2)); + //#endregion ", - "entry2.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "entry2.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] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); - import { a as add } from "./common.js"; + import { t as add } from "./common.js"; + //#region src/entry2.js console.log(add(2, 4)); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts index dbf701028f0c..96666e28df19 100644 --- a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/query-param.test.ts @@ -10,45 +10,46 @@ test(import.meta.url, ({ runBundler, readOutputFiles, ctx }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "common.js?seP58q4g": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "common.js?seP58q4g": "//#region src/common.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); function add(a, b) { - return a + b; + return a + b; } - export { - add as a - }; + //#endregion + export { add as t }; ", - "entry1.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "entry1.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); - import { a as add } from "./common.js?seP58q4g"; + import { t as add } from "./common.js?seP58q4g"; + //#region src/entry1.js console.log(add(1, 2)); + //#endregion ", - "entry2.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "entry2.js": "(function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); - import { a as add } from "./common.js?seP58q4g"; + import { t as add } from "./common.js?seP58q4g"; + //#region src/entry2.js console.log(add(2, 4)); + //#endregion ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts index be2e8688f19a..18e4c8f80f47 100644 --- a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts @@ -5,16 +5,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", "sentry-cli-mock.json": "["releases","set-commits","CURRENT_SHA","--auto","--ignore-missing"], ["releases","finalize","CURRENT_SHA"], diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts index 093653dcaa5d..6fb42355a436 100644 --- a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts @@ -5,16 +5,17 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "basic.js": "//#region src/basic.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); console.log("hello world"); + //#endregion ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"8"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], diff --git a/packages/integration-tests-next/fixtures/vite8/utils.ts b/packages/integration-tests-next/fixtures/vite8/utils.ts index 271579bb2997..13fcacb38ecf 100644 --- a/packages/integration-tests-next/fixtures/vite8/utils.ts +++ b/packages/integration-tests-next/fixtures/vite8/utils.ts @@ -39,7 +39,7 @@ export function test(url: string, callback: TestCallback) { outDir, runBundler: (env) => runBundler( - `vite build --config ${testName}${configExt}`, + `pnpm vite build --config ${testName}${configExt}`, { cwd, env: { diff --git a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts index 0d9b6cb56090..78cdb819c730 100644 --- a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts @@ -5,54 +5,54 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "index.js.map": "{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}", - "page1.js.map": "{"version":3,"file":"page1.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", - "page2.js.map": "{"version":3,"file":"page2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}", - "shared-module.js": "!(function() { - try { - var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; - e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; - var n = new e.Error().stack; - n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); - } catch (e2) { - } + "shared-module.js": "//#region \\0vite/modulepreload-polyfill.js + (function() { + try { + var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; + e.SENTRY_RELEASE = { id: "CURRENT_SHA" }; + var n = new e.Error().stack; + n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); + } catch (e) {} })(); (function polyfill() { - const relList = document.createElement("link").relList; - if (relList && relList.supports && relList.supports("modulepreload")) return; - for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link); - new MutationObserver((mutations) => { - for (const mutation of mutations) { - if (mutation.type !== "childList") continue; - for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); - } - }).observe(document, { - childList: true, - subtree: true - }); - function getFetchOpts(link) { - const fetchOpts = {}; - if (link.integrity) fetchOpts.integrity = link.integrity; - if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; - if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; - else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; - else fetchOpts.credentials = "same-origin"; - return fetchOpts; - } - function processPreload(link) { - if (link.ep) return; - link.ep = true; - const fetchOpts = getFetchOpts(link); - fetch(link.href, fetchOpts); - } + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) return; + for (const link of document.querySelectorAll("link[rel=\\"modulepreload\\"]")) processPreload(link); + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") continue; + for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); + } + }).observe(document, { + childList: true, + subtree: true + }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; + else fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } })(); + //#endregion + //#region src/shared-module.js function greet(name) { - console.log(\`Hello, \${String(name)}!\`); + console.log(\`Hello, \${String(name)}!\`); } greet("World"); - //# sourceMappingURL=shared-module.js.map - ", - "shared-module.js.map": "{"version":3,"file":"shared-module.js","sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,SAAS,MAAM,MAAM;AAE1B,UAAQ,IAAI,UAAU,OAAO,IAAI,CAAC,GAAG;AACvC;AAKA,MAAM,OAAO;"}", + //#endregion + + //# sourceMappingURL=shared-module.js.map", + "shared-module.js.map": "{"version":3,"file":"shared-module.js","names":[],"sources":["../../src/shared-module.js"],"sourcesContent":["// This is a shared module that is used by multiple HTML pages\\nexport function greet(name) {\\n // eslint-disable-next-line no-console\\n console.log(\`Hello, \${String(name)}!\`);\\n}\\n\\nexport const VERSION = \\"1.0.0\\";\\n\\n// Side effect: greet on load\\ngreet(\\"World\\");\\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAgB,MAAM,MAAM;AAE1B,SAAQ,IAAI,UAAU,OAAO,KAAK,CAAC,GAAG;;AAMxC,MAAM,QAAQ"}", "src/vite-mpa-index.html": " From 0f36974dcf52ca6e248c7aeeb02450e7a7e812aa Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 4 May 2026 14:31:45 +0200 Subject: [PATCH 624/640] test: Remove old integration tests (#922) --- .github/workflows/checks.yml | 32 +- package.json | 6 +- .../package.json | 1 + .../src/experimental.ts | 11 +- packages/integration-tests-next/.eslintrc.js | 3 +- .../fixtures/webpack5/build-info.test.ts | 2 +- .../fixtures/webpack5/package.json | 1 + packages/integration-tests/.eslintrc.js | 16 - packages/integration-tests/.gitignore | 1 - packages/integration-tests/README.md | 5 - .../after-upload-deletion.test.ts | 21 - .../input/bundle.js | 2 - .../after-upload-deletion-promise/setup.ts | 25 - .../after-upload-deletion.test.ts | 21 - .../after-upload-deletion/input/bundle.js | 2 - .../fixtures/after-upload-deletion/setup.ts | 19 - .../application-key-injection/input/bundle.js | 3 - .../metadata-injection.test.ts | 32 - .../application-key-injection/setup.ts | 15 - .../application-key-with-debug-id.test.ts | 51 -- .../input/bundle.js | 9 - .../application-key-with-debug-id/setup.ts | 18 - .../basic-release-injection.test.ts | 34 -- .../input/entrypoint.js | 2 - .../fixtures/basic-release-injection/setup.ts | 10 - .../build-information-injection.test.ts | 44 -- .../input/entrypoint.js | 2 - .../build-information-injection/setup.ts | 13 - .../bundle-size-optimizations.test.ts | 59 -- .../input/bundle1.js | 9 - .../input/bundle2.js | 8 - .../bundle-size-optimizations/setup.ts | 26 - ...mponent-name-annotate-experimental.test.ts | 33 -- .../input/app.jsx | 14 - .../input/component-a.jsx | 3 - .../setup.ts | 10 - .../component-name-annotate.test.ts | 33 -- .../component-name-annotate/input/app.jsx | 14 - .../input/component-a.jsx | 3 - .../fixtures/component-name-annotate/setup.ts | 10 - .../debug-id-injection.test.ts | 57 -- .../debug-id-injection/input/bundle1.js | 5 - .../debug-id-injection/input/bundle2.js | 5 - .../fixtures/debug-id-injection/setup.ts | 16 - .../debug-ids-already-injected.test.ts | 109 ---- .../input/bundle.js | 2 - .../input/rollup4/package.json | 6 - .../input/rollup4/rollup.config.js | 23 - .../input/vite6/package.json | 5 - .../input/vite6/vite.config.js | 31 - .../input/webpack/package.json | 7 - .../input/webpack/webpack.config.js | 26 - .../deterministic-debug-ids/build-rollup.ts | 19 - .../deterministic-debug-ids/build-vite.ts | 21 - .../deterministic-debug-ids/build-webpack.ts | 26 - .../deterministic-debug-ids.test.ts | 70 --- .../deterministic-debug-ids/input/.gitignore | 1 - .../deterministic-debug-ids/input/index.js | 4 - .../deterministic-debug-ids/plugin-options.ts | 4 - .../disabled-debug-id-injection.test.ts | 41 -- .../input/bundle1.js | 5 - .../input/bundle2.js | 5 - .../disabled-debug-id-injection/setup.ts | 18 - .../disabled-release-injection.test.ts | 34 -- .../input/entrypoint.js | 2 - .../disabled-release-injection/setup.ts | 12 - .../dont-mess-up-user-code.test.ts | 35 -- .../dont-mess-up-user-code/input/import.js | 4 - .../dont-mess-up-user-code/input/index.js | 4 - .../fixtures/dont-mess-up-user-code/setup.ts | 12 - .../fixtures/errorhandling/build-esbuild.ts | 18 - .../fixtures/errorhandling/build-rollup.ts | 24 - .../fixtures/errorhandling/build-vite.ts | 27 - .../fixtures/errorhandling/build-webpack.ts | 27 - .../errorhandling/error-no-handler.test.ts | 60 -- .../fixtures/errorhandling/fakeSentry.js | 16 - .../fixtures/errorhandling/input/bundle.js | 2 - .../fixtures/errorhandling/plugin-options.ts | 10 - .../esbuild-inject-compat.test.ts | 17 - .../esbuild-inject-compat/input/index.ts | 4 - .../esbuild-inject-compat/input/inject.ts | 7 - .../fixtures/esbuild-inject-compat/setup.ts | 20 - .../injection-with-query-param.test.ts | 64 -- .../input/bundle1.js | 8 - .../input/bundle2.js | 8 - .../injection-with-query-param/setup.ts | 18 - .../metadata-injection/input/bundle.js | 3 - .../metadata-injection.test.ts | 36 -- .../fixtures/metadata-injection/setup.ts | 15 - .../metadata-with-debug-id/input/bundle.js | 9 - .../metadata-with-debug-id.test.ts | 50 -- .../fixtures/metadata-with-debug-id/setup.ts | 18 - .../release-value-with-quotes/input/bundle.js | 3 - .../release-value-with-quotes.test.ts | 26 - .../release-value-with-quotes/setup.ts | 15 - .../fixtures/telemetry/input/bundle1.js | 2 - .../fixtures/telemetry/telemetry.test.ts | 150 ----- .../build-vite-with-plugin.ts | 28 - .../build-vite-without-plugin.ts | 22 - .../vite-mpa-extra-modules/input/index.html | 11 - .../vite-mpa-extra-modules/input/page1.html | 11 - .../vite-mpa-extra-modules/input/page2.html | 11 - .../input/shared-module.js | 10 - .../vite-mpa-extra-modules.test.ts | 104 ---- packages/integration-tests/package.json | 49 -- .../scripts/run-fixture-setups.ts | 16 - packages/integration-tests/tsconfig.json | 9 - .../utils/create-cjs-bundles-for-react.ts | 139 ----- .../utils/create-cjs-bundles-with-query.ts | 77 --- .../utils/create-cjs-bundles.ts | 88 --- yarn.lock | 545 +----------------- 111 files changed, 19 insertions(+), 2990 deletions(-) delete mode 100644 packages/integration-tests/.eslintrc.js delete mode 100644 packages/integration-tests/.gitignore delete mode 100644 packages/integration-tests/README.md delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/after-upload-deletion/setup.ts delete mode 100644 packages/integration-tests/fixtures/application-key-injection/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/application-key-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts delete mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts delete mode 100644 packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js delete mode 100644 packages/integration-tests/fixtures/basic-release-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js delete mode 100644 packages/integration-tests/fixtures/build-information-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts delete mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js delete mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js delete mode 100644 packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts delete mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts delete mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx delete mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx delete mode 100644 packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts delete mode 100644 packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts delete mode 100644 packages/integration-tests/fixtures/component-name-annotate/input/app.jsx delete mode 100644 packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx delete mode 100644 packages/integration-tests/fixtures/component-name-annotate/setup.ts delete mode 100644 packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js delete mode 100644 packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js delete mode 100644 packages/integration-tests/fixtures/debug-id-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json delete mode 100644 packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts delete mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js delete mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js delete mode 100644 packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js delete mode 100644 packages/integration-tests/fixtures/disabled-release-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts delete mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js delete mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js delete mode 100644 packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/build-esbuild.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/build-rollup.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/build-vite.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/build-webpack.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts delete mode 100644 packages/integration-tests/fixtures/errorhandling/fakeSentry.js delete mode 100644 packages/integration-tests/fixtures/errorhandling/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/errorhandling/plugin-options.ts delete mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts delete mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts delete mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts delete mode 100644 packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts delete mode 100644 packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts delete mode 100644 packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js delete mode 100644 packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js delete mode 100644 packages/integration-tests/fixtures/injection-with-query-param/setup.ts delete mode 100644 packages/integration-tests/fixtures/metadata-injection/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts delete mode 100644 packages/integration-tests/fixtures/metadata-injection/setup.ts delete mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts delete mode 100644 packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts delete mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js delete mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts delete mode 100644 packages/integration-tests/fixtures/release-value-with-quotes/setup.ts delete mode 100644 packages/integration-tests/fixtures/telemetry/input/bundle1.js delete mode 100644 packages/integration-tests/fixtures/telemetry/telemetry.test.ts delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js delete mode 100644 packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts delete mode 100644 packages/integration-tests/package.json delete mode 100644 packages/integration-tests/scripts/run-fixture-setups.ts delete mode 100644 packages/integration-tests/tsconfig.json delete mode 100644 packages/integration-tests/utils/create-cjs-bundles-for-react.ts delete mode 100644 packages/integration-tests/utils/create-cjs-bundles-with-query.ts delete mode 100644 packages/integration-tests/utils/create-cjs-bundles.ts diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 4ef66407e395..6e420f447a9a 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -136,36 +136,6 @@ jobs: node-version: [18, 20, 22, 24] os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version: ${{ matrix.node-version }} - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: packages - - run: yarn test:integration - - test-integration-next: - needs: build - name: "Integration Tests Next (Node ${{ matrix.node-version }}, OS ${{ matrix.os }})" - strategy: - fail-fast: false - matrix: - node-version: [18, 20, 22, 24] - os: [ubuntu-latest, windows-latest] - runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 @@ -188,7 +158,7 @@ jobs: with: name: dist-artifacts-${{ github.run_id }} path: packages - - run: yarn test:integration-next + - run: yarn test:integration lint: needs: build diff --git a/package.json b/package.json index d1e957aa6ea5..52b47b9dbbf8 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "packages/dev-utils", "packages/esbuild-plugin", "packages/eslint-configs", - "packages/integration-tests", "packages/playground", "packages/rollup-plugin", "packages/tsconfigs", @@ -28,9 +27,8 @@ "clean": "nx run-many --target=clean --all", "clean:all": "nx run-many --target=clean:all --all && yarn", "test": "nx run-many --target=test --all", - "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests,@sentry-internal/integration-tests-next", - "test:integration": "nx run @sentry-internal/integration-tests:test", - "test:integration-next": "nx run @sentry-internal/integration-tests-next:test", + "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests-next", + "test:integration": "nx run @sentry-internal/integration-tests-next:test", "lint": "nx run-many --target=lint --all", "check:formatting": "oxfmt --check .", "fix:formatting": "oxfmt ." diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 8a6d9f68b207..365f14b5c9c1 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -51,6 +51,7 @@ }, "devDependencies": { "@babel/core": "7.18.5", + "@types/babel__core": "^7.20.5", "@babel/preset-react": "^7.23.3", "@sentry-internal/eslint-config": "5.2.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", diff --git a/packages/babel-plugin-component-annotate/src/experimental.ts b/packages/babel-plugin-component-annotate/src/experimental.ts index c970078d41a8..248b7578fedd 100644 --- a/packages/babel-plugin-component-annotate/src/experimental.ts +++ b/packages/babel-plugin-component-annotate/src/experimental.ts @@ -283,16 +283,13 @@ function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath): voi // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate const paths = jsxNode.get("openingElement"); - const openingElements = Array.isArray(paths) ? paths : [paths]; + const openingElements = ( + Array.isArray(paths) ? paths : [paths] + ) as Babel.NodePath[]; const hasInjectedAttributes = openingElements.reduce( (prev, openingElement) => - prev || - applyAttributes( - context, - openingElement as Babel.NodePath, - context.componentName - ), + prev || applyAttributes(context, openingElement, context.componentName), false ); diff --git a/packages/integration-tests-next/.eslintrc.js b/packages/integration-tests-next/.eslintrc.js index bb47417785f4..414681904fba 100644 --- a/packages/integration-tests-next/.eslintrc.js +++ b/packages/integration-tests-next/.eslintrc.js @@ -6,8 +6,9 @@ module.exports = { ".eslintrc.js", "fixtures/*/out", "fixtures/*/src", - // We ignore Vite fixtures for now because there are a couple of version mismatches. + // We ignore Vite and Rollup fixtures for now because there are a couple of version mismatches. "fixtures/vite*/**/*", + "fixtures/rollup*/**/*", ], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts index 0241339a52d3..ae3adc5562e8 100644 --- a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","babel-loader","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json index 5f13904fbcf8..0e91ebcfed23 100644 --- a/packages/integration-tests-next/fixtures/webpack5/package.json +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -4,6 +4,7 @@ "private": true, "type": "module", "dependencies": { + "babel-loader": "^8.0.0", "webpack": "5.105.4", "webpack-cli": "6.0.1", "@babel/preset-react": "7.23.3", diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js deleted file mode 100644 index eca9a3468d5d..000000000000 --- a/packages/integration-tests/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "fixtures/*/out", "fixtures/bundle-size-optimizations/*"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - env: { - node: true, - }, - rules: { - "@typescript-eslint/explicit-function-return-type": "off", - }, -}; diff --git a/packages/integration-tests/.gitignore b/packages/integration-tests/.gitignore deleted file mode 100644 index 608c2472c35a..000000000000 --- a/packages/integration-tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -fixtures/*/out/** diff --git a/packages/integration-tests/README.md b/packages/integration-tests/README.md deleted file mode 100644 index ced94ead72d2..000000000000 --- a/packages/integration-tests/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 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 `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 deleted file mode 100644 index 218ed700191e..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { describe, test, expect } from "vitest"; - -describe("Deletes files with `filesToDeleteAfterUpload` set to a promise", () => { - test("webpack bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack", "bundle.js.map"))).toBe(false); - }); - - test("esbuild bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "esbuild", "bundle.js.map"))).toBe(false); - }); - - test("rollup bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "rollup", "bundle.js.map"))).toBe(false); - }); - - test("vite bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "vite", "bundle.js.map"))).toBe(false); - }); -}); diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js b/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js deleted file mode 100644 index aa70f660a1fc..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion-promise/input/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("whatever"); diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts deleted file mode 100644 index ef723d4fb881..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -["webpack", "esbuild", "rollup", "vite"].forEach((bundler) => { - const fileDeletionGlobPromise = new Promise((resolve) => { - setTimeout(() => { - resolve([path.join(__dirname, "out", bundler, "bundle.js.map")]); - }, 1000); - }); - - createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - sourcemaps: { - filesToDeleteAfterUpload: fileDeletionGlobPromise, - }, - }, - [bundler] - ); -}); 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 deleted file mode 100644 index 44eed1e27c71..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { describe, test, expect } from "vitest"; - -describe("Deletes with `filesToDeleteAfterUpload` even without uploading anything", () => { - test("webpack bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack", "bundle.js.map"))).toBe(false); - }); - - test("esbuild bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "esbuild", "bundle.js.map"))).toBe(false); - }); - - test("rollup bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "rollup", "bundle.js.map"))).toBe(false); - }); - - test("vite bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "vite", "bundle.js.map"))).toBe(false); - }); -}); diff --git a/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js b/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js deleted file mode 100644 index aa70f660a1fc..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion/input/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("whatever"); diff --git a/packages/integration-tests/fixtures/after-upload-deletion/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion/setup.ts deleted file mode 100644 index acb799e8c2e0..000000000000 --- a/packages/integration-tests/fixtures/after-upload-deletion/setup.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -["webpack", "esbuild", "rollup", "vite"].forEach((bundler) => { - createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - sourcemaps: { - filesToDeleteAfterUpload: [path.join(__dirname, "out", bundler, "bundle.js.map")], - }, - }, - [bundler] - ); -}); diff --git a/packages/integration-tests/fixtures/application-key-injection/input/bundle.js b/packages/integration-tests/fixtures/application-key-injection/input/bundle.js deleted file mode 100644 index bf1389636d9e..000000000000 --- a/packages/integration-tests/fixtures/application-key-injection/input/bundle.js +++ /dev/null @@ -1,3 +0,0 @@ -// Simply output the metadata to the console so it can be checked in a test -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryModuleMetadata)); 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 deleted file mode 100644 index eacbbb1880b2..000000000000 --- a/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { execSync } from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -function checkBundle(bundlePath: string): void { - const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - - const map = JSON.parse(output) as Record; - - // There should be only one key in the map - expect(Object.values(map)).toHaveLength(1); - // The value should be the expected metadata - expect(Object.values(map)).toEqual([{ ["_sentryBundlerPluginAppKey:my-app"]: true }]); -} - -describe("appKey injection", () => { - test("webpack bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); - }); - - test("esbuild bundle", () => { - checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); - }); - - test("rollup bundle", () => { - checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); - }); - - test("vite bundle", () => { - checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/application-key-injection/setup.ts b/packages/integration-tests/fixtures/application-key-injection/setup.ts deleted file mode 100644 index 72bf9bc2b58e..000000000000 --- a/packages/integration-tests/fixtures/application-key-injection/setup.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - applicationKey: "my-app", - }, - ["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 deleted file mode 100644 index 614d271c9d4e..000000000000 --- a/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { execSync } from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -interface BundleOutput { - debugIds: Record | undefined; - metadata: Record | undefined; -} - -function checkBundle(bundlePath: string): void { - const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - const result = JSON.parse(output) as BundleOutput; - - // Check that debug IDs are present - expect(result.debugIds).toBeDefined(); - const debugIds = Object.values(result.debugIds ?? {}); - expect(debugIds.length).toBeGreaterThan(0); - // Verify debug ID format (UUID v4) - expect(debugIds).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - // The key should be a stack trace - expect(Object.keys(result.debugIds ?? {})[0]).toContain("Error"); - - // Check that applicationKey metadata is present - expect(result.metadata).toBeDefined(); - const metadataValues = Object.values(result.metadata ?? {}); - expect(metadataValues).toHaveLength(1); - // applicationKey sets a special key in the metadata - expect(metadataValues[0]).toEqual({ "_sentryBundlerPluginAppKey:my-app-key": true }); - // The key should be a stack trace - expect(Object.keys(result.metadata ?? {})[0]).toContain("Error"); -} - -describe("applicationKey with debug ID injection", () => { - test("webpack bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); - }); - - test("esbuild bundle", () => { - checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); - }); - - test("rollup bundle", () => { - checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); - }); - - test("vite bundle", () => { - checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js b/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js deleted file mode 100644 index b419f9d0f52a..000000000000 --- a/packages/integration-tests/fixtures/application-key-with-debug-id/input/bundle.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ -// Output both debug IDs and metadata to verify applicationKey works with debug ID injection -// eslint-disable-next-line no-console -console.log( - JSON.stringify({ - debugIds: global._sentryDebugIds, - metadata: global._sentryModuleMetadata, - }) -); 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 deleted file mode 100644 index f648e4a9b98c..000000000000 --- a/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - // Enable applicationKey AND debug ID injection (sourcemaps enabled by default) - applicationKey: "my-app-key", - telemetry: false, - release: { name: "test-release", create: false }, - }, - ["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 deleted file mode 100644 index c9bc1a4c4ca1..000000000000 --- a/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -/** - * Runs a node file in a seprate process. - * - * @param bundlePath Path of node file to run - * @returns Stdout of the process - */ -function checkBundle(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput).toBe("I AM A RELEASE!"); -} - -test("esbuild bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/esbuild/index.js")); -}); - -test("rollup bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/rollup/index.js")); -}); - -test("vite bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/vite/index.js")); -}); - -test("webpack bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack/index.js")); -}); diff --git a/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js b/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js deleted file mode 100644 index c938f917787e..000000000000 --- a/packages/integration-tests/fixtures/basic-release-injection/input/entrypoint.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -process.stdout.write(global.SENTRY_RELEASE.id); diff --git a/packages/integration-tests/fixtures/basic-release-injection/setup.ts b/packages/integration-tests/fixtures/basic-release-injection/setup.ts deleted file mode 100644 index ef32aaf3e0ee..000000000000 --- a/packages/integration-tests/fixtures/basic-release-injection/setup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - telemetry: false, - release: { name: "I AM A RELEASE!", create: false }, -}); 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 deleted file mode 100644 index 000185cc1839..000000000000 --- a/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -/** - * Runs a node file in a seprate process. - * - * @param bundlePath Path of node file to run - * @returns Stdout of the process - */ -function checkBundle(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - - const expectedNodeVersion = parseInt(process.versions.node); - - expect(JSON.parse(processOutput)).toEqual( - expect.objectContaining({ - 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, - }) - ); -} - -test("esbuild bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); -}); - -test("rollup bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "rollup", "index.js")); -}); - -test("vite bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "vite", "index.js")); -}); - -test("webpack bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack", "index.js")); -}); diff --git a/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js b/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js deleted file mode 100644 index 6297b3072c22..000000000000 --- a/packages/integration-tests/fixtures/build-information-injection/input/entrypoint.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -process.stdout.write(global.SENTRY_BUILD_INFO ? JSON.stringify(global.SENTRY_BUILD_INFO) : ""); diff --git a/packages/integration-tests/fixtures/build-information-injection/setup.ts b/packages/integration-tests/fixtures/build-information-injection/setup.ts deleted file mode 100644 index 3b260c9c7163..000000000000 --- a/packages/integration-tests/fixtures/build-information-injection/setup.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - release: { - name: "build-information-injection-test", - }, - telemetry: false, - _experiments: { injectBuildInformation: true }, -}); 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 deleted file mode 100644 index 162d0c97db6b..000000000000 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { describe, test, expect } from "vitest"; - -const expectedOutputs: Record> = { - esbuild: { - "bundle1.js": `console.log(1)`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, - }, - rollup: { - "bundle1.js": `console.log(1 );`, - "bundle2.js": `console.log({ - debug: "b", - trace: "b", - replayCanvas: "a" , - replayIframe: "a" , - replayShadowDom: "a" , - replayWorker: "a" , -});`, - }, - vite: { - "bundle1.js": `console.log(1);`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, - }, - webpack: { - "bundle1.js": `console.log(1)`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, - }, -}; - -function checkBundle(bundler: string, bundlePath: string): void { - const actualPath = path.join(__dirname, "out", bundler, bundlePath); - - // We replace multiple whitespaces with a single space for consistency - const actual = fs.readFileSync(actualPath, "utf-8").replace(/\s+/gim, " "); - const expected = expectedOutputs[bundler]?.[bundlePath]?.replace(/\s+/gim, " "); - - expect(actual).toContain(expected); -} - -test("esbuild bundle", () => { - checkBundle("esbuild", "bundle1.js"); - checkBundle("esbuild", "bundle2.js"); -}); - -test("rollup bundle", () => { - checkBundle("rollup", "bundle1.js"); - checkBundle("rollup", "bundle2.js"); -}); - -test("vite bundle", () => { - checkBundle("vite", "bundle1.js"); - checkBundle("vite", "bundle2.js"); -}); - -test("webpack bundle", () => { - checkBundle("webpack", "bundle1.js"); - checkBundle("webpack", "bundle2.js"); -}); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js deleted file mode 100644 index 85c2c6eb1c53..000000000000 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle1.js +++ /dev/null @@ -1,9 +0,0 @@ -if (__SENTRY_DEBUG__ && Math.random() > 0.5) { - console.log("was > 0.5"); -} - -if (__SENTRY_DEBUG__ && __RRWEB_EXCLUDE_CANVAS__) { - console.log("debug & exclude"); -} - -console.log(__RRWEB_EXCLUDE_CANVAS__ ? 1 : 2); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js b/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js deleted file mode 100644 index ac85947cbdfb..000000000000 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/input/bundle2.js +++ /dev/null @@ -1,8 +0,0 @@ -console.log({ - debug: __SENTRY_DEBUG__ ? "a" : "b", - trace: __SENTRY_TRACING__ ? "a" : "b", - replayCanvas: __RRWEB_EXCLUDE_CANVAS__ ? "a" : "b", - replayIframe: __RRWEB_EXCLUDE_IFRAME__ ? "a" : "b", - replayShadowDom: __RRWEB_EXCLUDE_SHADOW_DOM__ ? "a" : "b", - replayWorker: __SENTRY_EXCLUDE_REPLAY_WORKER__ ? "a" : "b", -}); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts deleted file mode 100644 index dfacd3c35a02..000000000000 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/setup.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle1: path.resolve(__dirname, "input", "bundle1.js"), - bundle2: path.resolve(__dirname, "input", "bundle2.js"), - }, - outputDir, - { - release: { - inject: false, - }, - telemetry: false, - bundleSizeOptimizations: { - excludeDebugStatements: true, - excludeTracing: true, - excludeReplayCanvas: true, - excludeReplayIframe: true, - excludeReplayShadowDom: true, - excludeReplayWorker: true, - }, - } -); 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 deleted file mode 100644 index 815f5b4056e5..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -const SNAPSHOT = `"
Component A
"`; -const ESBUILD_SNAPSHOT = `"
Component A
"`; - -function runBundle(bundlePath: string): string { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - return processOutput.trim(); -} - -test("esbuild bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/esbuild/index.js"))).toMatchInlineSnapshot( - ESBUILD_SNAPSHOT - ); -}); - -test("rollup bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/rollup/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); - -test("vite bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/vite/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); - -test("webpack bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/webpack/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx deleted file mode 100644 index d4263e7953e4..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/app.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import { renderToString } from "react-dom/server"; -import { ComponentA } from "./component-a"; - -export default function App() { - return ; -} - -console.log( - renderToString( -
- -
- ) -); diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx b/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx deleted file mode 100644 index 5d57ab2215cd..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate-experimental/input/component-a.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export function ComponentA() { - return Component A; -} diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts b/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts deleted file mode 100644 index 1894d1babfa9..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate-experimental/setup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles-for-react"; - -const entryPointPath = path.resolve(__dirname, "input", "app.jsx"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - telemetry: false, - reactComponentAnnotation: { enabled: true, _experimentalInjectIntoHtml: true }, -}); 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 deleted file mode 100644 index b57f6e25ca03..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -const SNAPSHOT = `"
Component A
"`; -const ESBUILD_SNAPSHOT = `"
Component A
"`; - -function runBundle(bundlePath: string): string { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - return processOutput.trim(); -} - -test("esbuild bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/esbuild/index.js"))).toMatchInlineSnapshot( - ESBUILD_SNAPSHOT - ); -}); - -test("rollup bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/rollup/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); - -test("vite bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/vite/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); - -test("webpack bundle", () => { - expect.assertions(1); - expect(runBundle(path.join(__dirname, "./out/webpack/index.js"))).toMatchInlineSnapshot(SNAPSHOT); -}); diff --git a/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx b/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx deleted file mode 100644 index d4263e7953e4..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate/input/app.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import { renderToString } from "react-dom/server"; -import { ComponentA } from "./component-a"; - -export default function App() { - return ; -} - -console.log( - renderToString( -
- -
- ) -); diff --git a/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx b/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx deleted file mode 100644 index 5d57ab2215cd..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate/input/component-a.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export function ComponentA() { - return Component A; -} diff --git a/packages/integration-tests/fixtures/component-name-annotate/setup.ts b/packages/integration-tests/fixtures/component-name-annotate/setup.ts deleted file mode 100644 index 700e77059b3b..000000000000 --- a/packages/integration-tests/fixtures/component-name-annotate/setup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles-for-react"; - -const entryPointPath = path.resolve(__dirname, "input", "app.jsx"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - telemetry: false, - reactComponentAnnotation: { enabled: true }, -}); 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 deleted file mode 100644 index ce6a6338f176..000000000000 --- a/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -function checkBundle(bundlePath1: string, bundlePath2: string): string[] { - const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); - const debugIdMap1 = JSON.parse(process1Output) as Record; - const debugIds1 = Object.values(debugIdMap1); - expect(debugIds1.length).toBeGreaterThan(0); - expect(debugIds1).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - - expect(Object.keys(debugIdMap1)[0]).toContain("Error"); - - const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); - const debugIdMap2 = JSON.parse(process2Output) as Record; - const debugIds2 = Object.values(debugIdMap2); - expect(debugIds2.length).toBeGreaterThan(0); - expect(debugIds2).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - - expect(Object.keys(debugIdMap2)[0]).toContain("Error"); - - expect(debugIds1).not.toEqual(debugIds2); - - return [...debugIds1, ...debugIds2]; -} - -test("esbuild bundle", () => { - checkBundle( - path.join(__dirname, "out", "esbuild", "bundle1.js"), - path.join(__dirname, "out", "esbuild", "bundle2.js") - ); -}); - -test("rollup bundle", () => { - checkBundle( - path.join(__dirname, "out", "rollup", "bundle1.js"), - path.join(__dirname, "out", "rollup", "bundle2.js") - ); -}); - -test("vite bundle", () => { - checkBundle( - path.join(__dirname, "out", "vite", "bundle1.js"), - path.join(__dirname, "out", "vite", "bundle2.js") - ); -}); - -test("webpack bundle", () => { - checkBundle( - path.join(__dirname, "out", "webpack", "bundle1.js"), - path.join(__dirname, "out", "webpack", "bundle2.js") - ); -}); diff --git a/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js b/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js deleted file mode 100644 index b6aa931ae685..000000000000 --- a/packages/integration-tests/fixtures/debug-id-injection/input/bundle1.js +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryDebugIds)); - -// Just so the two bundles generate different hashes: -global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js b/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js deleted file mode 100644 index 97e6dbd93d42..000000000000 --- a/packages/integration-tests/fixtures/debug-id-injection/input/bundle2.js +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryDebugIds)); - -// Just so the two bundles generate different hashes: -global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/debug-id-injection/setup.ts b/packages/integration-tests/fixtures/debug-id-injection/setup.ts deleted file mode 100644 index 5748ce1e738f..000000000000 --- a/packages/integration-tests/fixtures/debug-id-injection/setup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle1: path.resolve(__dirname, "input", "bundle1.js"), - bundle2: path.resolve(__dirname, "input", "bundle2.js"), - }, - outputDir, - { - telemetry: false, - release: { name: "I AM A RELEASE!", create: false }, - } -); 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 deleted file mode 100644 index 20c51c2f9527..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import * as path from "path"; -import * as fs from "fs"; -import * as os from "os"; -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-")); -} - -const SPEC_DEBUG_ID_REGEX = /\/\/# debugId=([a-fA-F0-9-]+)/g; - -function countDebugIdComments(source: string): number { - return source.match(SPEC_DEBUG_ID_REGEX)?.length || 0; -} - -function getDebugIdFromComment(source: string): string | undefined { - const match = SPEC_DEBUG_ID_REGEX.exec(source); - if (match && match[1]) { - return match[1]; - } - return undefined; -} - -function getSingleJavaScriptSourceFileFromDirectory(dir: string, fileExtension = ".js"): string { - const files = fs.readdirSync(dir); - const jsFiles = files.filter((file) => file.endsWith(fileExtension)); - if (jsFiles.length === 1) { - return fs.readFileSync(path.join(dir, jsFiles[0] as string), "utf-8"); - } - return ""; -} - -function expected(tempDir: string) { - const source = getSingleJavaScriptSourceFileFromDirectory(tempDir); - expect(source).toBeDefined(); - const debugIds = countDebugIdComments(source); - expect(debugIds).toBe(1); - const debugId = getDebugIdFromComment(source); - expect(debugId).toBeDefined(); - // Check the JavaScript contains a matching id - expect(source).toContain(`="${debugId || "fail"}"`); -} - -describe("vite 6 bundle", { timeout: 30_000 }, () => { - const viteRoot = path.join(__dirname, "input", "vite6"); - const tempDir = createTempDir(); - - beforeEach(() => { - execSync("yarn install", { cwd: viteRoot, stdio: "inherit" }); - execSync("yarn vite build", { - cwd: viteRoot, - stdio: "inherit", - env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, - }); - }, 30_000); - - test("check vite 6 bundle", () => { - expected(tempDir); - }); - - afterEach(() => { - fs.rmSync(tempDir, { recursive: true, force: true }); - }); -}); - -describe("webpack bundle", { timeout: 30_000 }, () => { - const webpackRoot = path.join(__dirname, "input", "webpack"); - const tempDir = createTempDir(); - - beforeEach(() => { - execSync("yarn install", { cwd: webpackRoot, stdio: "inherit" }); - execSync("yarn webpack build", { - cwd: webpackRoot, - stdio: "inherit", - env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, - }); - }, 30_000); - - test("check webpack bundle", () => { - expected(tempDir); - }); - - afterEach(() => { - fs.rmSync(tempDir, { recursive: true, force: true }); - }); -}); - -describe("rollup bundle", { timeout: 30_000 }, () => { - const rollupRoot = path.join(__dirname, "input", "rollup4"); - const tempDir = createTempDir(); - - beforeEach(() => { - execSync("yarn install", { cwd: rollupRoot, stdio: "inherit" }); - execSync("yarn rollup --config rollup.config.js", { - cwd: rollupRoot, - stdio: "inherit", - env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, - }); - }, 30_000); - - test("check rollup bundle", () => { - expected(tempDir); - }); - - afterEach(() => { - fs.rmSync(tempDir, { recursive: true, force: true }); - }); -}); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js deleted file mode 100644 index 74cb26633109..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("Hello world"); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json deleted file mode 100644 index b455216aba59..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "module", - "dependencies": { - "rollup": "^4" - } -} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js deleted file mode 100644 index 1a5285669d4f..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/rollup4/rollup.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { defineConfig } from "rollup"; -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -import { join, dirname } from "path"; -import { fileURLToPath } from "url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - input: { index: join(__dirname, "..", "bundle.js") }, - output: { - dir: join(__dirname, "..", "..", "out", "rollup4"), - sourcemap: true, - sourcemapDebugIds: true, - }, - plugins: [ - sentryRollupPlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], -}); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json deleted file mode 100644 index 94bf169fd2c2..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "vite": "^6" - } -} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js deleted file mode 100644 index bb319442bcca..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/vite6/vite.config.js +++ /dev/null @@ -1,31 +0,0 @@ -import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import { join, dirname } from "path"; -import { fileURLToPath } from "url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - clearScreen: false, - mode: "production", - build: { - sourcemap: true, - outDir: join(__dirname, "..", "..", "out", "vite6"), - rollupOptions: { - input: { index: join(__dirname, "..", "bundle.js") }, - output: { - format: "cjs", - entryFileNames: "[name].js", - sourcemapDebugIds: true, - }, - }, - }, - plugins: [ - sentryVitePlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], -}); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json deleted file mode 100644 index e1a155e77fec..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "module", - "dependencies": { - "webpack": "^5", - "webpack-cli": "^6" - } -} diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js deleted file mode 100644 index e4beac2ffe95..000000000000 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js +++ /dev/null @@ -1,26 +0,0 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import { join, dirname } from "path"; -import { fileURLToPath } from "url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default { - devtool: "source-map-debugids", - cache: false, - entry: { index: join(__dirname, "..", "bundle.js") }, - output: { - path: join(__dirname, "..", "..", "out", "webpack"), - library: { - type: "commonjs", - }, - }, - mode: "production", - plugins: [ - sentryWebpackPlugin({ - telemetry: false, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - }), - ], -}; diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts deleted file mode 100644 index c21a0ff7e148..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-rollup.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -import * as path from "path"; -import * as rollup from "rollup"; -import pluginOptions from "./plugin-options"; - -void rollup - .rollup({ - input: { - index: path.join(__dirname, "input", "index.js"), - }, - plugins: [sentryRollupPlugin(pluginOptions)], - }) - .then((bundle) => - bundle.write({ - dir: path.join(__dirname, "out", "rollup"), - format: "cjs", - exports: "named", - }) - ); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts deleted file mode 100644 index 8c6715b22596..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import * as path from "path"; -import * as vite from "vite"; -import pluginOptions from "./plugin-options"; - -void vite.build({ - clearScreen: false, - build: { - outDir: path.join(__dirname, "out", "vite"), - rollupOptions: { - input: { - index: path.join(__dirname, "input", "index.js"), - }, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [sentryVitePlugin(pluginOptions) as unknown as vite.Plugin], -}); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts deleted file mode 100644 index 7914e4f4e184..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import * as path from "path"; -import { webpack } from "webpack"; -import pluginOptions from "./plugin-options"; - -webpack( - { - cache: false, - entry: { - index: path.join(__dirname, "input", "index.js"), - }, - output: { - path: path.join(__dirname, "out", "webpack"), - library: { - type: "commonjs", - }, - }, - mode: "production", - 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 deleted file mode 100644 index 7ad1bf41df30..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import fs from "fs/promises"; -import { describe, test, expect, beforeEach, afterEach } from "vitest"; - -function executeAndGetDebugIds(bundlePath: string): string[] { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - const debugIdMap = JSON.parse(processOutput) as Record; - return Object.values(debugIdMap); -} - -beforeEach(async () => { - await fs.writeFile( - path.join(__dirname, "input", "dynamic-variable.js"), - `global.dynamicVariable = 1;` - ); -}); - -afterEach(async () => { - await fs.unlink(path.join(__dirname, "input", "dynamic-variable.js")); -}); - -describe("Same debug IDs for multiple identical builds", () => { - const bundlers = ["rollup", "vite", "webpack"]; - - test.each(bundlers)( - "%s", - (bundler) => { - // build - childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); - - const debugIds1 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); - - // rebuild - childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); - - const debugIds2 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); - - expect(debugIds1).toStrictEqual(debugIds2); - }, - 20_000 - ); -}); - -describe("Different debug IDs for different builds", () => { - const bundlers = ["rollup", "vite", "webpack"]; - - test.each(bundlers)( - "%s", - async (bundler) => { - // build - childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); - - const debugIds1 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); - - await fs.writeFile( - path.join(__dirname, "input", "dynamic-variable.js"), - `global.dynamicVariable = 2;` - ); - - // rebuild - childProcess.execSync(`yarn ts-node ${path.join(__dirname, `build-${bundler}.ts`)}`); - - const debugIds2 = executeAndGetDebugIds(path.join(__dirname, "out", bundler, "index.js")); - - expect(debugIds1).not.toEqual(debugIds2); - }, - 20_000 - ); -}); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore b/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore deleted file mode 100644 index 0776f7c70b43..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/input/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dynamic-variable.js diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js b/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js deleted file mode 100644 index 6b835c6d083a..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/input/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import "./dynamic-variable"; - -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryDebugIds)); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts deleted file mode 100644 index dd575328a4ef..000000000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/plugin-options.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - telemetry: false, - release: { name: "release", create: false }, -}; 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 deleted file mode 100644 index bcafe20956d7..000000000000 --- a/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -function checkBundle(bundlePath1: string, bundlePath2: string) { - const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); - expect(process1Output).toMatch(/undefined/); - - const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); - expect(process2Output).toMatch(/undefined/); -} - -describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () => { - test("esbuild bundle", () => { - checkBundle( - path.join(__dirname, "out", "esbuild", "bundle1.js"), - path.join(__dirname, "out", "esbuild", "bundle2.js") - ); - }); - - test("rollup bundle", () => { - checkBundle( - path.join(__dirname, "out", "rollup", "bundle1.js"), - path.join(__dirname, "out", "rollup", "bundle2.js") - ); - }); - - test("vite bundle", () => { - checkBundle( - path.join(__dirname, "out", "vite", "bundle1.js"), - path.join(__dirname, "out", "vite", "bundle2.js") - ); - }); - - test("webpack bundle", () => { - checkBundle( - path.join(__dirname, "out", "webpack", "bundle1.js"), - path.join(__dirname, "out", "webpack", "bundle2.js") - ); - }); -}); diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js deleted file mode 100644 index b6aa931ae685..000000000000 --- a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle1.js +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryDebugIds)); - -// Just so the two bundles generate different hashes: -global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js b/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js deleted file mode 100644 index 97e6dbd93d42..000000000000 --- a/packages/integration-tests/fixtures/disabled-debug-id-injection/input/bundle2.js +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryDebugIds)); - -// Just so the two bundles generate different hashes: -global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts b/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts deleted file mode 100644 index 029a30c5b050..000000000000 --- a/packages/integration-tests/fixtures/disabled-debug-id-injection/setup.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle1: path.resolve(__dirname, "input", "bundle1.js"), - bundle2: path.resolve(__dirname, "input", "bundle2.js"), - }, - outputDir, - { - telemetry: false, - sourcemaps: { - disable: true, - }, - } -); 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 deleted file mode 100644 index c591dfbec5cd..000000000000 --- a/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -/** - * Runs a node file in a seprate process. - * - * @param bundlePath Path of node file to run - * @returns Stdout of the process - */ -function checkBundle(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput).toBe(""); -} - -test("esbuild bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); -}); - -test("rollup bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "rollup", "index.js")); -}); - -test("vite bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "vite", "index.js")); -}); - -test("webpack bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack", "index.js")); -}); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js b/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js deleted file mode 100644 index 9b1aa93e838e..000000000000 --- a/packages/integration-tests/fixtures/disabled-release-injection/input/entrypoint.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -process.stdout.write((global.SENTRY_RELEASE || {}).id || ""); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts b/packages/integration-tests/fixtures/disabled-release-injection/setup.ts deleted file mode 100644 index 84548ae6085b..000000000000 --- a/packages/integration-tests/fixtures/disabled-release-injection/setup.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPointPath = path.resolve(__dirname, "input", "entrypoint.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - telemetry: false, - release: { name: "I AM A RELEASE!", inject: false, create: false }, - project: "releasesProject", - org: "releasesOrg", -}); 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 deleted file mode 100644 index c610b86440ce..000000000000 --- a/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { test, expect } from "vitest"; - -/** - * Runs a node file in a seprate process. - * - * @param bundlePath Path of node file to run - * @returns Stdout of the process - */ -function checkBundle(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput).toMatch("I am import!"); - expect(processOutput).toMatch("I am index!"); -} - -test("esbuild bundle", () => { - expect.assertions(2); - checkBundle(path.join(__dirname, "out", "esbuild", "index.js")); -}); - -test("rollup bundle", () => { - expect.assertions(2); - checkBundle(path.join(__dirname, "out", "rollup", "index.js")); -}); - -test("vite bundle", () => { - expect.assertions(2); - checkBundle(path.join(__dirname, "out", "vite", "index.js")); -}); - -test("webpack bundle", () => { - expect.assertions(2); - checkBundle(path.join(__dirname, "out", "webpack", "index.js")); -}); diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js deleted file mode 100644 index 733d5d48f137..000000000000 --- a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/import.js +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line no-console -console.log("I am import!"); - -export {}; diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js b/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js deleted file mode 100644 index 719d8428cac6..000000000000 --- a/packages/integration-tests/fixtures/dont-mess-up-user-code/input/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import "./import"; - -// eslint-disable-next-line no-console -console.log("I am index!"); diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts b/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts deleted file mode 100644 index 04689b2b370a..000000000000 --- a/packages/integration-tests/fixtures/dont-mess-up-user-code/setup.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const entryPointPath = path.resolve(__dirname, "input", "index.js"); -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles({ index: entryPointPath }, outputDir, { - telemetry: false, - release: { name: "I am release!", create: false }, - project: "releasesProject", - org: "releasesOrg", -}); diff --git a/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts b/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts deleted file mode 100644 index 080d9d124cd6..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/build-esbuild.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; -import { build } from "esbuild"; -import pluginOptions from "./plugin-options"; -import path from "path"; - -build({ - entryPoints: [path.join(__dirname, "input", "bundle.js")], - outdir: path.join(__dirname, "out", "esbuild"), - plugins: [sentryEsbuildPlugin(pluginOptions)], - minify: true, - bundle: true, - format: "cjs", - sourcemap: true, -}).catch((e) => { - // eslint-disable-next-line no-console - console.error(e); - process.exit(1); -}); diff --git a/packages/integration-tests/fixtures/errorhandling/build-rollup.ts b/packages/integration-tests/fixtures/errorhandling/build-rollup.ts deleted file mode 100644 index 4fed29ea9ead..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/build-rollup.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -import * as path from "path"; -import * as rollup from "rollup"; -import pluginOptions from "./plugin-options"; - -rollup - .rollup({ - input: { - index: path.join(__dirname, "input", "bundle.js"), - }, - plugins: [sentryRollupPlugin(pluginOptions)], - }) - .then((bundle) => - bundle.write({ - dir: path.join(__dirname, "out", "rollup"), - format: "cjs", - exports: "named", - }) - ) - .catch((e) => { - // eslint-disable-next-line no-console - console.error(e); - process.exit(1); - }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-vite.ts b/packages/integration-tests/fixtures/errorhandling/build-vite.ts deleted file mode 100644 index f16e75ba1971..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/build-vite.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import * as path from "path"; -import * as vite from "vite"; -import pluginOptions from "./plugin-options"; - -vite - .build({ - clearScreen: false, - build: { - outDir: path.join(__dirname, "out", "vite"), - rollupOptions: { - input: { - index: path.join(__dirname, "input", "bundle.js"), - }, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [sentryVitePlugin(pluginOptions) as unknown as vite.Plugin], - }) - .catch((e) => { - // eslint-disable-next-line no-console - console.error(e); - process.exit(1); - }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-webpack.ts b/packages/integration-tests/fixtures/errorhandling/build-webpack.ts deleted file mode 100644 index ec0722d3b128..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/build-webpack.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import * as path from "path"; -import { webpack } from "webpack"; -import pluginOptions from "./plugin-options"; - -webpack( - { - devtool: "source-map", - cache: false, - entry: { - index: path.join(__dirname, "input", "bundle.js"), - }, - output: { - path: path.join(__dirname, "out", "webpack"), - library: { - type: "commonjs", - }, - }, - mode: "production", - 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 deleted file mode 100644 index 03a0f61d33f2..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import path from "path"; -import { spawn } from "child_process"; -import { describe, test, expect, beforeAll, afterAll } from "vitest"; - -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. - env: { ...process.env, FAKE_SENTRY_PORT }, - shell: true, - }); - - const serverStarted = new Promise((resolve) => - sentryServer.on("spawn", () => { - resolve(); - }) - ); - - beforeAll(async () => { - await serverStarted; - }); - - afterAll(() => { - sentryServer.kill(); - }); - - const bundlersToTest = ["vite", "rollup", "webpack", "esbuild"]; - - test.each(bundlersToTest)( - "doesn't throw when Sentry server responds with error code for %s", - async (bundler) => { - const buildProcess = spawn("yarn", ["ts-node", path.join(__dirname, `build-${bundler}.ts`)], { - env: { - ...process.env, - FAKE_SENTRY_PORT, - // only retry once to avoid the test from timing out due to retries - SENTRY_HTTP_MAX_RETRIES: "1", - }, - stdio: "ignore", // <-- set to "inherit" to get build output. Deactivated to avoid spamming test logs. - shell: true, - }); - - const exitCode = await new Promise((resolve, reject) => { - buildProcess.on("exit", (code) => { - resolve(code ?? 99); - }); - - buildProcess.on("error", (err) => { - reject(err); - }); - }); - - expect(exitCode).toBe(0); - - buildProcess.kill(); - } - ); -}); diff --git a/packages/integration-tests/fixtures/errorhandling/fakeSentry.js b/packages/integration-tests/fixtures/errorhandling/fakeSentry.js deleted file mode 100644 index bacc95403e0e..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/fakeSentry.js +++ /dev/null @@ -1,16 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { createServer } = require("http"); - -const port = process.env["FAKE_SENTRY_PORT"] || 3000; - -const server = createServer((req, res) => { - // eslint-disable-next-line no-console - console.log("[SANTRY] incoming request", req.url); - res.statusCode = 503; - res.end("Error: Santry unreachable"); -}); - -server.listen(port, () => { - // eslint-disable-next-line no-console - console.log(`[SANTRY] running on http://localhost:${port}/`); -}); diff --git a/packages/integration-tests/fixtures/errorhandling/input/bundle.js b/packages/integration-tests/fixtures/errorhandling/input/bundle.js deleted file mode 100644 index aa70f660a1fc..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/input/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("whatever"); diff --git a/packages/integration-tests/fixtures/errorhandling/plugin-options.ts b/packages/integration-tests/fixtures/errorhandling/plugin-options.ts deleted file mode 100644 index fb5960b168d1..000000000000 --- a/packages/integration-tests/fixtures/errorhandling/plugin-options.ts +++ /dev/null @@ -1,10 +0,0 @@ -export default { - url: `http://localhost:${process.env["FAKE_SENTRY_PORT"] || 3000}`, - authToken: "fake-auth", - org: "fake-org", - project: "fake-project", - release: { - name: "1.0.0", - }, - debug: true, -}; 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 deleted file mode 100644 index 099a1cc48507..000000000000 --- a/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -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"); - -test("check functionality", () => { - const processOutput = childProcess.execSync(`node ${outputBundlePath}`, { encoding: "utf-8" }); - expect(processOutput).toMatch(/some-injected-value/); -}); - -test("check that output only contains one debug ID reference", async () => { - const bundleContent = await fs.promises.readFile(outputBundlePath, "utf-8"); - const debugIdReferences = bundleContent.match(/sentry-dbid-/g) ?? []; - expect(debugIdReferences).toHaveLength(1); -}); diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts deleted file mode 100644 index 25401bb5c6e1..000000000000 --- a/packages/integration-tests/fixtures/esbuild-inject-compat/input/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore just a test file -// eslint-disable-next-line no-console -console.log(process.env["FOO"]); diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts deleted file mode 100644 index 089b32ff1122..000000000000 --- a/packages/integration-tests/fixtures/esbuild-inject-compat/input/inject.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const process = { - env: { - FOO: "some-injected-value", - }, -}; -// eslint-disable-next-line no-undef -export const global = globalThis; diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts deleted file mode 100644 index d05014de1ea6..000000000000 --- a/packages/integration-tests/fixtures/esbuild-inject-compat/setup.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; -import esbuild from "esbuild019"; -import path from "path"; - -esbuild - .build({ - bundle: true, - entryPoints: [path.resolve(__dirname, "./input/index.ts")], - outdir: path.resolve(__dirname, "./out"), - inject: [path.resolve(__dirname, "./input/inject.ts")], - plugins: [ - sentryEsbuildPlugin({ - telemetry: false, - }), - ], - minify: false, - }) - .catch((e) => { - throw e; - }); 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 deleted file mode 100644 index 3953d6e1fe35..000000000000 --- a/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import childProcess from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -function checkBundleForDebugIds(bundlePath1: string, bundlePath2: string): string[] { - const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const debugIdMap1 = JSON.parse(process1Output).debugIds as Record; - const debugIds1 = Object.values(debugIdMap1); - expect(debugIds1.length).toBeGreaterThan(0); - expect(debugIds1).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - - expect(Object.keys(debugIdMap1)[0]).toContain("Error"); - - const process2Output = childProcess.execSync(`node ${bundlePath2}`, { encoding: "utf-8" }); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const debugIdMap2 = JSON.parse(process2Output).debugIds as Record; - const debugIds2 = Object.values(debugIdMap2); - expect(debugIds2.length).toBeGreaterThan(0); - expect(debugIds2).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - - expect(Object.keys(debugIdMap2)[0]).toContain("Error"); - - expect(debugIds1).not.toEqual(debugIds2); - - return [...debugIds1, ...debugIds2]; -} - -function checkBundleForRelease(bundlePath: string): void { - const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - expect(JSON.parse(processOutput).release).toBe("I AM A RELEASE!"); -} - -// Query params and hashes are weird on windows -(process.platform === "win32" ? describe.skip : describe)("Injection with query params", () => { - test("vite bundle", () => { - checkBundleForDebugIds( - path.join(__dirname, "out", "vite", "bundle1.js?foo=bar#baz"), - path.join(__dirname, "out", "vite", "bundle2.js?foo=bar#baz") - ); - checkBundleForRelease(path.join(__dirname, "out", "vite", "bundle1.js?foo=bar#baz")); - }); - - test("rollup bundle", () => { - checkBundleForDebugIds( - path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz"), - path.join(__dirname, "out", "rollup", "bundle2.js?foo=bar#baz") - ); - checkBundleForRelease(path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz")); - }); - - test("webpack bundle", () => { - checkBundleForDebugIds( - path.join(__dirname, "out", "webpack", "bundle1.js"), - path.join(__dirname, "out", "webpack", "bundle2.js") - ); - checkBundleForRelease(path.join(__dirname, "out", "webpack", "bundle1.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js deleted file mode 100644 index beedb09651e5..000000000000 --- a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle1.js +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line no-console -console.log( - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - JSON.stringify({ debugIds: global._sentryDebugIds, release: global.SENTRY_RELEASE.id }) -); - -// Just so the two bundles generate different hashes: -global.iAmBundle1 = 1; diff --git a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js b/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js deleted file mode 100644 index 13ee683cf33d..000000000000 --- a/packages/integration-tests/fixtures/injection-with-query-param/input/bundle2.js +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line no-console -console.log( - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access - JSON.stringify({ debugIds: global._sentryDebugIds, release: global.SENTRY_RELEASE.id }) -); - -// Just so the two bundles generate different hashes: -global.iAmBundle2 = 2; diff --git a/packages/integration-tests/fixtures/injection-with-query-param/setup.ts b/packages/integration-tests/fixtures/injection-with-query-param/setup.ts deleted file mode 100644 index 681d4b234e58..000000000000 --- a/packages/integration-tests/fixtures/injection-with-query-param/setup.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as path from "path"; -import { createCjsBundlesWithQueryParam } from "../../utils/create-cjs-bundles-with-query"; - -// Query params and hashes are weird on windows -if (process.platform !== "win32") { - const outputDir = path.resolve(__dirname, "out"); - createCjsBundlesWithQueryParam( - { - bundle1: path.resolve(__dirname, "input", "bundle1.js"), - bundle2: path.resolve(__dirname, "input", "bundle2.js"), - }, - outputDir, - { - telemetry: false, - release: { name: "I AM A RELEASE!", create: false }, - } - ); -} diff --git a/packages/integration-tests/fixtures/metadata-injection/input/bundle.js b/packages/integration-tests/fixtures/metadata-injection/input/bundle.js deleted file mode 100644 index bf1389636d9e..000000000000 --- a/packages/integration-tests/fixtures/metadata-injection/input/bundle.js +++ /dev/null @@ -1,3 +0,0 @@ -// Simply output the metadata to the console so it can be checked in a test -// eslint-disable-next-line no-console -console.log(JSON.stringify(global._sentryModuleMetadata)); diff --git a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts deleted file mode 100644 index 60c097ece4cb..000000000000 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { execSync } from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -function checkBundle(bundlePath: string): void { - const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - - const map = JSON.parse(output) as Record; - - // There should be only one key in the map - expect(Object.values(map)).toHaveLength(1); - // The value should be the expected metadata - expect(Object.values(map)).toEqual([{ team: "frontend" }]); - - // The key is the stack trace of the error thrown in the file - expect(Object.keys(map)[0]).toContain("Error"); - expect(Object.keys(map)[0]).toContain("bundle.js"); -} - -describe("metadata injection", () => { - test("webpack bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); - }); - - test("esbuild bundle", () => { - checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); - }); - - test("rollup bundle", () => { - checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); - }); - - test("vite bundle", () => { - checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts deleted file mode 100644 index 45a7dcb625cf..000000000000 --- a/packages/integration-tests/fixtures/metadata-injection/setup.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - moduleMetadata: { team: "frontend" }, - }, - ["webpack", "esbuild", "rollup", "vite"] -); diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js b/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js deleted file mode 100644 index 13a0b516a3a7..000000000000 --- a/packages/integration-tests/fixtures/metadata-with-debug-id/input/bundle.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ -// Output both debug IDs and metadata to verify both features work together -// eslint-disable-next-line no-console -console.log( - JSON.stringify({ - debugIds: global._sentryDebugIds, - metadata: global._sentryModuleMetadata, - }) -); 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 deleted file mode 100644 index acd9ff5b91a5..000000000000 --- a/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { execSync } from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -interface BundleOutput { - debugIds: Record | undefined; - metadata: Record | undefined; -} - -function checkBundle(bundlePath: string): void { - const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - const result = JSON.parse(output) as BundleOutput; - - // Check that debug IDs are present - expect(result.debugIds).toBeDefined(); - const debugIds = Object.values(result.debugIds ?? {}); - expect(debugIds.length).toBeGreaterThan(0); - // Verify debug ID format (UUID v4) - expect(debugIds).toContainEqual( - expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/) - ); - // The key should be a stack trace - expect(Object.keys(result.debugIds ?? {})[0]).toContain("Error"); - - // Check that metadata is present - expect(result.metadata).toBeDefined(); - const metadataValues = Object.values(result.metadata ?? {}); - expect(metadataValues).toHaveLength(1); - expect(metadataValues).toEqual([{ team: "frontend" }]); - // The key should be a stack trace - expect(Object.keys(result.metadata ?? {})[0]).toContain("Error"); -} - -describe("metadata with debug ID injection", () => { - test("webpack bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); - }); - - test("esbuild bundle", () => { - checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); - }); - - test("rollup bundle", () => { - checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); - }); - - test("vite bundle", () => { - checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts b/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts deleted file mode 100644 index fb65cab60a15..000000000000 --- a/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - // Enable both moduleMetadata AND debug ID injection (sourcemaps enabled by default) - moduleMetadata: { team: "frontend" }, - telemetry: false, - release: { name: "test-release", create: false }, - }, - ["webpack", "esbuild", "rollup", "vite"] -); diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js b/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js deleted file mode 100644 index aa73bfa8be00..000000000000 --- a/packages/integration-tests/fixtures/release-value-with-quotes/input/bundle.js +++ /dev/null @@ -1,3 +0,0 @@ -// Simply output the metadata to the console so it can be checked in a test -// eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access -console.log(JSON.stringify(global.SENTRY_RELEASE.id)); 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 deleted file mode 100644 index 344e279cee05..000000000000 --- a/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { execSync } from "child_process"; -import path from "path"; -import { describe, test, expect } from "vitest"; - -function checkBundle(bundlePath: string): void { - const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(output.trimEnd()).toBe('"i am a dangerous release value because I contain a \\""'); -} - -describe("Properly escapes release values before injecting", () => { - test("webpack bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); - }); - - test("esbuild bundle", () => { - checkBundle(path.join(__dirname, "out", "esbuild", "bundle.js")); - }); - - test("rollup bundle", () => { - checkBundle(path.join(__dirname, "out", "rollup", "bundle.js")); - }); - - test("vite bundle", () => { - checkBundle(path.join(__dirname, "out", "vite", "bundle.js")); - }); -}); diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts b/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts deleted file mode 100644 index 648e7bda6813..000000000000 --- a/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as path from "path"; -import { createCjsBundles } from "../../utils/create-cjs-bundles"; - -const outputDir = path.resolve(__dirname, "out"); - -createCjsBundles( - { - bundle: path.resolve(__dirname, "input", "bundle.js"), - }, - outputDir, - { - release: { name: 'i am a dangerous release value because I contain a "' }, - }, - ["webpack", "esbuild", "rollup", "vite"] -); diff --git a/packages/integration-tests/fixtures/telemetry/input/bundle1.js b/packages/integration-tests/fixtures/telemetry/input/bundle1.js deleted file mode 100644 index fbf083a4d001..000000000000 --- a/packages/integration-tests/fixtures/telemetry/input/bundle1.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-console -console.log("bundle1"); diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts deleted file mode 100644 index 68d5f0ce8a52..000000000000 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ /dev/null @@ -1,150 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -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[]; -} { - return global; -} - -test("rollup bundle telemetry", async () => { - const gbl = getGlobalWithInterceptor(); - gbl.__SENTRY_INTERCEPT_TRANSPORT__ = []; - - await rollup - .rollup({ - input: { bundle1: path.resolve(__dirname, "input", "bundle1.js") }, - plugins: [ - sentryRollupPlugin({ - release: { - inject: false, - }, - telemetry: true, - }), - ], - }) - .then((bundle) => - bundle.write({ - sourcemap: true, - dir: path.join(path.resolve(__dirname, "out"), "rollup"), - format: "cjs", - exports: "named", - }) - ); - - // Ensure the session gets closed - process.emit("beforeExit", 0); - - expect(gbl.__SENTRY_INTERCEPT_TRANSPORT__).toEqual( - expect.arrayContaining([ - // Fist we should have a session start - expect.arrayContaining([ - [ - [ - { type: "session" }, - expect.objectContaining({ - sid: expect.any(String), - init: true, - started: expect.any(String), - timestamp: expect.any(String), - status: "ok", - errors: 0, - }), - ], - ], - ]), - // Then we should get a transaction for execution - [ - { - event_id: expect.any(String), - sent_at: expect.any(String), - sdk: { name: "sentry.javascript.node", version: expect.any(String) }, - trace: expect.objectContaining({ - environment: "production", - release: expect.any(String), - sample_rate: "1", - transaction: "Sentry Bundler Plugin execution", - sampled: "true", - }), - }, - [ - [ - { type: "transaction" }, - expect.objectContaining({ - contexts: { - trace: { - span_id: expect.any(String), - trace_id: expect.any(String), - data: { - "sentry.origin": "manual", - "sentry.source": "custom", - "sentry.sample_rate": 1, - }, - origin: "manual", - }, - runtime: { name: "node", version: expect.any(String) }, - }, - spans: [], - start_timestamp: expect.any(Number), - timestamp: expect.any(Number), - transaction: "Sentry Bundler Plugin execution", - type: "transaction", - transaction_info: { source: "custom" }, - platform: "node", - event_id: expect.any(String), - environment: "production", - release: expect.any(String), - tags: expect.objectContaining({ - "upload-legacy-sourcemaps": false, - "module-metadata": false, - "inject-build-information": false, - "set-commits": "auto", - "finalize-release": true, - "deploy-options": false, - "custom-error-handler": false, - "sourcemaps-assets": false, - "delete-after-upload": false, - "sourcemaps-disabled": false, - "react-annotate": false, - "meta-framework": "none", - "application-key-set": false, - "bundler-major-version": expect.any(String), - bundler: "rollup", - }), - sdk: expect.objectContaining({ - name: "sentry.javascript.node", - version: expect.any(String), - packages: [{ name: "npm:@sentry/node", version: expect.any(String) }], - }), - }), - ], - ], - ], - // Then we should get a session exit - [ - { - sent_at: expect.any(String), - sdk: { name: "sentry.javascript.node", version: expect.any(String) }, - }, - [ - [ - { type: "session" }, - { - sid: expect.any(String), - init: false, - started: expect.any(String), - timestamp: expect.any(String), - status: "exited", - errors: 0, - duration: expect.any(Number), - attrs: { release: expect.any(String), environment: "production" }, - }, - ], - ], - ], - ]) - ); -}); 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 deleted file mode 100644 index 04c3edddad0a..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import * as path from "path"; -import * as vite from "vite"; - -const inputDir = path.join(__dirname, "input"); - -void vite.build({ - clearScreen: false, - root: inputDir, - build: { - sourcemap: true, - outDir: path.join(__dirname, "out", "with-plugin"), - emptyOutDir: true, - rollupOptions: { - input: { - index: path.join(inputDir, "index.html"), - page1: path.join(inputDir, "page1.html"), - page2: path.join(inputDir, "page2.html"), - }, - }, - }, - plugins: [ - 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/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts deleted file mode 100644 index 85112284e9f0..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-without-plugin.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as path from "path"; -import * as vite from "vite"; - -const inputDir = path.join(__dirname, "input"); - -void vite.build({ - clearScreen: false, - root: inputDir, - build: { - sourcemap: true, - outDir: path.join(__dirname, "out", "without-plugin"), - emptyOutDir: true, - rollupOptions: { - input: { - index: path.join(inputDir, "index.html"), - page1: path.join(inputDir, "page1.html"), - page2: path.join(inputDir, "page2.html"), - }, - }, - }, - plugins: [], -}); diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html deleted file mode 100644 index b18731ac6fab..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Index Page - - -

Index Page - No Scripts

- - - diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html deleted file mode 100644 index 44cb873cef18..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page1.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Page 1 - - -

Page 1 - With Shared Module

- - - diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html deleted file mode 100644 index 6cac57fe9b22..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/page2.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Page 2 - - -

Page 2 - With Shared Module

- - - diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js b/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js deleted file mode 100644 index 07182654d2da..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/input/shared-module.js +++ /dev/null @@ -1,10 +0,0 @@ -// This is a shared module that is used by multiple HTML pages -export function greet(name) { - // eslint-disable-next-line no-console - console.log(`Hello, ${String(name)}!`); -} - -export const VERSION = "1.0.0"; - -// Side effect: greet on load -greet("World"); 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 deleted file mode 100644 index 069d66bea892..000000000000 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Test for GitHub Issue #829: - * sentryVitePlugin creates unnecessary JS modules for each index page - * - * In a Vite multi-page app (MPA), sentryVitePlugin causes "vite build" to emit - * a separate, unique, unexpected JS module for each index page. - * - * Expected: The plugin should add metadata to generated modules but should NOT - * rework the import graph, create new modules, or add script tags to pages - * that didn't have them in the first place. - * - * Actual: A unique module is generated for every HTML page in rollup.options.input. - * Pages that had been sharing modules will instead load a page-specific module - * that imports the shared code. Pages that didn't contain ANY scripts will now have one. - */ -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"); - if (!fs.existsSync(assetsDir)) { - return []; - } - return fs.readdirSync(assetsDir).filter((file) => file.endsWith(".js")); -} - -function getScriptTagsFromHtml(htmlPath: string): string[] { - if (!fs.existsSync(htmlPath)) { - return []; - } - const content = fs.readFileSync(htmlPath, "utf-8"); - const scriptMatches = content.match(/]*>/g) || []; - return scriptMatches; -} - -describe("Vite MPA Extra Modules Issue (#829)", () => { - const outWithoutPlugin = path.join(__dirname, "out", "without-plugin"); - const outWithPlugin = path.join(__dirname, "out", "with-plugin"); - - beforeAll(() => { - // Clean output directories - if (fs.existsSync(outWithoutPlugin)) { - fs.rmSync(outWithoutPlugin, { recursive: true }); - } - if (fs.existsSync(outWithPlugin)) { - fs.rmSync(outWithPlugin, { recursive: true }); - } - - // Build without plugin - childProcess.execSync(`yarn ts-node ${path.join(__dirname, "build-vite-without-plugin.ts")}`, { - encoding: "utf-8", - stdio: "inherit", - }); - - // Build with plugin - childProcess.execSync(`yarn ts-node ${path.join(__dirname, "build-vite-with-plugin.ts")}`, { - encoding: "utf-8", - stdio: "inherit", - }); - }, 60_000); - - it("should not create extra JS modules when sentry plugin is enabled", () => { - const assetsWithoutPlugin = getAssetFiles(outWithoutPlugin); - const assetsWithPlugin = getAssetFiles(outWithPlugin); - - // The number of JS files should be the same (or very close) - // With the bug, the plugin creates extra modules like index.js, page1.js, page2.js - // for each HTML entry point - expect(assetsWithPlugin).toHaveLength(assetsWithoutPlugin.length); - }); - - it("should not add script tags to HTML pages that had none", () => { - // index.html originally has no scripts - const indexWithoutPlugin = getScriptTagsFromHtml(path.join(outWithoutPlugin, "index.html")); - const indexWithPlugin = getScriptTagsFromHtml(path.join(outWithPlugin, "index.html")); - - // The number of script tags should be the same - // With the bug, index.html gets a script tag added even though it had none - expect(indexWithPlugin).toHaveLength(indexWithoutPlugin.length); - }); - - it("should preserve shared module imports without creating page-specific wrappers", () => { - // page1.html and page2.html should both reference the same shared module - // not page-specific modules - const page1WithPlugin = fs.readFileSync(path.join(outWithPlugin, "page1.html"), "utf-8"); - const page2WithPlugin = fs.readFileSync(path.join(outWithPlugin, "page2.html"), "utf-8"); - - // Extract the JS file references - const page1ScriptMatch = page1WithPlugin.match(/src="([^"]+\.js)"/); - const page2ScriptMatch = page2WithPlugin.match(/src="([^"]+\.js)"/); - - // Both pages should reference the same shared module, not page-specific ones - // With the bug, page1.html references page1-xxx.js and page2.html references page2-xxx.js - // instead of both referencing shared-module-xxx.js - const page1Script = page1ScriptMatch?.[1]; - const page2Script = page2ScriptMatch?.[1]; - - // They should NOT be page-specific (named after the page) - expect(page1Script).not.toMatch(/page1/i); - expect(page2Script).not.toMatch(/page2/i); - }); -}); diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json deleted file mode 100644 index c64d62257799..000000000000 --- a/packages/integration-tests/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@sentry-internal/integration-tests", - "version": "5.2.1", - "license": "MIT", - "private": true, - "scripts": { - "test": "run-s test:setup test:vitest", - "test:setup": "ts-node scripts/run-fixture-setups.ts", - "test:vitest": "vitest run", - "lint": "eslint .", - "check:types": "tsc --project ./tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./fixtures/*/out", - "clean:deps": "premove node_modules" - }, - "dependencies": { - "@babel/preset-react": "^7.23.3", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", - "@sentry/bundler-plugin-core": "5.2.1", - "@sentry/esbuild-plugin": "5.2.1", - "@sentry/rollup-plugin": "5.2.1", - "@sentry/vite-plugin": "5.2.1", - "@sentry/webpack-plugin": "5.2.1", - "@types/react": "^18.2.0", - "@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", - "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", - "webpack": "5.76.0" - }, - "devDependencies": { - "premove": "^4.0.0" - }, - "volta": { - "extends": "../../package.json" - } -} diff --git a/packages/integration-tests/scripts/run-fixture-setups.ts b/packages/integration-tests/scripts/run-fixture-setups.ts deleted file mode 100644 index 07b0678f8775..000000000000 --- a/packages/integration-tests/scripts/run-fixture-setups.ts +++ /dev/null @@ -1,16 +0,0 @@ -import fs from "fs"; -import path from "path"; -import childProcess from "child_process"; - -const fixturePaths = fs - .readdirSync(path.join(__dirname, "..", "fixtures")) - .map((fixtureDir) => path.join(__dirname, "..", "fixtures", fixtureDir)); - -fixturePaths.forEach((fixturePath) => { - const setupScriptPath = path.join(fixturePath, "setup.ts"); - if (fs.existsSync(setupScriptPath)) { - childProcess.execSync(`yarn ts-node --transpileOnly ${setupScriptPath}`, { - stdio: "inherit", - }); - } -}); diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json deleted file mode 100644 index b472a5524ce5..000000000000 --- a/packages/integration-tests/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*"], - "compilerOptions": { - "esModuleInterop": true, - "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 deleted file mode 100644 index dc18be8a5022..000000000000 --- a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts +++ /dev/null @@ -1,139 +0,0 @@ -import * as vite from "vite"; -import react from "@vitejs/plugin-react"; -import * as path from "path"; -import * as rollup from "rollup"; -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 } 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"; - -export function createCjsBundles( - entrypoints: { [name: string]: string }, - outFolder: string, - sentryPluginOptions: Options, - plugins: string[] = [] -): void { - if (plugins.length === 0 || plugins.includes("vite")) { - void vite.build({ - clearScreen: false, - build: { - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [ - react({ jsxRuntime: "automatic" }), - sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin, - ], - }); - } - if (plugins.length === 0 || plugins.includes("rollup")) { - void rollup - .rollup({ - input: entrypoints, - plugins: [ - resolve({ - extensions: RESOLVABLE_EXTENSIONS, - }), - commonjs(), - sentryRollupPlugin(sentryPluginOptions), - babelPlugin({ - babelHelpers: "bundled", - presets: [["@babel/preset-react", { runtime: "automatic" }]], - extensions: RESOLVABLE_EXTENSIONS, - }), - ], - }) - .then((bundle) => - bundle.write({ - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", - }) - ); - } - - if (plugins.length === 0 || plugins.includes("esbuild")) { - void esbuild.build({ - entryPoints: entrypoints, - outdir: path.join(outFolder, "esbuild"), - plugins: [sentryEsbuildPlugin(sentryPluginOptions)], - minify: true, - bundle: true, - jsx: "automatic", - format: "cjs", - }); - } - - if (plugins.length === 0 || plugins.includes("webpack")) { - webpack( - { - cache: false, - entry: entrypoints, - output: { - path: path.join(outFolder, "webpack"), - library: { - type: "commonjs", - }, - }, - optimization: { - minimize: false, - }, - mode: "production", - resolve: { - extensions: RESOLVABLE_EXTENSIONS, - }, - module: { - rules: [ - { - test: RESOLVABLE_JSX_EXTENSIONS_REGEX, - exclude: /node_modules/, - use: { - loader: "babel-loader", - options: { - presets: [["@babel/preset-react", { runtime: "automatic" }]], - }, - }, - }, - ], - }, - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - handleWebpack - ); - } -} - -const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; -const RESOLVABLE_JSX_EXTENSIONS_REGEX = /\.?(j|t)sx$/; - -function handleWebpack(err: Error | undefined, stats: Stats | undefined) { - if (err) { - throw err; - } - - const info = stats?.toJson(); - if (!stats || !info) return; - - if (stats.hasErrors()) { - // eslint-disable-next-line no-console - console.error(info.errors); - } - - if (stats.hasWarnings()) { - // eslint-disable-next-line no-console - console.warn(info.warnings); - } -} diff --git a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts deleted file mode 100644 index bec26dc9a8cd..000000000000 --- a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts +++ /dev/null @@ -1,77 +0,0 @@ -import * as vite from "vite"; -import * as path from "path"; -import * as rollup from "rollup"; -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"; - -export function createCjsBundlesWithQueryParam( - entrypoints: { [name: string]: string }, - outFolder: string, - sentryPluginOptions: Options, - plugins: string[] = [] -): void { - if (plugins.length === 0 || plugins.includes("vite")) { - void vite.build({ - clearScreen: false, - build: { - sourcemap: true, - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js?foo=bar#baz", - }, - }, - }, - plugins: [sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin], - }); - } - if (plugins.length === 0 || plugins.includes("rollup")) { - void rollup - .rollup({ - input: entrypoints, - plugins: [sentryRollupPlugin(sentryPluginOptions)], - }) - .then((bundle) => - bundle.write({ - sourcemap: true, - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", - entryFileNames: "[name].js?foo=bar#baz", - }) - ); - } - - if (plugins.length === 0 || plugins.includes("esbuild")) { - // esbuild doesn't have an option to add a query param - } - - if (plugins.length === 0 || plugins.includes("webpack")) { - webpack( - { - devtool: "source-map", - cache: false, - entry: entrypoints, - output: { - 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", - }, - }, - mode: "production", - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - (err) => { - if (err) { - throw err; - } - } - ); - } -} diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts deleted file mode 100644 index 648ec6be0e34..000000000000 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ /dev/null @@ -1,88 +0,0 @@ -import * as vite from "vite"; -import * as path from "path"; -import * as rollup from "rollup"; -import { webpack } from "webpack"; -import * as esbuild from "esbuild"; -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"; - -type Bundlers = "webpack" | "esbuild" | "rollup" | "vite" | string; - -export function createCjsBundles( - entrypoints: { [name: string]: string }, - outFolder: string, - sentryPluginOptions: Options, - plugins: Bundlers[] = [] -): void { - if (plugins.length === 0 || plugins.includes("vite")) { - void vite.build({ - clearScreen: false, - build: { - sourcemap: true, - outDir: path.join(outFolder, "vite"), - rollupOptions: { - input: entrypoints, - output: { - format: "cjs", - entryFileNames: "[name].js", - }, - }, - }, - plugins: [sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin], - }); - } - - if (plugins.length === 0 || plugins.includes("rollup")) { - void rollup - .rollup({ - input: entrypoints, - plugins: [sentryRollupPlugin(sentryPluginOptions)], - }) - .then((bundle) => - bundle.write({ - sourcemap: true, - dir: path.join(outFolder, "rollup"), - format: "cjs", - exports: "named", - }) - ); - } - - if (plugins.length === 0 || plugins.includes("esbuild")) { - void esbuild.build({ - sourcemap: true, - entryPoints: entrypoints, - outdir: path.join(outFolder, "esbuild"), - plugins: [sentryEsbuildPlugin(sentryPluginOptions)], - minify: true, - bundle: true, - format: "cjs", - }); - } - - if (plugins.length === 0 || plugins.includes("webpack")) { - webpack( - { - devtool: "source-map", - cache: false, - entry: entrypoints, - output: { - path: path.join(outFolder, "webpack"), - library: { - type: "commonjs", - }, - }, - mode: "production", - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - (err) => { - if (err) { - throw err; - } - } - ); - } -} diff --git a/yarn.lock b/yarn.lock index 0668ea6828a0..54077baec899 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,7 +44,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.18.5", "@babel/core@^7.23.5": +"@babel/core@^7.18.5": version "7.24.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== @@ -113,7 +113,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== @@ -209,20 +209,6 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx-self@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" - integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-source@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" - integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" @@ -327,11 +313,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== -"@esbuild/android-arm64@0.19.4": - version "0.19.4" - 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" @@ -342,11 +323,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== -"@esbuild/android-arm@0.19.4": - version "0.19.4" - 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" @@ -357,11 +333,6 @@ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== -"@esbuild/android-x64@0.19.4": - version "0.19.4" - 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" @@ -372,11 +343,6 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== -"@esbuild/darwin-arm64@0.19.4": - version "0.19.4" - 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" @@ -387,11 +353,6 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== -"@esbuild/darwin-x64@0.19.4": - version "0.19.4" - 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" @@ -402,11 +363,6 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== -"@esbuild/freebsd-arm64@0.19.4": - version "0.19.4" - 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" @@ -417,11 +373,6 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== -"@esbuild/freebsd-x64@0.19.4": - version "0.19.4" - 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" @@ -432,11 +383,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== -"@esbuild/linux-arm64@0.19.4": - version "0.19.4" - 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" @@ -447,11 +393,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== -"@esbuild/linux-arm@0.19.4": - version "0.19.4" - 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" @@ -462,11 +403,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-ia32@0.19.4": - version "0.19.4" - 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" @@ -482,11 +418,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== -"@esbuild/linux-loong64@0.19.4": - version "0.19.4" - 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" @@ -497,11 +428,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== -"@esbuild/linux-mips64el@0.19.4": - version "0.19.4" - 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" @@ -512,11 +438,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== -"@esbuild/linux-ppc64@0.19.4": - version "0.19.4" - 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" @@ -527,11 +448,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== -"@esbuild/linux-riscv64@0.19.4": - version "0.19.4" - 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" @@ -542,11 +458,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== -"@esbuild/linux-s390x@0.19.4": - version "0.19.4" - 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" @@ -557,11 +468,6 @@ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== -"@esbuild/linux-x64@0.19.4": - version "0.19.4" - 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" @@ -577,11 +483,6 @@ resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== -"@esbuild/netbsd-x64@0.19.4": - version "0.19.4" - 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" @@ -597,11 +498,6 @@ resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== -"@esbuild/openbsd-x64@0.19.4": - version "0.19.4" - 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" @@ -617,11 +513,6 @@ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== -"@esbuild/sunos-x64@0.19.4": - version "0.19.4" - 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" @@ -632,11 +523,6 @@ resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== -"@esbuild/win32-arm64@0.19.4": - version "0.19.4" - 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" @@ -647,11 +533,6 @@ resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== -"@esbuild/win32-ia32@0.19.4": - version "0.19.4" - 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" @@ -662,11 +543,6 @@ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== -"@esbuild/win32-x64@0.19.4": - version "0.19.4" - 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" @@ -1086,47 +962,6 @@ resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz#eed997f37f928a3300bbe2161f42687d8a3ae759" integrity sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg== -"@rollup/plugin-babel@^6.0.4": - version "6.0.4" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" - integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@rollup/pluginutils" "^5.0.1" - -"@rollup/plugin-commonjs@^25.0.7": - version "25.0.7" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" - integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - commondir "^1.0.1" - estree-walker "^2.0.2" - glob "^8.0.3" - is-reference "1.2.1" - magic-string "^0.30.3" - -"@rollup/plugin-node-resolve@^15.2.3": - version "15.2.3" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" - integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/resolve" "1.20.2" - deepmerge "^4.2.2" - is-builtin-module "^3.2.1" - is-module "^1.0.0" - resolve "^1.22.1" - -"@rollup/pluginutils@^5.0.1": - version "5.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - "@rollup/rollup-android-arm-eabi@4.59.0": version "4.59.0" resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz#a6742c74c7d9d6d604ef8a48f99326b4ecda3d82" @@ -1551,7 +1386,7 @@ dependencies: "@types/node" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.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" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -1580,11 +1415,6 @@ dependencies: undici-types "~5.26.4" -"@types/prop-types@*": - version "15.7.11" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" - integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== - "@types/qs@*": version "6.9.7" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -1595,25 +1425,6 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react@^18.2.0": - version "18.2.48" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz#11df5664642d0bd879c1f58bc1d37205b064e8f1" - integrity sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/resolve@1.20.2": - version "1.20.2" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== - -"@types/scheduler@*": - version "0.16.8" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - "@types/semver@^7.3.12": version "7.5.0" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" @@ -1757,17 +1568,6 @@ "@typescript-eslint/types" "5.59.7" eslint-visitor-keys "^3.3.0" -"@vitejs/plugin-react@^4.2.1": - version "4.2.1" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" - integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== - dependencies: - "@babel/core" "^7.23.5" - "@babel/plugin-transform-react-jsx-self" "^7.23.3" - "@babel/plugin-transform-react-jsx-source" "^7.23.3" - "@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" @@ -2160,16 +1960,6 @@ axios@^1.12.0: form-data "^4.0.5" proxy-from-env "^2.1.0" -babel-loader@^8.0.0: - version "8.3.0" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -2185,11 +1975,6 @@ base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - bl@^4.0.3: version "4.1.0" resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -2269,11 +2054,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -2399,11 +2179,6 @@ commander@^2.20.0: resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2471,11 +2246,6 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2495,11 +2265,6 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -2614,11 +2379,6 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2755,260 +2515,106 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" - integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== - esbuild-android-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== -esbuild-android-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" - integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== - esbuild-android-arm64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== -esbuild-darwin-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" - integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== - esbuild-darwin-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== -esbuild-darwin-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" - integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== - esbuild-darwin-arm64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== -esbuild-freebsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" - integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== - esbuild-freebsd-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== -esbuild-freebsd-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" - integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== - esbuild-freebsd-arm64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== -esbuild-linux-32@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" - integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== - esbuild-linux-32@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== -esbuild-linux-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" - integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== - esbuild-linux-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== -esbuild-linux-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" - integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== - esbuild-linux-arm64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== -esbuild-linux-arm@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" - integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== - esbuild-linux-arm@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== -esbuild-linux-mips64le@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" - integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== - esbuild-linux-mips64le@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== -esbuild-linux-ppc64le@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" - integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== - esbuild-linux-ppc64le@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== -esbuild-linux-riscv64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" - integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== - esbuild-linux-riscv64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== -esbuild-linux-s390x@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" - integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== - esbuild-linux-s390x@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== -esbuild-netbsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" - integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== - esbuild-netbsd-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== -esbuild-openbsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" - integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== - esbuild-openbsd-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== -esbuild-sunos-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" - integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== - esbuild-sunos-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== -esbuild-windows-32@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" - integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== - esbuild-windows-32@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== -esbuild-windows-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" - integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== - esbuild-windows-64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== -esbuild-windows-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" - integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== - esbuild-windows-arm64@0.14.54: version "0.14.54" resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== -"esbuild019@npm:esbuild@^0.19.4": - version "0.19.4" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz#cdf5c4c684956d550bc3c6d0c01dac7fef6c75b1" - integrity sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA== - optionalDependencies: - "@esbuild/android-arm" "0.19.4" - "@esbuild/android-arm64" "0.19.4" - "@esbuild/android-x64" "0.19.4" - "@esbuild/darwin-arm64" "0.19.4" - "@esbuild/darwin-x64" "0.19.4" - "@esbuild/freebsd-arm64" "0.19.4" - "@esbuild/freebsd-x64" "0.19.4" - "@esbuild/linux-arm" "0.19.4" - "@esbuild/linux-arm64" "0.19.4" - "@esbuild/linux-ia32" "0.19.4" - "@esbuild/linux-loong64" "0.19.4" - "@esbuild/linux-mips64el" "0.19.4" - "@esbuild/linux-ppc64" "0.19.4" - "@esbuild/linux-riscv64" "0.19.4" - "@esbuild/linux-s390x" "0.19.4" - "@esbuild/linux-x64" "0.19.4" - "@esbuild/netbsd-x64" "0.19.4" - "@esbuild/openbsd-x64" "0.19.4" - "@esbuild/sunos-x64" "0.19.4" - "@esbuild/win32-arm64" "0.19.4" - "@esbuild/win32-ia32" "0.19.4" - "@esbuild/win32-x64" "0.19.4" - -esbuild@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" - integrity sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw== - optionalDependencies: - esbuild-android-64 "0.14.49" - esbuild-android-arm64 "0.14.49" - esbuild-darwin-64 "0.14.49" - esbuild-darwin-arm64 "0.14.49" - esbuild-freebsd-64 "0.14.49" - esbuild-freebsd-arm64 "0.14.49" - esbuild-linux-32 "0.14.49" - esbuild-linux-64 "0.14.49" - esbuild-linux-arm "0.14.49" - esbuild-linux-arm64 "0.14.49" - esbuild-linux-mips64le "0.14.49" - esbuild-linux-ppc64le "0.14.49" - esbuild-linux-riscv64 "0.14.49" - esbuild-linux-s390x "0.14.49" - esbuild-netbsd-64 "0.14.49" - esbuild-openbsd-64 "0.14.49" - esbuild-sunos-64 "0.14.49" - esbuild-windows-32 "0.14.49" - esbuild-windows-64 "0.14.49" - esbuild-windows-arm64 "0.14.49" - esbuild@0.17.19: version "0.17.19" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" @@ -3251,11 +2857,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^2.0.2: - version "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" @@ -3404,23 +3005,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -3629,17 +3213,6 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -3892,13 +3465,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -3945,11 +3511,6 @@ is-interactive@^1.0.0: resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -3972,13 +3533,6 @@ is-path-inside@^3.0.3: resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-reference@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -4117,7 +3671,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: +json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -4170,15 +3724,6 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - localforage@^1.8.1: version "1.10.0" resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" @@ -4186,13 +3731,6 @@ localforage@^1.8.1: dependencies: lie "3.1.1" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -4213,7 +3751,7 @@ log-symbols@^4.0.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -4244,20 +3782,13 @@ lru_map@^0.3.3: resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== -magic-string@^0.30.21, magic-string@^0.30.3, magic-string@~0.30.8: +magic-string@^0.30.21, magic-string@~0.30.8: 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.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" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -4676,13 +4207,6 @@ oxfmt@^0.33.0: "@oxfmt/binding-win32-ia32-msvc" "0.33.0" "@oxfmt/binding-win32-x64-msvc" "0.33.0" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -4690,13 +4214,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -4704,11 +4221,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4814,13 +4326,6 @@ pify@^3.0.0: resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - postcss@^8.4.14: version "8.4.23" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" @@ -4929,14 +4434,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - react-is@^16.13.1: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -4947,18 +4444,6 @@ react-is@^18.3.1: resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5142,22 +4627,6 @@ safe-regex-test@^1.0.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - 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" @@ -5172,7 +4641,7 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== From 5c677ff6a5234b99cf7d1dba1885bfbb0901e6d8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 8 May 2026 00:28:23 +0200 Subject: [PATCH 625/640] chore: Use Rolldown v1 stable (#924) --- .../package.json | 2 +- packages/bundler-plugin-core/package.json | 2 +- packages/esbuild-plugin/package.json | 2 +- .../fixtures/rolldown/package.json | 2 +- packages/rollup-plugin/package.json | 2 +- packages/vite-plugin/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- yarn.lock | 250 ++++++++++-------- 8 files changed, 143 insertions(+), 121 deletions(-) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 365f14b5c9c1..989b999fc4eb 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -59,7 +59,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 97d3d5109246..b5830d1a5b16 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -72,7 +72,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 952bc85b60ad..31d33e860e63 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -57,7 +57,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 8e05e8dbd5ee..c98350287501 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -6,7 +6,7 @@ "dependencies": { "@sentry/rollup-plugin": "5.2.1", "react": "19.2.4", - "rolldown": "1.0.0-rc.10" + "rolldown": "1.0.0" }, "pnpm": { "overrides": { diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 2b17cd941dc9..684e266644a3 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -67,7 +67,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 118d61376bd5..88b2d097bd3b 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -58,7 +58,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4" }, diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 3ee79be90d59..61cf5408de20 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -63,7 +63,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "1.0.0-rc.10", + "rolldown": "^1.0.0", "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "5.76.0" diff --git a/yarn.lock b/yarn.lock index 54077baec899..2b6afd06ac4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,7 +281,15 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@emnapi/core@^1.1.0", "@emnapi/core@^1.7.1": +"@emnapi/core@1.10.0": + version "1.10.0" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" + integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== + dependencies: + "@emnapi/wasi-threads" "1.2.1" + tslib "^2.4.0" + +"@emnapi/core@^1.1.0": version "1.8.1" resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== @@ -289,7 +297,14 @@ "@emnapi/wasi-threads" "1.1.0" tslib "^2.4.0" -"@emnapi/runtime@^1.1.0", "@emnapi/runtime@^1.7.1": +"@emnapi/runtime@1.10.0": + version "1.10.0" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" + integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== + dependencies: + tslib "^2.4.0" + +"@emnapi/runtime@^1.1.0": version "1.8.1" resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== @@ -303,6 +318,13 @@ dependencies: tslib "^2.4.0" +"@emnapi/wasi-threads@1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" + integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== + 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" @@ -700,13 +722,11 @@ "@emnapi/runtime" "^1.1.0" "@tybys/wasm-util" "^0.9.0" -"@napi-rs/wasm-runtime@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz#c3705ab549d176b8dc5172723d6156c3dc426af2" - integrity sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A== +"@napi-rs/wasm-runtime@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" + integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== dependencies: - "@emnapi/core" "^1.7.1" - "@emnapi/runtime" "^1.7.1" "@tybys/wasm-util" "^0.10.1" "@nodelib/fs.scandir@2.1.5": @@ -780,10 +800,10 @@ resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz#0b3867776cd7fdb86068b2dd733e6621ded5165a" integrity sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw== -"@oxc-project/types@=0.120.0": - version "0.120.0" - resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.120.0.tgz#af521b0e689dd0eaa04fe4feef9b68d98b74783d" - integrity sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg== +"@oxc-project/types@=0.129.0": + version "0.129.0" + resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz#8e6362388ce6092feafd14f3a73ae6407b1285d9" + integrity sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg== "@oxfmt/binding-android-arm-eabi@0.33.0": version "0.33.0" @@ -880,87 +900,89 @@ resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== -"@rolldown/binding-android-arm64@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.10.tgz#0bbd3380f49a6d0dc96c9b32fb7dad26ae0dfaa7" - integrity sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg== - -"@rolldown/binding-darwin-arm64@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.10.tgz#a30b051784fbb13635e652ba4041c6ce7a4ce7ab" - integrity sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w== - -"@rolldown/binding-darwin-x64@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.10.tgz#2d9dea982d5be90b95b6d8836ff26a4b0959d94b" - integrity sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A== - -"@rolldown/binding-freebsd-x64@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.10.tgz#4efc3aca43ae4dfb90729eeca6e84ef6e6b38c4a" - integrity sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.10.tgz#4a19a5d24537e925b25e9583b6cd575b2ad9fa27" - integrity sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA== - -"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.10.tgz#01a41e5e905838353ae9a3da10dc8242dcd61453" - integrity sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg== - -"@rolldown/binding-linux-arm64-musl@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.10.tgz#bd059e5f83471de29ce35b0ba254995d8091ca40" - integrity sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g== - -"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.10.tgz#fe726a540631015f269a989c0cfb299283190390" - integrity sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w== - -"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.10.tgz#825ced028bad3f1fa9ce83b1f3dac76e0424367f" - integrity sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg== - -"@rolldown/binding-linux-x64-gnu@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.10.tgz#b700dae69274aa3d54a16ca5e00e30f47a089119" - integrity sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw== - -"@rolldown/binding-linux-x64-musl@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.10.tgz#eb875660ad68a2348acab36a7005699e87f6e9dd" - integrity sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA== - -"@rolldown/binding-openharmony-arm64@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.10.tgz#72aa24b412f83025087bcf83ce09634b2bd93c5c" - integrity sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q== - -"@rolldown/binding-wasm32-wasi@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.10.tgz#7f3303a96c5dc01d1f4c539b1dcbc16392c6f17d" - integrity sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA== - dependencies: - "@napi-rs/wasm-runtime" "^1.1.1" - -"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.10.tgz#3419144a04ad12c69c48536b01fc21ac9d87ecf4" - integrity sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ== - -"@rolldown/binding-win32-x64-msvc@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.10.tgz#09bee46e6a32c6086beeabc3da12e67be714f882" - integrity sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w== - -"@rolldown/pluginutils@1.0.0-rc.10": - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz#eed997f37f928a3300bbe2161f42687d8a3ae759" - integrity sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg== +"@rolldown/binding-android-arm64@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz#aefa7afdcabc1269b1933d50cad31013cb697143" + integrity sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA== + +"@rolldown/binding-darwin-arm64@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz#83e708d97f9f8f3791e79ef8c24d5fcc5e8f29df" + integrity sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew== + +"@rolldown/binding-darwin-x64@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz#4649bb4db634850f6de2b2f1ec37fc39a18adcf8" + integrity sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ== + +"@rolldown/binding-freebsd-x64@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz#2b0e50fdc926fa9680dca9d6acc4c3729b7df899" + integrity sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz#8fd160371f4c160a2fa52de8f9ede51fbd43fc5b" + integrity sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A== + +"@rolldown/binding-linux-arm64-gnu@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz#9915488c96cb0fc49a70bd27c030def3cbbc8cbb" + integrity sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ== + +"@rolldown/binding-linux-arm64-musl@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz#74bb160f2747404eed2f917bea01b0548c783848" + integrity sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA== + +"@rolldown/binding-linux-ppc64-gnu@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz#fdc876160b6738ff34a7d719c4ea42edb38a70bc" + integrity sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg== + +"@rolldown/binding-linux-s390x-gnu@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz#39668ce16e8c2ac16308fdb7116ebd5b44acab65" + integrity sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA== + +"@rolldown/binding-linux-x64-gnu@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz#02a7e4a0fa3af90bf4e937ecd1f4c0dc07ab2397" + integrity sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA== + +"@rolldown/binding-linux-x64-musl@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz#610a08a3055d21f287c550e16a5541501883f2b1" + integrity sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw== + +"@rolldown/binding-openharmony-arm64@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz#62e5da4d623b446a57c9f472b598fedaf5289a3d" + integrity sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig== + +"@rolldown/binding-wasm32-wasi@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz#57191a2986e7f43a920fc618da92f29b0b8123c9" + integrity sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg== + dependencies: + "@emnapi/core" "1.10.0" + "@emnapi/runtime" "1.10.0" + "@napi-rs/wasm-runtime" "^1.1.4" + +"@rolldown/binding-win32-arm64-msvc@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz#77faf1e28521411bd0be6f4e55f3c4c5f17cd619" + integrity sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow== + +"@rolldown/binding-win32-x64-msvc@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz#980a8f9983b0bd3d35ee867ade85cb020eca27ba" + integrity sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg== + +"@rolldown/pluginutils@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz#d660b953fd500d552fc17213f279e29037f08c2d" + integrity sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ== "@rollup/rollup-android-arm-eabi@4.59.0": version "4.59.0" @@ -4529,29 +4551,29 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rolldown@1.0.0-rc.10: - version "1.0.0-rc.10" - resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.10.tgz#41c55e52d833c52c90131973047250548e35f2bf" - integrity sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA== +rolldown@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz#9baf1407c4117570f19f75f697c4a0216065d12e" + integrity sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA== dependencies: - "@oxc-project/types" "=0.120.0" - "@rolldown/pluginutils" "1.0.0-rc.10" + "@oxc-project/types" "=0.129.0" + "@rolldown/pluginutils" "1.0.0" optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.0-rc.10" - "@rolldown/binding-darwin-arm64" "1.0.0-rc.10" - "@rolldown/binding-darwin-x64" "1.0.0-rc.10" - "@rolldown/binding-freebsd-x64" "1.0.0-rc.10" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.10" - "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.10" - "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.10" - "@rolldown/binding-linux-ppc64-gnu" "1.0.0-rc.10" - "@rolldown/binding-linux-s390x-gnu" "1.0.0-rc.10" - "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.10" - "@rolldown/binding-linux-x64-musl" "1.0.0-rc.10" - "@rolldown/binding-openharmony-arm64" "1.0.0-rc.10" - "@rolldown/binding-wasm32-wasi" "1.0.0-rc.10" - "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.10" - "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.10" + "@rolldown/binding-android-arm64" "1.0.0" + "@rolldown/binding-darwin-arm64" "1.0.0" + "@rolldown/binding-darwin-x64" "1.0.0" + "@rolldown/binding-freebsd-x64" "1.0.0" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0" + "@rolldown/binding-linux-arm64-gnu" "1.0.0" + "@rolldown/binding-linux-arm64-musl" "1.0.0" + "@rolldown/binding-linux-ppc64-gnu" "1.0.0" + "@rolldown/binding-linux-s390x-gnu" "1.0.0" + "@rolldown/binding-linux-x64-gnu" "1.0.0" + "@rolldown/binding-linux-x64-musl" "1.0.0" + "@rolldown/binding-openharmony-arm64" "1.0.0" + "@rolldown/binding-wasm32-wasi" "1.0.0" + "@rolldown/binding-win32-arm64-msvc" "1.0.0" + "@rolldown/binding-win32-x64-msvc" "1.0.0" rollup@3.2.0: version "3.2.0" From 7ac1cbc8e67c548cba4d462d91386d93af49e8f1 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Mon, 11 May 2026 13:44:48 +0200 Subject: [PATCH 626/640] feat(babel): Auto-inject sentry-label from static text children (#925) * feat(babel): Auto-inject sentry-label from static text children Add opt-in `autoInjectSentryLabel` option to the Babel component annotate plugin. When enabled, the plugin extracts static text from JSX children (up to 3 levels deep) and injects a `sentry-label` attribute on the root element. This gives React Native apps meaningful touch breadcrumb labels without manual annotation. Closes getsentry/sentry-react-native#6098 Co-Authored-By: Claude Opus 4.6 * refactor(babel): Combine autoInjectSentryLabel and textComponentNames into single option Co-Authored-By: Claude Opus 4.6 * fix(babel): Extract text from non-text wrapper elements inside text components Co-Authored-By: Claude Opus 4.6 * fix(babel): Guard against null in autoInjectSentryLabel and restore non-text wrapper behavior Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- .../src/index.ts | 230 ++++ .../test/sentry-label.test.ts | 1008 +++++++++++++++++ 2 files changed, 1238 insertions(+) create mode 100644 packages/babel-plugin-component-annotate/test/sentry-label.test.ts diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 8cb7495ff0bc..8ffe71da31df 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -45,10 +45,21 @@ const nativeComponentName = "dataSentryComponent"; const nativeElementName = "dataSentryElement"; const nativeSourceFileName = "dataSentrySourceFile"; +const SENTRY_LABEL_ATTRIBUTE = "sentry-label"; +const MAX_LABEL_LENGTH = 64; +const DEFAULT_TEXT_COMPONENT_NAMES = ["Text", "text"]; +const MAX_TEXT_SEARCH_DEPTH = 3; + +interface AutoInjectSentryLabelOpts { + textComponentNames?: string[]; +} + interface AnnotationOpts { native?: boolean; "annotate-fragments"?: boolean; ignoredComponents?: string[]; + /** @hidden */ + autoInjectSentryLabel?: boolean | AutoInjectSentryLabelOpts; } interface FragmentContext { @@ -79,6 +90,10 @@ interface JSXProcessingContext { ignoredComponents: string[]; /** Fragment context for identifying React fragments */ fragmentContext?: FragmentContext; + /** Whether to auto-inject sentry-label from static text children */ + autoInjectSentryLabel: boolean; + /** Component names whose JSXText children are considered text content */ + textComponentNames: string[]; } export { experimentalComponentNameAnnotatePlugin } from "./experimental"; @@ -170,6 +185,11 @@ function createJSXProcessingContext( attributeNames: attributeNamesFromState(state), ignoredComponents: state.opts.ignoredComponents ?? [], fragmentContext: state.sentryFragmentContext, + autoInjectSentryLabel: !!state.opts.autoInjectSentryLabel, + textComponentNames: + (state.opts.autoInjectSentryLabel && typeof state.opts.autoInjectSentryLabel === "object" + ? state.opts.autoInjectSentryLabel.textComponentNames + : undefined) ?? DEFAULT_TEXT_COMPONENT_NAMES, }; } @@ -261,6 +281,7 @@ function processJSX( // Use provided componentName or fall back to context componentName const currentComponentName = componentName ?? context.componentName; + const isRootElement = componentName === undefined; // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate @@ -305,6 +326,10 @@ function processJSX( processJSX(context, child, ""); } }); + + if (isRootElement && context.autoInjectSentryLabel) { + maybeInjectSentryLabel(context, jsxNode); + } } /** @@ -658,4 +683,209 @@ function getJSXMemberExpressionObjectName( return UNKNOWN_ELEMENT_NAME; } +/** + * Extracts static text content from JSX children, searching up to a depth limit. + * Collects text from JSXText nodes of the root element and from recognized + * text components (e.g. ). Non-text custom components are traversed + * but their own JSXText is not collected. + * + * Returns null when dynamic content is found anywhere in the subtree, + * signaling that the entire label should be skipped. + */ +function extractStaticTextFromChildren( + t: typeof Babel.types, + node: Babel.types.JSXElement | Babel.types.JSXFragment, + textComponentNames: string[], + depth: number, + isRoot: boolean +): string[] | null { + if (depth <= 0) { + return []; + } + + const texts: string[] = []; + + for (const child of node.children) { + if (t.isJSXText(child)) { + if (isRoot) { + const trimmed = child.value.replace(/\s+/g, " ").trim(); + if (trimmed) { + texts.push(trimmed); + } + } + } else if (t.isJSXElement(child)) { + const childName = getElementName(t, child.openingElement); + + if (textComponentNames.includes(childName)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else { + const result = extractStaticTextFromChildren( + t, + child, + textComponentNames, + depth - 1, + false + ); + if (result === null) { + return null; + } + texts.push(...result); + } + } else if (t.isJSXFragment(child)) { + const result = extractStaticTextFromChildren(t, child, textComponentNames, depth, isRoot); + if (result === null) { + return null; + } + texts.push(...result); + } else if (t.isJSXExpressionContainer(child)) { + if (!t.isJSXEmptyExpression(child.expression)) { + return null; + } + } else if (t.isJSXSpreadChild(child)) { + return null; + } + } + + return texts; +} + +/** + * Recursively extracts static text from within a recognized text component. + * Handles nested text components (e.g. Hello world) + * which is the standard React Native pattern for inline styling. + * + * Returns null when any dynamic content is found, signaling bail-out. + */ +function extractTextFromTextComponent( + t: typeof Babel.types, + node: Babel.types.JSXElement | Babel.types.JSXFragment, + textComponentNames: string[] +): string[] | null { + const texts: string[] = []; + + for (const child of node.children) { + if (t.isJSXText(child)) { + const trimmed = child.value.replace(/\s+/g, " ").trim(); + if (trimmed) { + texts.push(trimmed); + } + } else if (t.isJSXExpressionContainer(child)) { + if (!t.isJSXEmptyExpression(child.expression)) { + return null; + } + } else if (t.isJSXElement(child)) { + const childName = getElementName(t, child.openingElement); + if (textComponentNames.includes(childName)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + } + } else if (t.isJSXFragment(child)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else if (t.isJSXSpreadChild(child)) { + return null; + } + } + + return texts; +} + +function getElementName( + t: typeof Babel.types, + openingElement: Babel.types.JSXOpeningElement +): string { + const name = openingElement.name; + if (t.isJSXIdentifier(name)) { + return name.name; + } + if (t.isJSXMemberExpression(name)) { + return `${getJSXMemberExpressionObjectName(t, name.object)}.${name.property.name}`; + } + return ""; +} + +/** + * Injects a sentry-label attribute on the root JSX element of a component if + * static text content can be extracted from its children. + * + * When the root is a JSX fragment, the first JSXElement child is used as the + * target for both text extraction and attribute injection (since fragments + * cannot carry attributes). + */ +function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.NodePath): void { + const { t, textComponentNames, ignoredComponents, componentName } = context; + const node = jsxNode.node; + + let targetElement: Babel.types.JSXElement; + + if (t.isJSXElement(node)) { + targetElement = node; + } else if (t.isJSXFragment(node)) { + const firstChild = node.children.find((c): c is Babel.types.JSXElement => t.isJSXElement(c)); + if (!firstChild) { + return; + } + targetElement = firstChild; + } else { + return; + } + + const targetElementName = getElementName(t, targetElement.openingElement); + + if ( + ignoredComponents.some((ignored) => ignored === componentName || ignored === targetElementName) + ) { + return; + } + + if ( + targetElement.openingElement.attributes.some( + (attr) => t.isJSXAttribute(attr) && attr.name.name === SENTRY_LABEL_ATTRIBUTE + ) + ) { + return; + } + + const texts = extractStaticTextFromChildren( + t, + targetElement, + textComponentNames, + MAX_TEXT_SEARCH_DEPTH, + true + ); + + if (texts === null) { + return; + } + + let label = texts.join(" ").replace(/\s+/g, " ").trim(); + + if (!label) { + return; + } + + if (label.length > MAX_LABEL_LENGTH) { + label = label.substring(0, MAX_LABEL_LENGTH - 3) + "..."; + } + + targetElement.openingElement.attributes.push( + t.jSXAttribute(t.jSXIdentifier(SENTRY_LABEL_ATTRIBUTE), t.stringLiteral(label)) + ); +} + const UNKNOWN_ELEMENT_NAME = "unknown"; diff --git a/packages/babel-plugin-component-annotate/test/sentry-label.test.ts b/packages/babel-plugin-component-annotate/test/sentry-label.test.ts new file mode 100644 index 000000000000..b11ae8e06a59 --- /dev/null +++ b/packages/babel-plugin-component-annotate/test/sentry-label.test.ts @@ -0,0 +1,1008 @@ +import { describe, it, expect } from "vitest"; +import { transform, BabelFileResult } from "@babel/core"; +import plugin from "../src/index"; + +function transformWith(code: string, opts: Record = {}): BabelFileResult | null { + return transform(code, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, { autoInjectSentryLabel: true, ...opts }]], + }); +} + +function transformWithout( + code: string, + opts: Record = {} +): BabelFileResult | null { + return transform(code, { + filename: "/filename-test.js", + configFile: false, + presets: ["@babel/preset-react"], + plugins: [[plugin, opts]], + }); +} + +describe("autoInjectSentryLabel", () => { + describe("opt-in behavior", () => { + it("does not inject sentry-label when autoInjectSentryLabel is not set", () => { + const result = transformWithout(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("does not inject sentry-label when autoInjectSentryLabel is false", () => { + const result = transformWithout( + ` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `, + { autoInjectSentryLabel: false } + ); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("injects sentry-label when autoInjectSentryLabel is true", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello"'); + }); + }); + + describe("basic static text extraction", () => { + it("extracts text from a Text child", () => { + const result = transformWith(` + import React from 'react'; + import { Text, TouchableOpacity } from 'react-native'; + + export default function SaveButton() { + return ( + + Save workout + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Save workout"'); + }); + + it("extracts text from a nested Text within a View", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View, TouchableOpacity } from 'react-native'; + + export default function Card() { + return ( + + + Details + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Details"'); + }); + + it("works with arrow function components", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + const MyButton = () => ( + + Press me + + ); + `); + expect(result?.code).toContain('"sentry-label": "Press me"'); + }); + + it("works with class components", () => { + const result = transformWith(` + import React, { Component } from 'react'; + import { Text, View } from 'react-native'; + + class MyButton extends Component { + render() { + return ( + + Click here + + ); + } + } + `); + expect(result?.code).toContain('"sentry-label": "Click here"'); + }); + }); + + describe("multiple text children", () => { + it("joins text from multiple Text children with space", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function AddToCart() { + return ( + + Add + to cart + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Add to cart"'); + }); + + it("joins text from multiple nested Text children", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View, TouchableOpacity } from 'react-native'; + + export default function Header() { + return ( + + + Welcome + back + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Welcome back"'); + }); + }); + + describe("skip conditions", () => { + it("skips when sentry-label already exists", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Auto text + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Custom label"'); + expect(result?.code).not.toContain('"sentry-label": "Auto text"'); + }); + + it("skips dynamic expression children", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + {variable} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips when Text child has a function call expression", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + {t('key')} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips when Text child has a template literal", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + {\`hello \${name}\`} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips when text is empty or whitespace only", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips when no Text children exist", () => { + const result = transformWith(` + import React from 'react'; + import { View, Image } from 'react-native'; + + export default function MyComponent() { + return ( + + + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips when expression container is at root level", () => { + const result = transformWith(` + import React from 'react'; + import { View } from 'react-native'; + + export default function MyComponent() { + return ( + + {someContent} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + }); + + describe("truncation", () => { + it("truncates text longer than 64 characters with ...", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + This is an extremely long text that definitely exceeds the sixty-four character limit + + ); + } + `); + const match = result?.code?.match(/"sentry-label": "([^"]+)"/); + expect(match).toBeTruthy(); + const label = match?.[1] ?? ""; + expect(label.length).toBe(64); + expect(label.endsWith("...")).toBe(true); + expect(label).toBe("This is an extremely long text that definitely exceeds the si..."); + }); + + it("does not truncate text at exactly 64 characters", () => { + // 64 chars exactly + const text64 = "A".repeat(64); + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + ${text64} + + ); + } + `); + expect(result?.code).toContain(`"sentry-label": "${text64}"`); + }); + }); + + describe("depth limit", () => { + it("extracts text at depth 1 (direct child)", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Direct child + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Direct child"'); + }); + + it("extracts text at depth 2 (nested in one wrapper)", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + Nested once + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Nested once"'); + }); + + it("extracts text at depth 3 (nested in two wrappers)", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + + Nested twice + + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Nested twice"'); + }); + + it("does not extract text beyond depth limit", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + + + Too deep + + + + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("does not count fragments toward depth limit", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + + <> + Still found + + + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Still found"'); + }); + }); + + describe("text component names", () => { + it("recognizes lowercase text component", () => { + const result = transformWith(` + import React from 'react'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello"'); + }); + + it("supports custom text component names via option", () => { + const result = transformWith( + ` + import React from 'react'; + + export default function MyComponent() { + return ( + + + + ); + } + `, + { autoInjectSentryLabel: { textComponentNames: ["Label", "Text"] } } + ); + expect(result?.code).toContain('"sentry-label": "Custom text"'); + }); + + it("does not extract from non-text components by default", () => { + const result = transformWith(` + import React from 'react'; + import { View, Button } from 'react-native'; + + export default function MyComponent() { + return ( + + + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + }); + + describe("nested text components (RN inline styling)", () => { + it("extracts text from nested Text inside Text", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello world + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello world"'); + }); + + it("extracts text from deeply nested inline Text", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Press Save now to continue + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Press Save now to continue"'); + }); + + it("bails out when nested Text contains dynamic content", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello {name} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips non-text elements inside Text without bailing out", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello world + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello world"'); + }); + + it("extracts text from fragment children inside Text", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello <>World more + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello World more"'); + }); + + it("handles Text wrapping only a non-text element", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + hello + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + }); + + describe("web compatibility", () => { + it("uses hyphenated sentry-label attribute", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `); + expect(result?.code).toContain('"sentry-label"'); + expect(result?.code).not.toContain("sentryLabel"); + }); + + it("uses sentry-label in native mode too", () => { + const result = transformWith( + ` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `, + { native: true } + ); + expect(result?.code).toContain('"sentry-label": "Hello"'); + }); + }); + + describe("fragment handling", () => { + it("injects on first element child when root is a fragment", () => { + const result = transformWith(` + import React from 'react'; + import { Text, TouchableOpacity } from 'react-native'; + + export default function MyComponent() { + return ( + <> + + Hello + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello"'); + }); + + it("extracts text only from the target element, not sibling fragment children", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + <> + A + B + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "A"'); + expect(result?.code).not.toContain('"sentry-label": "A B"'); + }); + + it("skips root fragment when it has no element children", () => { + const result = transformWith(` + import React from 'react'; + + export default function MyComponent() { + return ( + <> + Just text + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("skips root fragment when first child already has sentry-label", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + <> + + Auto text + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Manual"'); + expect(result?.code).not.toContain('"sentry-label": "Auto text"'); + }); + + it("traverses through fragment children to find text", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + <> + Fragment text + + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Fragment text"'); + }); + }); + + describe("edge cases", () => { + it("trims whitespace from extracted text", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello world + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello world"'); + }); + + it("normalizes double spaces when joining text from multiple components", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + world + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello world"'); + expect(result?.code).not.toContain("Hello world"); + }); + + it("collapses internal whitespace", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello world + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Hello world"'); + }); + + it("still adds other sentry attributes alongside sentry-label", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello + + ); + } + `); + expect(result?.code).toContain("data-sentry-component"); + expect(result?.code).toContain("data-sentry-source-file"); + expect(result?.code).toContain('"sentry-label": "Hello"'); + }); + + it("handles mixed static and dynamic children — skips all when dynamic present", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Static + {dynamicContent} + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("respects ignoredComponents — does not inject sentry-label", () => { + const result = transformWith( + ` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function IgnoredComp() { + return ( + + Should not label + + ); + } + `, + { ignoredComponents: ["IgnoredComp"] } + ); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("respects ignoredComponents matching the element name", () => { + const result = transformWith( + ` + import React from 'react'; + import { Text } from 'react-native'; + import { CustomCard } from './components'; + + export default function MyComponent() { + return ( + + Card text + + ); + } + `, + { ignoredComponents: ["CustomCard"] } + ); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("extracts text from JSXText inside a fragment child of root", () => { + const result = transformWith(` + import React from 'react'; + + export default function MyComponent() { + return ; + } + `); + expect(result?.code).toContain('"sentry-label": "Click me"'); + }); + + it("bails out when non-text element inside Text contains dynamic content", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + Hello {name} world + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("handles direct JSXText on the root element", () => { + const result = transformWith(` + import React from 'react'; + + export default function MyComponent() { + return ; + } + `); + expect(result?.code).toContain('"sentry-label": "Click me"'); + }); + + it("bails out entirely when dynamic content is nested inside a non-text wrapper", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return ( + + + {dynamic} + + Static + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("does not match member-expression text components against simple name", () => { + const result = transformWith(` + import React from 'react'; + import { View } from 'react-native'; + import MyLib from 'my-lib'; + + export default function MyComponent() { + return ( + + Not matched + + ); + } + `); + expect(result?.code).not.toContain("sentry-label"); + }); + + it("matches member-expression text components when configured", () => { + const result = transformWith( + ` + import React from 'react'; + import { View } from 'react-native'; + import MyLib from 'my-lib'; + + export default function MyComponent() { + return ( + + Matched + + ); + } + `, + { autoInjectSentryLabel: { textComponentNames: ["Text", "MyLib.Text"] } } + ); + expect(result?.code).toContain('"sentry-label": "Matched"'); + }); + }); + + describe("multiple components in one file", () => { + it("injects independent labels on each component", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + function SaveButton() { + return ( + + Save + + ); + } + + function CancelButton() { + return ( + + Cancel + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Save"'); + expect(result?.code).toContain('"sentry-label": "Cancel"'); + }); + + it("only injects on components that have text, not on others", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View, Image } from 'react-native'; + + function IconButton() { + return ( + + + + ); + } + + function TextButton() { + return ( + + Click + + ); + } + `); + expect(result?.code).toContain('"sentry-label": "Click"'); + const matches = result?.code?.match(/"sentry-label"/g); + expect(matches?.length).toBe(1); + }); + }); + + describe("ternary returns", () => { + it("injects labels on both branches of a ternary", () => { + const result = transformWith(` + import React from 'react'; + import { Text, View } from 'react-native'; + + export default function MyComponent() { + return condition + ? Yes + : No; + } + `); + expect(result?.code).toContain('"sentry-label": "Yes"'); + expect(result?.code).toContain('"sentry-label": "No"'); + }); + }); +}); From efe7daebb74a8ae90e14f1172e2f96172a48df86 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Tue, 12 May 2026 04:12:21 -0400 Subject: [PATCH 627/640] fix(vite): avoid version-specific plugin return type (#928) --- .../fixtures/vite-type-compat.test.ts | 103 ++++++++++++++++++ .../fixtures/vite6/package.json | 21 ++++ packages/vite-plugin/src/index.ts | 12 +- 3 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 packages/integration-tests-next/fixtures/vite-type-compat.test.ts create mode 100644 packages/integration-tests-next/fixtures/vite6/package.json diff --git a/packages/integration-tests-next/fixtures/vite-type-compat.test.ts b/packages/integration-tests-next/fixtures/vite-type-compat.test.ts new file mode 100644 index 000000000000..c19fec65b91f --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite-type-compat.test.ts @@ -0,0 +1,103 @@ +import { describe, expect, it } from "vitest"; +import * as ts from "typescript"; +import { isAbsolute, join, normalize, relative } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createRequire } from "node:module"; + +const fixturesDir = fileURLToPath(new URL(".", import.meta.url)); +const pluginSourceFile = fileURLToPath(new URL("../../vite-plugin/src/index.ts", import.meta.url)); +const pluginViteTypesFixtureDir = join(fixturesDir, "vite6"); + +const configSource = ` +import { defineConfig } from "vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; + +export default defineConfig({ + plugins: [sentryVitePlugin()], +}); +`; + +function assertFixtureViteVersion(fixtureDir: string, expectedMajor: string): void { + const requireFromFixture = createRequire(join(fixtureDir, "package.json")); + const vitePackageJsonPath = requireFromFixture.resolve("vite/package.json"); + const relativeVitePackageJsonPath = relative(fixtureDir, vitePackageJsonPath); + + expect(isAbsolute(relativeVitePackageJsonPath)).toBe(false); + expect(relativeVitePackageJsonPath.startsWith("..")).toBe(false); + expect(relativeVitePackageJsonPath.split(/[\\/]/)[0]).toBe("node_modules"); + + const vitePackageJson = requireFromFixture("vite/package.json") as { version: string }; + expect(vitePackageJson.version.split(".")[0]).toBe(expectedMajor); +} + +function getDiagnosticsForFixture(fixtureName: string, expectedMajor: string): string[] { + const fixtureDir = join(fixturesDir, fixtureName); + const fileName = join(fixtureDir, "sentry-vite-plugin-type-compat.mts"); + const isVirtualConfigFile = (path: string) => normalize(path) === normalize(fileName); + + assertFixtureViteVersion(fixtureDir, expectedMajor); + assertFixtureViteVersion(pluginViteTypesFixtureDir, "6"); + + const compilerOptions: ts.CompilerOptions = { + esModuleInterop: true, + module: ts.ModuleKind.Node16, + moduleResolution: ts.ModuleResolutionKind.Node16, + noEmit: true, + skipLibCheck: true, + strict: true, + target: ts.ScriptTarget.ES2020, + types: ["node"], + }; + + const host = ts.createCompilerHost(compilerOptions); + // eslint-disable-next-line @typescript-eslint/unbound-method + const getSourceFile = host.getSourceFile; + + host.fileExists = (path) => isVirtualConfigFile(path) || ts.sys.fileExists(path); + host.readFile = (path) => (isVirtualConfigFile(path) ? configSource : ts.sys.readFile(path)); + host.getSourceFile = (path, languageVersion, onError, shouldCreateNewSourceFile) => + isVirtualConfigFile(path) + ? ts.createSourceFile(path, configSource, languageVersion, true) + : getSourceFile(path, languageVersion, onError, shouldCreateNewSourceFile); + host.resolveModuleNames = (moduleNames, containingFile) => + moduleNames.map((moduleName) => { + if (moduleName === "@sentry/vite-plugin") { + return { + resolvedFileName: pluginSourceFile, + extension: ts.Extension.Ts, + }; + } + + const resolutionContainingFile = + moduleName === "vite" && containingFile === pluginSourceFile + ? join(pluginViteTypesFixtureDir, "sentry-vite-plugin-type-compat.mts") + : containingFile; + + return ts.resolveModuleName( + moduleName, + resolutionContainingFile, + compilerOptions, + ts.sys, + undefined, + undefined, + ts.ModuleKind.ESNext + ).resolvedModule; + }); + + const program = ts.createProgram([fileName], compilerOptions, host); + + return ts + .getPreEmitDiagnostics(program) + .map((diagnostic) => ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")) + .filter((message) => !message.includes("The current file is a CommonJS module")); +} + +describe("sentryVitePlugin type compatibility", () => { + it.each([ + ["vite6", "6"], + ["vite7", "7"], + ["vite8", "8"], + ])("is compatible with %s defineConfig plugins", (fixtureName, expectedMajor) => { + expect(getDiagnosticsForFixture(fixtureName, expectedMajor)).toEqual([]); + }); +}); diff --git a/packages/integration-tests-next/fixtures/vite6/package.json b/packages/integration-tests-next/fixtures/vite6/package.json new file mode 100644 index 000000000000..a13d7fafc386 --- /dev/null +++ b/packages/integration-tests-next/fixtures/vite6/package.json @@ -0,0 +1,21 @@ +{ + "name": "vite6-integration-tests", + "version": "1.0.0", + "private": true, + "type": "module", + "dependencies": { + "vite": "6.4.1", + "@sentry/vite-plugin": "5.2.1" + }, + "pnpm": { + "overrides": { + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + }, + "patchedDependencies": { + "@sentry/cli": "../patches/@sentry__cli.patch" + } + } +} diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index e0d3a792ce42..5bc373ed0888 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,7 +1,11 @@ -import { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; import { _rollupPluginInternal } from "@sentry/rollup-plugin"; import { createRequire } from "node:module"; -import { Plugin } from "vite"; + +interface SentryVitePlugin { + name: string; + enforce: "pre"; +} function getViteMajorVersion(): string | undefined { try { @@ -17,11 +21,11 @@ function getViteMajorVersion(): string | undefined { return undefined; } -export const sentryVitePlugin = (options?: SentryRollupPluginOptions): Plugin[] => { +export const sentryVitePlugin = (options?: SentryRollupPluginOptions): SentryVitePlugin[] => { return [ { enforce: "pre", - ...(_rollupPluginInternal(options, "vite", getViteMajorVersion()) as Plugin), + ..._rollupPluginInternal(options, "vite", getViteMajorVersion()), }, ]; }; From eb88048ad4366bca2761f0d41488b33916d7b1cf Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 12 May 2026 09:19:39 +0100 Subject: [PATCH 628/640] chore: Update craft (#929) --- .craft.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index ac1d873cff46..514f3ce8a825 100644 --- a/.craft.yml +++ b/.craft.yml @@ -1,7 +1,9 @@ github: owner: getsentry repo: sentry-javascript-bundler-plugins -changelog: +minVersion: 2.26.3 +changelogPolicy: auto +versioning: policy: auto preReleaseCommand: bash scripts/craft-pre-release.sh requireNames: From 06fde9e75889d992d6a627ed17a5eacceb5fc19e Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 12 May 2026 09:30:19 +0100 Subject: [PATCH 629/640] chore: fix craft config (#930) --- .craft.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index 514f3ce8a825..2dc5fceedce4 100644 --- a/.craft.yml +++ b/.craft.yml @@ -2,7 +2,8 @@ github: owner: getsentry repo: sentry-javascript-bundler-plugins minVersion: 2.26.3 -changelogPolicy: auto +changelog: + policy: auto versioning: policy: auto preReleaseCommand: bash scripts/craft-pre-release.sh From 588918935d7d4239058c13bceea09d4946f1eb5b Mon Sep 17 00:00:00 2001 From: timfish <1150298+timfish@users.noreply.github.com> Date: Tue, 12 May 2026 08:31:21 +0000 Subject: [PATCH 630/640] release: 5.3.0 --- CHANGELOG.md | 19 +++++++++++++++++++ .../package.json | 6 +++--- packages/bundler-plugin-core/package.json | 8 ++++---- packages/dev-utils/package.json | 2 +- packages/esbuild-plugin/package.json | 8 ++++---- packages/eslint-configs/package.json | 2 +- .../fixtures/esbuild/package.json | 8 ++++---- .../fixtures/rolldown/package.json | 8 ++++---- .../fixtures/rollup3/package.json | 8 ++++---- .../fixtures/rollup4/package.json | 8 ++++---- .../fixtures/vite4/package.json | 10 +++++----- .../fixtures/vite6/package.json | 10 +++++----- .../fixtures/vite7/package.json | 10 +++++----- .../fixtures/vite8/package.json | 10 +++++----- .../fixtures/webpack5/package.json | 8 ++++---- packages/integration-tests-next/package.json | 14 +++++++------- packages/playground/package.json | 4 ++-- packages/rollup-plugin/package.json | 8 ++++---- packages/tsconfigs/package.json | 2 +- packages/vite-plugin/package.json | 10 +++++----- packages/webpack-plugin/package.json | 8 ++++---- 21 files changed, 95 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 307bb60f5488..6751d1afe8c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## 5.3.0 + +### New Features ✨ + +- (babel) Auto-inject sentry-label from static text children by @antonis in [#925](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/925) + +### Bug Fixes 🐛 + +- (vite) Avoid version-specific plugin return type by @logaretm in [#928](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/928) + +### Internal Changes 🔧 + +- Fix craft config by @timfish in [#930](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/930) +- Update craft by @timfish in [#929](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/929) +- Use Rolldown v1 stable by @timfish in [#924](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/924) +- Remove old integration tests by @timfish in [#922](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/922) +- Ensure correct bundlers are resolved by @timfish in [#921](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/921) +- Fix telemetry tests to capture all envelopes by @timfish in [#920](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/920) + ## 5.2.1 ### Bug Fixes 🐛 diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 989b999fc4eb..d757c2357380 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/babel-plugin-component-annotate", - "version": "5.2.1", + "version": "5.3.0", "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", @@ -53,8 +53,8 @@ "@babel/core": "7.18.5", "@types/babel__core": "^7.20.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index b5830d1a5b16..bf527caea66e 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bundler-plugin-core", - "version": "5.2.1", + "version": "5.3.0", "description": "Sentry Bundler Plugin Core", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", @@ -55,7 +55,7 @@ }, "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.2.1", + "@sentry/babel-plugin-component-annotate": "5.3.0", "@sentry/cli": "^2.58.5", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -63,8 +63,8 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 335afeab8207..3021d7613bb4 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/dev-utils", - "version": "5.2.1", + "version": "5.3.0", "license": "MIT", "private": true, "files": [ diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 31d33e860e63..d7e7017823ae 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "5.2.1", + "version": "5.3.0", "description": "Official Sentry esbuild plugin", "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", @@ -48,11 +48,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.1" + "@sentry/bundler-plugin-core": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index f3060e2a31ee..a09b16e51acf 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config", - "version": "5.2.1", + "version": "5.3.0", "license": "MIT", "private": true, "peerDependencies": { diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/packages/integration-tests-next/fixtures/esbuild/package.json index 79991e019f7f..ae9341e288e9 100644 --- a/packages/integration-tests-next/fixtures/esbuild/package.json +++ b/packages/integration-tests-next/fixtures/esbuild/package.json @@ -5,13 +5,13 @@ "type": "module", "dependencies": { "esbuild": "0.28.0", - "@sentry/esbuild-plugin": "5.2.1" + "@sentry/esbuild-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index c98350287501..1aec87ac9ed8 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -4,15 +4,15 @@ "private": true, "type": "module", "dependencies": { - "@sentry/rollup-plugin": "5.2.1", + "@sentry/rollup-plugin": "5.3.0", "react": "19.2.4", "rolldown": "1.0.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index 0c41f32d6e41..53cd21e6de8f 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -8,13 +8,13 @@ "rollup": "3.30.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "15.2.3", - "@sentry/rollup-plugin": "5.2.1" + "@sentry/rollup-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index 4db10769efc6..944d4479719b 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -8,13 +8,13 @@ "rollup": "4.59.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-node-resolve": "16.0.3", - "@sentry/rollup-plugin": "5.2.1" + "@sentry/rollup-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/packages/integration-tests-next/fixtures/vite4/package.json index d228d3b8f269..0a10b4e92705 100644 --- a/packages/integration-tests-next/fixtures/vite4/package.json +++ b/packages/integration-tests-next/fixtures/vite4/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "4.5.14", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.2.1" + "@sentry/vite-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite6/package.json b/packages/integration-tests-next/fixtures/vite6/package.json index a13d7fafc386..038495ef49b5 100644 --- a/packages/integration-tests-next/fixtures/vite6/package.json +++ b/packages/integration-tests-next/fixtures/vite6/package.json @@ -5,14 +5,14 @@ "type": "module", "dependencies": { "vite": "6.4.1", - "@sentry/vite-plugin": "5.2.1" + "@sentry/vite-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/packages/integration-tests-next/fixtures/vite7/package.json index 724c5ea2a000..9a7ea8808a44 100644 --- a/packages/integration-tests-next/fixtures/vite7/package.json +++ b/packages/integration-tests-next/fixtures/vite7/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "7.3.1", "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.2.1" + "@sentry/vite-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/packages/integration-tests-next/fixtures/vite8/package.json index 9d3d2bbc04ae..6843a41ab241 100644 --- a/packages/integration-tests-next/fixtures/vite8/package.json +++ b/packages/integration-tests-next/fixtures/vite8/package.json @@ -7,14 +7,14 @@ "react": "19.2.4", "vite": "8.0.1", "@vitejs/plugin-react": "6.0.1", - "@sentry/vite-plugin": "5.2.1" + "@sentry/vite-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.2.1.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", + "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json index 0e91ebcfed23..7b4337019961 100644 --- a/packages/integration-tests-next/fixtures/webpack5/package.json +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -8,13 +8,13 @@ "webpack": "5.105.4", "webpack-cli": "6.0.1", "@babel/preset-react": "7.23.3", - "@sentry/webpack-plugin": "5.2.1" + "@sentry/webpack-plugin": "5.3.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.2.1.tgz", - "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.2.1.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.2.1.tgz" + "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", + "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.3.0.tgz", + "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 247b59b1afd6..57c119c5e4ff 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-tests-next", - "version": "5.2.1", + "version": "5.3.0", "license": "MIT", "private": true, "scripts": { @@ -13,12 +13,12 @@ "clean:deps": "premove node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", - "@sentry/esbuild-plugin": "5.2.1", - "@sentry/rollup-plugin": "5.2.1", - "@sentry/vite-plugin": "5.2.1", - "@sentry/webpack-plugin": "5.2.1" + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", + "@sentry/esbuild-plugin": "5.3.0", + "@sentry/rollup-plugin": "5.3.0", + "@sentry/vite-plugin": "5.3.0", + "@sentry/webpack-plugin": "5.3.0" }, "devDependencies": { "premove": "^4.0.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 8a92e3688c04..38afdf5b5f7d 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.2.1", + "version": "5.3.0", "license": "MIT", "private": true, "scripts": { @@ -17,7 +17,7 @@ "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.1", + "@sentry/bundler-plugin-core": "5.3.0", "@sentry/integrations": "7.50", "@sentry/node": "7.50", "@types/express": "^4.17.13", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 684e266644a3..6e5f86bb9711 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "5.2.1", + "version": "5.3.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", @@ -49,7 +49,7 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.1", + "@sentry/bundler-plugin-core": "5.3.0", "magic-string": "~0.30.8" }, "peerDependencies": { @@ -61,8 +61,8 @@ } }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json index d0d84901cb36..6654457a4de0 100644 --- a/packages/tsconfigs/package.json +++ b/packages/tsconfigs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.2.1", + "version": "5.3.0", "license": "MIT", "private": true } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 88b2d097bd3b..00213279fdb4 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "5.2.1", + "version": "5.3.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", @@ -48,12 +48,12 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.1", - "@sentry/rollup-plugin": "5.2.1" + "@sentry/bundler-plugin-core": "5.3.0", + "@sentry/rollup-plugin": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@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 61cf5408de20..acf8b094fa0b 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "5.2.1", + "version": "5.3.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", @@ -53,11 +53,11 @@ "prepack": "ts-node ./src/prepack.ts" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.2.1" + "@sentry/bundler-plugin-core": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.2.1", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.2.1", + "@sentry-internal/eslint-config": "5.3.0", + "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", From df2c876dcbbe280cc48899d0392d3ff4c45d3b5c Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 21 May 2026 13:53:03 +0100 Subject: [PATCH 631/640] chore: Remove `ts-node` usage (#931) --- package.json | 3 +- .../package.json | 1 - .../rollup.config.mjs | 1 - .../bundler-plugin-core/rollup.config.mjs | 1 - packages/dev-utils/.gitignore | 2 + packages/dev-utils/index.ts | 1 - packages/dev-utils/package.json | 9 +- packages/dev-utils/rollup.config.mjs | 14 +++ packages/dev-utils/src/index.ts | 1 + packages/dev-utils/types.tsconfig.json | 11 +++ packages/esbuild-plugin/package.json | 4 +- .../{src/prepack.ts => prepack.mjs} | 6 +- packages/esbuild-plugin/rollup.config.mjs | 1 - packages/playground/package.json | 2 +- ...gger-proxy.ts => request-logger-proxy.mjs} | 13 +-- packages/rollup-plugin/package.json | 4 +- .../{src/prepack.ts => prepack.mjs} | 6 +- packages/rollup-plugin/rollup.config.mjs | 1 - packages/vite-plugin/package.json | 4 +- .../{src/prepack.ts => prepack.mjs} | 6 +- packages/vite-plugin/rollup.config.mjs | 1 - packages/webpack-plugin/package.json | 4 +- .../{src/prepack.ts => prepack.mjs} | 6 +- yarn.lock | 96 +------------------ 24 files changed, 66 insertions(+), 132 deletions(-) create mode 100644 packages/dev-utils/.gitignore delete mode 100644 packages/dev-utils/index.ts create mode 100644 packages/dev-utils/rollup.config.mjs create mode 100644 packages/dev-utils/src/index.ts create mode 100644 packages/dev-utils/types.tsconfig.json rename packages/esbuild-plugin/{src/prepack.ts => prepack.mjs} (51%) rename packages/playground/scripts/{request-logger-proxy.ts => request-logger-proxy.mjs} (86%) rename packages/rollup-plugin/{src/prepack.ts => prepack.mjs} (51%) rename packages/vite-plugin/{src/prepack.ts => prepack.mjs} (51%) rename packages/webpack-plugin/{src/prepack.ts => prepack.mjs} (51%) diff --git a/package.json b/package.json index 52b47b9dbbf8..5adccc36192d 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,7 @@ "minimatch": "^10.2.2", "npm-run-all": "^4.1.5", "nx": "22.5.2", - "oxfmt": "^0.33.0", - "ts-node": "^10.9.2" + "oxfmt": "^0.33.0" }, "volta": { "node": "22.22.0", diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index d757c2357380..575d70028b83 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -60,7 +60,6 @@ "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/babel-plugin-component-annotate/rollup.config.mjs b/packages/babel-plugin-component-annotate/rollup.config.mjs index a005c229c5c3..656ebdad6c58 100644 --- a/packages/babel-plugin-component-annotate/rollup.config.mjs +++ b/packages/babel-plugin-component-annotate/rollup.config.mjs @@ -1,5 +1,4 @@ import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; export default { platform: "node", diff --git a/packages/bundler-plugin-core/rollup.config.mjs b/packages/bundler-plugin-core/rollup.config.mjs index e4fbed3c82f6..98d8b5dd8022 100644 --- a/packages/bundler-plugin-core/rollup.config.mjs +++ b/packages/bundler-plugin-core/rollup.config.mjs @@ -1,4 +1,3 @@ -import modulePackage from "module"; import packageJson from "./package.json" with { type: "json" }; export default { diff --git a/packages/dev-utils/.gitignore b/packages/dev-utils/.gitignore new file mode 100644 index 000000000000..047fe5c8ec31 --- /dev/null +++ b/packages/dev-utils/.gitignore @@ -0,0 +1,2 @@ +out +README.md diff --git a/packages/dev-utils/index.ts b/packages/dev-utils/index.ts deleted file mode 100644 index ec61b07eff58..000000000000 --- a/packages/dev-utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./src/generate-documentation-table"; diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 3021d7613bb4..b507a5c6bd09 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -3,9 +3,12 @@ "version": "5.3.0", "license": "MIT", "private": true, - "files": [ - "src" - ], + "type": "module", + "main": "./out/index.mjs", + "module": "./out/index.mjs", + "scripts": { + "build": "rolldown --config rollup.config.mjs" + }, "peerDependencies": { "eslint": "^8.14.0" }, diff --git a/packages/dev-utils/rollup.config.mjs b/packages/dev-utils/rollup.config.mjs new file mode 100644 index 000000000000..f35ae2e2a91b --- /dev/null +++ b/packages/dev-utils/rollup.config.mjs @@ -0,0 +1,14 @@ +import packageJson from "./package.json" with { type: "json" }; + +export default { + platform: "node", + input: ["src/index.ts"], + output: [ + { + file: packageJson.module, + format: "esm", + exports: "named", + sourcemap: true, + }, + ], +}; diff --git a/packages/dev-utils/src/index.ts b/packages/dev-utils/src/index.ts new file mode 100644 index 000000000000..42a1cb11c175 --- /dev/null +++ b/packages/dev-utils/src/index.ts @@ -0,0 +1 @@ +export * from "./generate-documentation-table"; diff --git a/packages/dev-utils/types.tsconfig.json b/packages/dev-utils/types.tsconfig.json new file mode 100644 index 000000000000..631f5dc6c735 --- /dev/null +++ b/packages/dev-utils/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "include": ["./src/**/*"], + "compilerOptions": { + "esModuleInterop": true, + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index d7e7017823ae..b2bb3102755b 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -45,7 +45,7 @@ "clean:deps": "premove node_modules", "test": "vitest run", "lint": "eslint ./src ./test", - "prepack": "ts-node ./src/prepack.ts" + "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0" @@ -53,12 +53,12 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", + "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/esbuild-plugin/src/prepack.ts b/packages/esbuild-plugin/prepack.mjs similarity index 51% rename from packages/esbuild-plugin/src/prepack.ts rename to packages/esbuild-plugin/prepack.mjs index 616dde02953f..66de0066cd45 100644 --- a/packages/esbuild-plugin/src/prepack.ts +++ b/packages/esbuild-plugin/prepack.mjs @@ -2,9 +2,11 @@ import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; import * as fs from "fs"; import * as path from "path"; -const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const __dirname = path.dirname(new URL(import.meta.url).pathname); + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); const readme = readmeTemplate.replace( /#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation("esbuild") ); -fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); +fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/esbuild-plugin/rollup.config.mjs b/packages/esbuild-plugin/rollup.config.mjs index 9ac495986fb1..98d8b5dd8022 100644 --- a/packages/esbuild-plugin/rollup.config.mjs +++ b/packages/esbuild-plugin/rollup.config.mjs @@ -1,5 +1,4 @@ import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; export default { platform: "node", diff --git a/packages/playground/package.json b/packages/playground/package.json index 38afdf5b5f7d..4e8133701c17 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -14,7 +14,7 @@ "clean:all": "run-p clean:deps", "clean:build": "premove ./out", "clean:deps": "premove node_modules", - "start:proxyLogger": "ts-node scripts/request-logger-proxy.ts" + "start:proxyLogger": "node scripts/request-logger-proxy.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0", diff --git a/packages/playground/scripts/request-logger-proxy.ts b/packages/playground/scripts/request-logger-proxy.mjs similarity index 86% rename from packages/playground/scripts/request-logger-proxy.ts rename to packages/playground/scripts/request-logger-proxy.mjs index e62a1f71d823..157d4c44959f 100644 --- a/packages/playground/scripts/request-logger-proxy.ts +++ b/packages/playground/scripts/request-logger-proxy.mjs @@ -10,12 +10,12 @@ var app = express(); var proxy = httpProxy.createProxyServer(); app.use(function (req, res, next) { - let reqBody: Uint8Array[] = []; - let resBody: Uint8Array[] = []; - let reqLog: string; + let reqBody = []; + let resBody = []; + let reqLog; req - .on("data", (chunk: Buffer) => { + .on("data", (chunk) => { reqBody.push(chunk); }) .on("end", () => { @@ -29,14 +29,12 @@ app.use(function (req, res, next) { var oldWrite = res.write, oldEnd = res.end; - res.write = function (chunk: Buffer) { + res.write = function (chunk) { resBody.push(chunk); - // @ts-ignore return oldWrite.apply(res, arguments); }; - // @ts-ignore res.end = function (chunk) { if (chunk) resBody.push(chunk); @@ -54,7 +52,6 @@ app.use(function (req, res, next) { } ); - // @ts-ignore oldEnd.apply(res, arguments); }; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 6e5f86bb9711..ee9249d1d38c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -46,7 +46,7 @@ "clean:deps": "premove node_modules", "test": "vitest run", "lint": "eslint ./src ./test", - "prepack": "ts-node ./src/prepack.ts" + "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0", @@ -63,12 +63,12 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", + "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/rollup-plugin/src/prepack.ts b/packages/rollup-plugin/prepack.mjs similarity index 51% rename from packages/rollup-plugin/src/prepack.ts rename to packages/rollup-plugin/prepack.mjs index f888a841aefc..e382ec430410 100644 --- a/packages/rollup-plugin/src/prepack.ts +++ b/packages/rollup-plugin/prepack.mjs @@ -2,9 +2,11 @@ import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; import * as fs from "fs"; import * as path from "path"; -const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const __dirname = path.dirname(new URL(import.meta.url).pathname); + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); const readme = readmeTemplate.replace( /#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation("rollup") ); -fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); +fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/rollup-plugin/rollup.config.mjs b/packages/rollup-plugin/rollup.config.mjs index 9ac495986fb1..98d8b5dd8022 100644 --- a/packages/rollup-plugin/rollup.config.mjs +++ b/packages/rollup-plugin/rollup.config.mjs @@ -1,5 +1,4 @@ import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; export default { platform: "node", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 00213279fdb4..7815abf7fecf 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -45,7 +45,7 @@ "clean:deps": "premove node_modules", "test": "vitest run", "lint": "eslint ./src ./test", - "prepack": "ts-node ./src/prepack.ts" + "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0", @@ -54,12 +54,12 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", + "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "ts-node": "^10.9.1", "typescript": "^4.7.4" }, "volta": { diff --git a/packages/vite-plugin/src/prepack.ts b/packages/vite-plugin/prepack.mjs similarity index 51% rename from packages/vite-plugin/src/prepack.ts rename to packages/vite-plugin/prepack.mjs index 8e0cd553cfd5..bf25ce4b5e80 100644 --- a/packages/vite-plugin/src/prepack.ts +++ b/packages/vite-plugin/prepack.mjs @@ -2,9 +2,11 @@ import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; import * as fs from "fs"; import * as path from "path"; -const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const __dirname = path.dirname(new URL(import.meta.url).pathname); + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); const readme = readmeTemplate.replace( /#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation("vite") ); -fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); +fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/vite-plugin/rollup.config.mjs b/packages/vite-plugin/rollup.config.mjs index 9ac495986fb1..98d8b5dd8022 100644 --- a/packages/vite-plugin/rollup.config.mjs +++ b/packages/vite-plugin/rollup.config.mjs @@ -1,5 +1,4 @@ import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; export default { platform: "node", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index acf8b094fa0b..b79287b98522 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -50,7 +50,7 @@ "clean:deps": "premove node_modules", "test": "vitest run", "lint": "eslint ./src ./test", - "prepack": "ts-node ./src/prepack.ts" + "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0" @@ -58,13 +58,13 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", + "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "ts-node": "^10.9.1", "typescript": "^4.7.4", "webpack": "5.76.0" }, diff --git a/packages/webpack-plugin/src/prepack.ts b/packages/webpack-plugin/prepack.mjs similarity index 51% rename from packages/webpack-plugin/src/prepack.ts rename to packages/webpack-plugin/prepack.mjs index 954f9d3cd9f6..9e83b98be9f8 100644 --- a/packages/webpack-plugin/src/prepack.ts +++ b/packages/webpack-plugin/prepack.mjs @@ -2,9 +2,11 @@ import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; import * as fs from "fs"; import * as path from "path"; -const readmeTemplate = fs.readFileSync(path.join(__dirname, "..", "README_TEMPLATE.md"), "utf-8"); +const __dirname = path.dirname(new URL(import.meta.url).pathname); + +const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); const readme = readmeTemplate.replace( /#OPTIONS_SECTION_INSERT#/, generateOptionsDocumentation("webpack") ); -fs.writeFileSync(path.join(__dirname, "..", "README.md"), readme, "utf-8"); +fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/yarn.lock b/yarn.lock index 2b6afd06ac4f..3b36fd6156c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -274,13 +274,6 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@emnapi/core@1.10.0": version "1.10.0" resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" @@ -664,11 +657,6 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.1" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - "@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" @@ -697,14 +685,6 @@ 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" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@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" @@ -1255,26 +1235,6 @@ resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - "@tybys/wasm-util@^0.10.1": version "0.10.1" resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" @@ -1817,12 +1777,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +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" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -1886,11 +1841,6 @@ anymatch@^3.0.0: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2243,11 +2193,6 @@ cookie@^0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2322,11 +2267,6 @@ destroy@1.2.0: resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3811,11 +3751,6 @@ magic-string@^0.30.21, magic-string@~0.30.8: dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -5061,25 +4996,6 @@ tree-kill@^1.2.2: resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -ts-node@^10.9.1, ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -5190,11 +5106,6 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -5425,11 +5336,6 @@ yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 56e04ced1f61adb06eb4e0f382eb0f9dcd6a43d3 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 22 May 2026 12:51:41 +0100 Subject: [PATCH 632/640] test: Fix CI caching on Windows (#934) --- .github/workflows/checks.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6e420f447a9a..ba20ab65db47 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -148,8 +148,10 @@ jobs: uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 id: dependency-cache with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} + path: | + node_modules + packages/*/node_modules + key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' From 97f657cd1f93b1b399bf7bb6354b1fd7cb823bad Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 22 May 2026 14:47:51 +0100 Subject: [PATCH 633/640] chore: Align TypeScript configuration with JavaScript repo (#932) --- .vscode/settings.json | 3 ++- package.json | 7 +++++-- .../.eslintrc.js | 2 +- .../package.json | 6 ++---- .../src/tsconfig.json | 8 -------- .../test/tsconfig.json | 2 +- .../tsconfig.json | 5 +++++ .../types.tsconfig.json | 2 +- packages/bundler-plugin-core/.eslintrc.js | 2 +- packages/bundler-plugin-core/package.json | 6 ++---- packages/bundler-plugin-core/src/tsconfig.json | 13 ------------- .../bundler-plugin-core/test/tsconfig.json | 2 +- packages/bundler-plugin-core/tsconfig.json | 5 +++++ .../bundler-plugin-core/types.tsconfig.json | 7 +++---- packages/dev-utils/tsconfig.json | 7 ++----- packages/dev-utils/types.tsconfig.json | 11 ----------- packages/esbuild-plugin/.eslintrc.js | 2 +- packages/esbuild-plugin/package.json | 6 ++---- packages/esbuild-plugin/src/tsconfig.json | 8 -------- packages/esbuild-plugin/test/tsconfig.json | 2 +- packages/esbuild-plugin/tsconfig.json | 5 +++++ packages/esbuild-plugin/types.tsconfig.json | 2 +- packages/integration-tests-next/package.json | 1 - packages/integration-tests-next/tsconfig.json | 2 +- packages/rollup-plugin/.eslintrc.js | 2 +- packages/rollup-plugin/package.json | 6 ++---- packages/rollup-plugin/src/tsconfig.json | 8 -------- packages/rollup-plugin/test/tsconfig.json | 2 +- packages/rollup-plugin/tsconfig.json | 5 +++++ packages/rollup-plugin/types.tsconfig.json | 2 +- packages/tsconfigs/base-config.json | 17 ----------------- packages/tsconfigs/package.json | 6 ------ packages/vite-plugin/.eslintrc.js | 2 +- packages/vite-plugin/package.json | 6 ++---- packages/vite-plugin/src/tsconfig.json | 8 -------- packages/vite-plugin/test/tsconfig.json | 2 +- packages/vite-plugin/tsconfig.json | 5 +++++ packages/vite-plugin/types.tsconfig.json | 2 +- packages/webpack-plugin/.eslintrc.js | 2 +- packages/webpack-plugin/package.json | 4 +--- packages/webpack-plugin/src/tsconfig.json | 8 -------- packages/webpack-plugin/test/tsconfig.json | 2 +- packages/webpack-plugin/tsconfig.json | 8 ++++++++ packages/webpack-plugin/types.tsconfig.json | 2 +- tsconfig.json | 12 ++++++++++++ yarn.lock | 18 ++++++++++++++---- 46 files changed, 100 insertions(+), 145 deletions(-) delete mode 100644 packages/babel-plugin-component-annotate/src/tsconfig.json create mode 100644 packages/babel-plugin-component-annotate/tsconfig.json delete mode 100644 packages/bundler-plugin-core/src/tsconfig.json create mode 100644 packages/bundler-plugin-core/tsconfig.json delete mode 100644 packages/dev-utils/types.tsconfig.json delete mode 100644 packages/esbuild-plugin/src/tsconfig.json create mode 100644 packages/esbuild-plugin/tsconfig.json delete mode 100644 packages/rollup-plugin/src/tsconfig.json create mode 100644 packages/rollup-plugin/tsconfig.json delete mode 100644 packages/tsconfigs/base-config.json delete mode 100644 packages/tsconfigs/package.json delete mode 100644 packages/vite-plugin/src/tsconfig.json create mode 100644 packages/vite-plugin/tsconfig.json delete mode 100644 packages/webpack-plugin/src/tsconfig.json create mode 100644 packages/webpack-plugin/tsconfig.json create mode 100644 tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 90150e961f66..31c8240d4708 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "editor.defaultFormatter": "oxc.oxc-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode", + "js/ts.tsdk.path": "node_modules/typescript/lib" } diff --git a/package.json b/package.json index 5adccc36192d..668853bf62e7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "packages/eslint-configs", "packages/playground", "packages/rollup-plugin", - "packages/tsconfigs", "packages/vite-plugin", "packages/webpack-plugin", "packages/integration-tests-next" @@ -34,10 +33,14 @@ "fix:formatting": "oxfmt ." }, "devDependencies": { + "@types/node": "^18.6.3", + "@sentry-internal/eslint-plugin-sdk": "^10.53.1", + "@sentry-internal/typescript": "^10.53.1", "minimatch": "^10.2.2", "npm-run-all": "^4.1.5", "nx": "22.5.2", - "oxfmt": "^0.33.0" + "oxfmt": "^0.33.0", + "typescript": "~5.8.0" }, "volta": { "node": "22.22.0", diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js index e616bbf586ba..7a059450c6e2 100644 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ b/packages/babel-plugin-component-annotate/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, globals: { Set: "readonly", diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 575d70028b83..ff5660500955 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -40,7 +40,7 @@ "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -54,13 +54,11 @@ "@types/babel__core": "^7.20.5", "@babel/preset-react": "^7.23.3", "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "typescript": "^4.7.4" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/babel-plugin-component-annotate/src/tsconfig.json b/packages/babel-plugin-component-annotate/src/tsconfig.json deleted file mode 100644 index fd37e1237c42..000000000000 --- a/packages/babel-plugin-component-annotate/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/babel-plugin-component-annotate/test/tsconfig.json b/packages/babel-plugin-component-annotate/test/tsconfig.json index b2d8716fb980..76d0c9cff6f2 100644 --- a/packages/babel-plugin-component-annotate/test/tsconfig.json +++ b/packages/babel-plugin-component-annotate/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/babel-plugin-component-annotate/tsconfig.json b/packages/babel-plugin-component-annotate/tsconfig.json new file mode 100644 index 000000000000..2044e12308ea --- /dev/null +++ b/packages/babel-plugin-component-annotate/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/babel-plugin-component-annotate/types.tsconfig.json b/packages/babel-plugin-component-annotate/types.tsconfig.json index fb161bc4ab78..e427dd968049 100644 --- a/packages/babel-plugin-component-annotate/types.tsconfig.json +++ b/packages/babel-plugin-component-annotate/types.tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", + "extends": "./tsconfig.json", "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 3bd3df603054..028953381bdd 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -12,7 +12,7 @@ module.exports = { ], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index bf527caea66e..70f95700c581 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -42,7 +42,7 @@ "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -64,7 +64,6 @@ }, "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", @@ -72,8 +71,7 @@ "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "typescript": "^4.7.4" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/bundler-plugin-core/src/tsconfig.json b/packages/bundler-plugin-core/src/tsconfig.json deleted file mode 100644 index 52a91dac042a..000000000000 --- a/packages/bundler-plugin-core/src/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*"], - "compilerOptions": { - "esModuleInterop": true, - "resolveJsonModule": true, // needed to import package.json - "types": ["node"], - "target": "ES6", // needed for some iterator features - "module": "es2020", - "lib": ["ES2020", "DOM"] // es2020 needed for "new Set()", DOM needed for various bundler types - } -} diff --git a/packages/bundler-plugin-core/test/tsconfig.json b/packages/bundler-plugin-core/test/tsconfig.json index 190ab95499d7..fd99592a2ba7 100644 --- a/packages/bundler-plugin-core/test/tsconfig.json +++ b/packages/bundler-plugin-core/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./*.ts", "./sentry/**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/bundler-plugin-core/tsconfig.json b/packages/bundler-plugin-core/tsconfig.json new file mode 100644 index 000000000000..2044e12308ea --- /dev/null +++ b/packages/bundler-plugin-core/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/bundler-plugin-core/types.tsconfig.json b/packages/bundler-plugin-core/types.tsconfig.json index 6997260318ad..e427dd968049 100644 --- a/packages/bundler-plugin-core/types.tsconfig.json +++ b/packages/bundler-plugin-core/types.tsconfig.json @@ -1,12 +1,11 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", - "files": ["./src/index.ts"], + "extends": "./tsconfig.json", + "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", "declaration": true, "emitDeclarationOnly": true, - "declarationDir": "./dist/types", - "declarationMap": true + "declarationDir": "./dist/types" } } diff --git a/packages/dev-utils/tsconfig.json b/packages/dev-utils/tsconfig.json index e8df37e0993d..2044e12308ea 100644 --- a/packages/dev-utils/tsconfig.json +++ b/packages/dev-utils/tsconfig.json @@ -1,8 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*"], - "compilerOptions": { - "esModuleInterop": true - } + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] } diff --git a/packages/dev-utils/types.tsconfig.json b/packages/dev-utils/types.tsconfig.json deleted file mode 100644 index 631f5dc6c735..000000000000 --- a/packages/dev-utils/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./src/**/*"], - "compilerOptions": { - "esModuleInterop": true, - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js index 1efff870dd1b..443a69cb70cd 100644 --- a/packages/esbuild-plugin/.eslintrc.js +++ b/packages/esbuild-plugin/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index b2bb3102755b..5be2026a3eb8 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -37,7 +37,7 @@ "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -52,14 +52,12 @@ }, "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "typescript": "^4.7.4" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/esbuild-plugin/src/tsconfig.json b/packages/esbuild-plugin/src/tsconfig.json deleted file mode 100644 index fd37e1237c42..000000000000 --- a/packages/esbuild-plugin/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/esbuild-plugin/test/tsconfig.json b/packages/esbuild-plugin/test/tsconfig.json index b2d8716fb980..76d0c9cff6f2 100644 --- a/packages/esbuild-plugin/test/tsconfig.json +++ b/packages/esbuild-plugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/esbuild-plugin/tsconfig.json b/packages/esbuild-plugin/tsconfig.json new file mode 100644 index 000000000000..2044e12308ea --- /dev/null +++ b/packages/esbuild-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/esbuild-plugin/types.tsconfig.json b/packages/esbuild-plugin/types.tsconfig.json index fb161bc4ab78..e427dd968049 100644 --- a/packages/esbuild-plugin/types.tsconfig.json +++ b/packages/esbuild-plugin/types.tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", + "extends": "./tsconfig.json", "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 57c119c5e4ff..05e99ee5a955 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -14,7 +14,6 @@ }, "dependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry/esbuild-plugin": "5.3.0", "@sentry/rollup-plugin": "5.3.0", "@sentry/vite-plugin": "5.3.0", diff --git a/packages/integration-tests-next/tsconfig.json b/packages/integration-tests-next/tsconfig.json index 1e806fd52af5..f90739dd481a 100644 --- a/packages/integration-tests-next/tsconfig.json +++ b/packages/integration-tests-next/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", + "extends": "../../tsconfig.json", "include": ["./**/*"], // We exclude the Vite files for now. // Because the Vite plugin 'references" a different `vite` package when devDeps are loaded, it doesn't diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js index cfbd657597d1..ca7345c94a3b 100644 --- a/packages/rollup-plugin/.eslintrc.js +++ b/packages/rollup-plugin/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index ee9249d1d38c..79a091fdf1ee 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -38,7 +38,7 @@ "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -62,14 +62,12 @@ }, "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "typescript": "^4.7.4" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/rollup-plugin/src/tsconfig.json b/packages/rollup-plugin/src/tsconfig.json deleted file mode 100644 index fd37e1237c42..000000000000 --- a/packages/rollup-plugin/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/rollup-plugin/test/tsconfig.json b/packages/rollup-plugin/test/tsconfig.json index b2d8716fb980..76d0c9cff6f2 100644 --- a/packages/rollup-plugin/test/tsconfig.json +++ b/packages/rollup-plugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/rollup-plugin/tsconfig.json b/packages/rollup-plugin/tsconfig.json new file mode 100644 index 000000000000..2044e12308ea --- /dev/null +++ b/packages/rollup-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/rollup-plugin/types.tsconfig.json b/packages/rollup-plugin/types.tsconfig.json index fb161bc4ab78..e427dd968049 100644 --- a/packages/rollup-plugin/types.tsconfig.json +++ b/packages/rollup-plugin/types.tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", + "extends": "./tsconfig.json", "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", diff --git a/packages/tsconfigs/base-config.json b/packages/tsconfigs/base-config.json deleted file mode 100644 index 90e703de2427..000000000000 --- a/packages/tsconfigs/base-config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "moduleResolution": "node", - "skipLibCheck": true, - "isolatedModules": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noPropertyAccessFromIndexSignature": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "exactOptionalPropertyTypes": false - } -} diff --git a/packages/tsconfigs/package.json b/packages/tsconfigs/package.json deleted file mode 100644 index 6654457a4de0..000000000000 --- a/packages/tsconfigs/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@sentry-internal/sentry-bundler-plugin-tsconfig", - "version": "5.3.0", - "license": "MIT", - "private": true -} diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js index cfbd657597d1..ca7345c94a3b 100644 --- a/packages/vite-plugin/.eslintrc.js +++ b/packages/vite-plugin/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7815abf7fecf..55852e118d9d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -37,7 +37,7 @@ "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "build:npm": "npm pack", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -53,14 +53,12 @@ }, "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "typescript": "^4.7.4" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/vite-plugin/src/tsconfig.json b/packages/vite-plugin/src/tsconfig.json deleted file mode 100644 index fd37e1237c42..000000000000 --- a/packages/vite-plugin/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/vite-plugin/test/tsconfig.json b/packages/vite-plugin/test/tsconfig.json index b2d8716fb980..76d0c9cff6f2 100644 --- a/packages/vite-plugin/test/tsconfig.json +++ b/packages/vite-plugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/vite-plugin/tsconfig.json b/packages/vite-plugin/tsconfig.json new file mode 100644 index 000000000000..2044e12308ea --- /dev/null +++ b/packages/vite-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/vite-plugin/types.tsconfig.json b/packages/vite-plugin/types.tsconfig.json index fb161bc4ab78..e427dd968049 100644 --- a/packages/vite-plugin/types.tsconfig.json +++ b/packages/vite-plugin/types.tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", + "extends": "./tsconfig.json", "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js index cfbd657597d1..ca7345c94a3b 100644 --- a/packages/webpack-plugin/.eslintrc.js +++ b/packages/webpack-plugin/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, - project: ["./src/tsconfig.json", "./test/tsconfig.json"], + project: ["./tsconfig.json", "./test/tsconfig.json"], }, env: { node: true, diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index b79287b98522..bf973dc040b6 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -41,7 +41,7 @@ "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./src/tsconfig.json --noEmit", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", "build:npm": "npm pack", "clean": "run-s clean:build", @@ -57,7 +57,6 @@ }, "devDependencies": { "@sentry-internal/eslint-config": "5.3.0", - "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", @@ -65,7 +64,6 @@ "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", - "typescript": "^4.7.4", "webpack": "5.76.0" }, "peerDependencies": { diff --git a/packages/webpack-plugin/src/tsconfig.json b/packages/webpack-plugin/src/tsconfig.json deleted file mode 100644 index fd37e1237c42..000000000000 --- a/packages/webpack-plugin/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/sentry-bundler-plugin-tsconfig/base-config.json", - "include": ["./**/*", "../package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/webpack-plugin/test/tsconfig.json b/packages/webpack-plugin/test/tsconfig.json index b2d8716fb980..76d0c9cff6f2 100644 --- a/packages/webpack-plugin/test/tsconfig.json +++ b/packages/webpack-plugin/test/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../src/tsconfig.json", + "extends": "../tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { "types": ["node"] diff --git a/packages/webpack-plugin/tsconfig.json b/packages/webpack-plugin/tsconfig.json new file mode 100644 index 000000000000..088fbb9b9bab --- /dev/null +++ b/packages/webpack-plugin/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/webpack-plugin/types.tsconfig.json b/packages/webpack-plugin/types.tsconfig.json index fb161bc4ab78..e427dd968049 100644 --- a/packages/webpack-plugin/types.tsconfig.json +++ b/packages/webpack-plugin/types.tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./src/tsconfig.json", + "extends": "./tsconfig.json", "include": ["./src/**/*"], "compilerOptions": { "rootDir": "./src", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000000..ecd9e36ef5fa --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@sentry-internal/typescript/tsconfig.json", + "include": ["./**/*.ts"], + "exclude": ["node_modules"], + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", + "types": ["node"], + "skipLibCheck": true + } +} diff --git a/yarn.lock b/yarn.lock index 3b36fd6156c3..5c9e779103ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1089,6 +1089,11 @@ resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz#4584a8a87b29188a4c1fe987a9fcf701e256d86c" integrity sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA== +"@sentry-internal/eslint-plugin-sdk@^10.53.1": + version "10.53.1" + resolved "https://registry.npmjs.org/@sentry-internal/eslint-plugin-sdk/-/eslint-plugin-sdk-10.53.1.tgz#50829ad86d668ca4bb502e6e7f5960aa5cb6a5b0" + integrity sha512-L0XfWq7wxw0PBubGsUq9cC+CvmMFGlmAOHxJM1y9I+UVqnZSc2UggJ1hoPZc4J2zx5OxB92uN/c+cD2N65COKA== + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -1099,6 +1104,11 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" +"@sentry-internal/typescript@^10.53.1": + version "10.53.1" + resolved "https://registry.npmjs.org/@sentry-internal/typescript/-/typescript-10.53.1.tgz#216b3e3ec0d5aa7ef3e7055ea50d6371d9786cce" + integrity sha512-7ncY4Ww9MsTf5lsX9qAUaiNeQdKNBeZm7rtFze0UeU8fTLxOKx9ink4jCFa1xB/sztIR1pq/rGmnBs7evvn+aw== + "@sentry/cli-darwin@2.58.5": version "2.58.5" resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.5.tgz#ea9c4ab41161f15c636d0d2dcf126202cb49a588" @@ -5051,10 +5061,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^4.7.4: - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@~5.8.0: + version "5.8.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== unbox-primitive@^1.0.2: version "1.0.2" From ac484d82fd9f3259d58acc421b4971dd4e5b46ce Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Fri, 22 May 2026 15:05:51 +0100 Subject: [PATCH 634/640] chore: Align lint configuration with JavaScript repo (#933) --- .github/workflows/checks.yml | 5 + .oxlintrc.base.json | 164 +++ .oxlintrc.json | 43 + package.json | 6 +- .../.eslintrc.js | 16 - .../package.json | 5 +- .../src/experimental.ts | 11 +- .../src/index.ts | 15 +- .../test/sentry-label.test.ts | 3 +- packages/bundler-plugin-core/.eslintrc.js | 20 - packages/bundler-plugin-core/package.json | 6 +- .../sentry-esbuild-debugid-injection-file.js | 2 +- .../src/build-plugin-manager.ts | 27 +- .../src/debug-id-upload.ts | 14 +- .../src/options-mapping.ts | 5 +- .../src/sentry/telemetry.ts | 10 +- .../src/sentry/transports.ts | 2 +- packages/bundler-plugin-core/src/utils.ts | 38 +- .../test/build-plugin-manager.test.ts | 3 +- .../test/debug-id-upload.test.ts | 2 +- .../test/option-mappings.test.ts | 5 +- .../test/sentry/telemetry.test.ts | 5 +- packages/dev-utils/.eslintrc.js | 13 - packages/dev-utils/package.json | 6 - .../src/generate-documentation-table.ts | 1 + packages/esbuild-plugin/.eslintrc.js | 14 - packages/esbuild-plugin/package.json | 3 - packages/esbuild-plugin/src/index.ts | 6 +- .../esbuild-plugin/test/public-api.test.ts | 2 +- packages/eslint-configs/base.js | 23 - packages/eslint-configs/package.json | 27 - packages/integration-tests-next/.eslintrc.js | 23 - .../fixtures/esbuild/utils.ts | 3 +- .../fixtures/rolldown/utils.ts | 3 +- .../fixtures/rollup3/utils.ts | 3 +- .../fixtures/rollup4/utils.ts | 3 +- .../integration-tests-next/fixtures/utils.ts | 5 +- .../fixtures/vite4/utils.ts | 3 +- .../fixtures/vite7/utils.ts | 3 +- .../fixtures/vite8/utils.ts | 3 +- .../fixtures/webpack5/utils.ts | 3 +- packages/integration-tests-next/package.json | 2 - packages/playground/rollup.config.mjs | 1 - packages/rollup-plugin/.eslintrc.js | 13 - packages/rollup-plugin/package.json | 3 - packages/rollup-plugin/src/index.ts | 7 +- .../rollup-plugin/test/public-api.test.ts | 14 +- packages/vite-plugin/.eslintrc.js | 13 - packages/vite-plugin/package.json | 3 - packages/vite-plugin/src/index.ts | 2 +- packages/webpack-plugin/.eslintrc.js | 13 - packages/webpack-plugin/package.json | 3 - packages/webpack-plugin/src/index.ts | 3 +- packages/webpack-plugin/src/webpack4and5.ts | 4 +- packages/webpack-plugin/src/webpack5.ts | 3 +- .../webpack-plugin/test/public-api.test.ts | 2 +- packages/webpack-plugin/test/webpack5.test.ts | 2 +- yarn.lock | 971 ++++-------------- 58 files changed, 509 insertions(+), 1104 deletions(-) create mode 100644 .oxlintrc.base.json create mode 100644 .oxlintrc.json delete mode 100644 packages/babel-plugin-component-annotate/.eslintrc.js delete mode 100644 packages/bundler-plugin-core/.eslintrc.js delete mode 100644 packages/dev-utils/.eslintrc.js delete mode 100644 packages/esbuild-plugin/.eslintrc.js delete mode 100644 packages/eslint-configs/base.js delete mode 100644 packages/eslint-configs/package.json delete mode 100644 packages/integration-tests-next/.eslintrc.js delete mode 100644 packages/rollup-plugin/.eslintrc.js delete mode 100644 packages/vite-plugin/.eslintrc.js delete mode 100644 packages/webpack-plugin/.eslintrc.js diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index ba20ab65db47..54e8f6146f4c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -187,6 +187,11 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile --ignore-engines if: steps.dependency-cache.outputs.cache-hit != 'true' + - name: Download build artifacts + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 + with: + name: dist-artifacts-${{ github.run_id }} + path: packages - run: yarn lint artifacts: diff --git a/.oxlintrc.base.json b/.oxlintrc.base.json new file mode 100644 index 000000000000..599e134e95e4 --- /dev/null +++ b/.oxlintrc.base.json @@ -0,0 +1,164 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["typescript", "import", "jsdoc", "vitest"], + "rules": { + "no-unused-vars": [ + "warn", + { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" } + ], + + // === Base rules from eslint-config-sdk/base.js === + "no-console": "error", + "no-alert": "error", + "no-param-reassign": "error", + "prefer-template": "error", + "no-bitwise": "error", + "complexity": ["error", { "max": 33 }], + "no-unused-expressions": ["error", { "allowShortCircuit": true }], + "guard-for-in": "error", + "array-callback-return": ["error", { "allowImplicit": true }], + "quotes": ["error", "single", { "avoidEscape": true }], + "no-return-await": "error", + "max-lines": ["error", { "max": 300, "skipComments": true, "skipBlankLines": true }], + + // === Import rules === + "import/namespace": "off", + "import/no-unresolved": "off", + + // === Rules turned off (not enforced in ESLint or causing false positives) === + "no-control-regex": "off", + "jsdoc/check-tag-names": "off", + "jsdoc/require-yields": "off", + "no-useless-rename": "off", + "no-constant-binary-expression": "off", + "vitest/hoisted-apis-on-top": "off", + "vitest/no-conditional-tests": "off", + "no-unsafe-optional-chaining": "off", + "no-eval": "off", + "no-import-assign": "off", + "typescript/no-duplicate-type-constituents": "off" + }, + "overrides": [ + { + "files": ["**/*.ts", "**/*.tsx", "**/*.d.ts"], + "rules": { + "typescript/ban-ts-comment": "error", + "typescript/consistent-type-imports": "error", + "typescript/no-unnecessary-type-assertion": "error", + "typescript/prefer-for-of": "error", + "typescript/no-floating-promises": ["error", { "ignoreVoid": true }], + "typescript/no-dynamic-delete": "error", + "typescript/no-unsafe-member-access": "error", + "typescript/unbound-method": "error", + "typescript/no-explicit-any": "error", + "typescript/no-empty-function": "off", + "typescript/prefer-optional-chain": ["error"], + "typescript/no-redundant-type-constituents": "off", + "typescript/restrict-template-expressions": "off", + "typescript/await-thenable": "warn", + "typescript/no-base-to-string": "off" + } + }, + { + "files": ["**/*.js", "**/*.mjs", "**/*.cjs"], + "rules": { + "typescript/ban-ts-comment": "off", + "typescript/consistent-type-imports": "off", + "typescript/prefer-optional-chain": "off", + "typescript/no-unnecessary-type-assertion": "off", + "typescript/prefer-for-of": "off", + "typescript/no-floating-promises": "off", + "typescript/no-dynamic-delete": "off", + "typescript/no-unsafe-member-access": "off", + "typescript/unbound-method": "off", + "typescript/no-explicit-any": "off" + } + }, + { + "files": [ + "**/*.test.ts", + "**/*.test.tsx", + "**/*.test.js", + "**/*.test.jsx", + "**/test/**", + "**/tests/**", + "**/suites/**", + "**/loader-suites/**" + ], + "rules": { + "typescript/explicit-function-return-type": "off", + "no-unused-expressions": "off", + "typescript/no-unused-expressions": "off", + "typescript/no-unnecessary-type-assertion": "off", + "typescript/no-unsafe-member-access": "off", + "typescript/no-explicit-any": "off", + "typescript/no-non-null-assertion": "off", + "typescript/no-floating-promises": "off", + "typescript/unbound-method": "off", + "max-lines": "off", + "complexity": "off", + "typescript/prefer-optional-chain": "off", + "typescript/no-misused-spread": "off", + "typescript/require-array-sort-compare": "off", + "typescript/no-base-to-string": "off", + "typescript/await-thenable": "off" + } + }, + { + "files": ["*.tsx"], + "rules": { + "jsdoc/require-jsdoc": "off" + } + }, + { + "files": ["*.config.js", "*.config.mjs", "*.config.ts", "vite.config.ts", ".size-limit.js"], + "rules": { + "no-console": "off", + "max-lines": "off" + } + }, + { + "files": ["**/integrations/node-fetch/vendored/**/*.ts"], + "rules": { + "typescript/consistent-type-imports": "off", + "typescript/no-unnecessary-type-assertion": "off", + "typescript/no-unsafe-member-access": "off", + "typescript/no-explicit-any": "off", + "typescript/prefer-for-of": "off", + "max-lines": "off", + "complexity": "off", + "no-param-reassign": "off" + } + }, + { + "files": ["**/integrations/tracing/redis/vendored/**/*.ts"], + "rules": { + "typescript/no-explicit-any": "off", + "typescript/no-unsafe-member-access": "off", + "typescript/no-this-alias": "off", + "max-lines": "off", + "no-bitwise": "off" + } + }, + { + "files": [ + "**/scenarios/**", + "**/fixtures/**", + "**/playground/**", + "**/rollup-utils/**", + "**/bundle-analyzer-scenarios/**", + "**/bundle-analyzer-scenarios/*.cjs", + "**/bundle-analyzer-scenarios/*.js" + ], + "rules": { + "no-console": "off" + } + }, + { + "files": ["**/src/**"], + "rules": { + "no-restricted-globals": ["error", "window", "document", "location", "navigator"] + } + } + ] +} diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 000000000000..83ff1674daf4 --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,43 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "extends": ["./.oxlintrc.base.json"], + "options": { + "typeAware": true + }, + "jsPlugins": [ + { + "name": "sdk", + "specifier": "@sentry-internal/eslint-plugin-sdk" + } + ], + "categories": {}, + "rules": { + "sdk/no-eq-empty": "error" + }, + "overrides": [ + { + "files": ["**/src/**"], + "rules": { + "sdk/no-class-field-initializers": "error", + "sdk/no-regexp-constructor": "error" + } + } + ], + "env": { + "es2017": true, + "node": true + }, + "globals": {}, + "ignorePatterns": [ + "coverage/**", + "build/**", + "dist/**", + "cjs/**", + "esm/**", + "examples/**", + "test/manual/**", + "types/**", + "scripts/*.js", + "node_modules/**" + ] +} diff --git a/package.json b/package.json index 668853bf62e7..d9bac5049dde 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "packages/bundler-plugin-core", "packages/dev-utils", "packages/esbuild-plugin", - "packages/eslint-configs", "packages/playground", "packages/rollup-plugin", "packages/vite-plugin", @@ -28,7 +27,8 @@ "test": "nx run-many --target=test --all", "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests-next", "test:integration": "nx run @sentry-internal/integration-tests-next:test", - "lint": "nx run-many --target=lint --all", + "lint": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint .", + "lint:fix": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint . --fix", "check:formatting": "oxfmt --check .", "fix:formatting": "oxfmt ." }, @@ -40,6 +40,8 @@ "npm-run-all": "^4.1.5", "nx": "22.5.2", "oxfmt": "^0.33.0", + "oxlint": "1.53.0", + "oxlint-tsgolint": "0.16.0", "typescript": "~5.8.0" }, "volta": { diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js deleted file mode 100644 index 7a059450c6e2..000000000000 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - globals: { - Set: "readonly", - }, - env: { - node: true, - }, -}; diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index ff5660500955..be6f555fcff0 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -46,16 +46,13 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "vitest run", - "lint": "eslint ./src ./test" + "test": "vitest run" }, "devDependencies": { "@babel/core": "7.18.5", "@types/babel__core": "^7.20.5", "@babel/preset-react": "^7.23.3", - "@sentry-internal/eslint-config": "5.3.0", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" diff --git a/packages/babel-plugin-component-annotate/src/experimental.ts b/packages/babel-plugin-component-annotate/src/experimental.ts index 248b7578fedd..130f4abcfeb4 100644 --- a/packages/babel-plugin-component-annotate/src/experimental.ts +++ b/packages/babel-plugin-component-annotate/src/experimental.ts @@ -1,3 +1,4 @@ +/* oxlint-disable max-lines */ /** * MIT License * @@ -103,7 +104,7 @@ export function experimentalComponentNameAnnotatePlugin({ }, }, FunctionDeclaration(path, state) { - if (!path.node.id || !path.node.id.name) { + if (!path.node.id?.name) { return; } @@ -134,7 +135,7 @@ export function experimentalComponentNameAnnotatePlugin({ return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); }); - if (!render || !render.traverse) { + if (!render?.traverse) { return; } @@ -441,10 +442,8 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { for (const prop of properties) { if ( prop.type === "ObjectProperty" && - prop.key && - prop.key.type === "Identifier" && - prop.value && - prop.value.type === "Identifier" && + prop.key?.type === "Identifier" && + prop.value?.type === "Identifier" && prop.key.name === "Fragment" ) { fragmentAliases.add(prop.value.name); diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 8ffe71da31df..13773f43bf55 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -1,3 +1,4 @@ +/* oxlint-disable max-lines */ /** * MIT License * @@ -109,7 +110,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): }, }, FunctionDeclaration(path, state) { - if (!path.node.id || !path.node.id.name) { + if (!path.node.id?.name) { return; } if (isKnownIncompatiblePluginFromState(state)) { @@ -147,7 +148,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); }); - if (!render || !render.traverse || isKnownIncompatiblePluginFromState(state)) { + if (!render?.traverse || isKnownIncompatiblePluginFromState(state)) { return; } @@ -319,7 +320,7 @@ function processJSX( return; } - if (shouldSetComponentName && openingElement && openingElement.node) { + if (shouldSetComponentName && openingElement?.node) { shouldSetComponentName = false; processJSX(context, child, currentComponentName); } else { @@ -523,10 +524,8 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { for (const prop of properties) { if ( prop.type === "ObjectProperty" && - prop.key && - prop.key.type === "Identifier" && - prop.value && - prop.value.type === "Identifier" && + prop.key?.type === "Identifier" && + prop.value?.type === "Identifier" && prop.key.name === "Fragment" ) { fragmentAliases.add(prop.value.name); @@ -880,7 +879,7 @@ function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.No } if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH - 3) + "..."; + label = `${label.substring(0, MAX_LABEL_LENGTH - 3)}...`; } targetElement.openingElement.attributes.push( diff --git a/packages/babel-plugin-component-annotate/test/sentry-label.test.ts b/packages/babel-plugin-component-annotate/test/sentry-label.test.ts index b11ae8e06a59..e11f0af77321 100644 --- a/packages/babel-plugin-component-annotate/test/sentry-label.test.ts +++ b/packages/babel-plugin-component-annotate/test/sentry-label.test.ts @@ -1,5 +1,6 @@ import { describe, it, expect } from "vitest"; -import { transform, BabelFileResult } from "@babel/core"; +import type { BabelFileResult } from "@babel/core"; +import { transform } from "@babel/core"; import plugin from "../src/index"; function transformWith(code: string, opts: Record = {}): BabelFileResult | null { diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js deleted file mode 100644 index 028953381bdd..000000000000 --- a/packages/bundler-plugin-core/.eslintrc.js +++ /dev/null @@ -1,20 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [ - ".eslintrc.js", - "dist", - "rollup.config.mjs", - "test/fixtures/**/*", - "sentry-release-injection-file.js", - "sentry-esbuild-debugid-injection-file.js", - ], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - env: { - node: true, - }, -}; diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 70f95700c581..637a65d94bc9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -49,9 +49,7 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "pretest": "yarn prebuild", - "test": "vitest run", - "lint": "eslint ./src ./test", - "fix": "eslint ./src ./test --format stylish --fix" + "test": "vitest run" }, "dependencies": { "@babel/core": "^7.18.5", @@ -63,12 +61,10 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js index 0bbd7d2acfc5..06ad5071d0cc 100644 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js @@ -17,4 +17,4 @@ try { globalObject._sentryDebugIds[stack] = "__SENTRY_DEBUG_ID__"; globalObject._sentryDebugIdIdentifier = "sentry-dbid-__SENTRY_DEBUG_ID__"; } -} catch (e) {} +} catch {} diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index 5ac055de0bb8..7a1b5f8719f2 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -1,3 +1,4 @@ +/* oxlint-disable max-lines */ import SentryCli from "@sentry/cli"; import { closeSession, @@ -11,14 +12,16 @@ import * as dotenv from "dotenv"; import * as fs from "fs"; import * as os from "os"; import * as path from "path"; -import { NormalizedOptions, normalizeUserOptions, validateOptions } from "./options-mapping"; -import { createLogger, Logger } from "./logger"; +import type { NormalizedOptions } from "./options-mapping"; +import { normalizeUserOptions, validateOptions } from "./options-mapping"; +import type { Logger } from "./logger"; +import { createLogger } from "./logger"; import { allowedToSendTelemetry, createSentryInstance, safeFlushTelemetry, } from "./sentry/telemetry"; -import { Options, SentrySDKBuildFlags } from "./types"; +import type { Options, SentrySDKBuildFlags } from "./types"; import { arrayify, getProjects, @@ -456,14 +459,12 @@ export function createSentryBuildPluginManager( return; } else if (!options.authToken) { logger.warn( - "No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + `No auth token provided. Will not create release. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN")}` ); return; } else if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( - "No organization slug provided. Will not create release. Please set the `org` option to your Sentry organization slug." + - getTurborepoEnvPassthroughWarning("SENTRY_ORG") + `No organization slug provided. Will not create release. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning("SENTRY_ORG")}` ); return; } else if ( @@ -471,8 +472,7 @@ export function createSentryBuildPluginManager( (Array.isArray(options.project) && options.project.length === 0) ) { logger.warn( - "No project provided. Will not create release. Please set the `project` option to your Sentry project slug." + - getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") + `No project provided. Will not create release. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning("SENTRY_PROJECT")}` ); return; } @@ -858,22 +858,19 @@ function canUploadSourceMaps( } if (!options.authToken) { logger.warn( - "No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/" + - getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN") + `No auth token provided. Will not upload source maps. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN")}` ); return false; } if (!options.org && !options.authToken.startsWith("sntrys_")) { logger.warn( - "No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug." + - getTurborepoEnvPassthroughWarning("SENTRY_ORG") + `No org provided. Will not upload source maps. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning("SENTRY_ORG")}` ); return false; } if (!getProjects(options.project)?.[0]) { logger.warn( - "No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug." + - getTurborepoEnvPassthroughWarning("SENTRY_PROJECT") + `No project provided. Will not upload source maps. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning("SENTRY_PROJECT")}` ); return false; } diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugin-core/src/debug-id-upload.ts index b2bf8663131f..a078719f6e84 100644 --- a/packages/bundler-plugin-core/src/debug-id-upload.ts +++ b/packages/bundler-plugin-core/src/debug-id-upload.ts @@ -3,9 +3,9 @@ import path from "path"; import * as url from "url"; import * as util from "util"; import { promisify } from "util"; -import { SentryBuildPluginManager } from "./build-plugin-manager"; -import { Logger } from "./logger"; -import { ResolveSourceMapHook, RewriteSourcesHook } from "./types"; +import type { SentryBuildPluginManager } from "./build-plugin-manager"; +import type { Logger } from "./logger"; +import type { ResolveSourceMapHook, RewriteSourcesHook } from "./types"; import { stripQueryAndHashFromPath } from "./utils"; interface DebugIdUploadPluginOptions { @@ -151,7 +151,7 @@ export async function determineSourceMapPathFromBundle( // noop } - if (parsedUrl && parsedUrl.protocol === "file:") { + if (parsedUrl?.protocol === "file:") { searchLocations.push(url.fileURLToPath(sourceMappingUrl)); } else if (parsedUrl) { // noop, non-file urls don't translate to a local sourcemap file @@ -163,14 +163,14 @@ export async function determineSourceMapPathFromBundle( } // 2. try to find source map at path adjacent to chunk source, but with `.map` appended - searchLocations.push(bundlePath + ".map"); + searchLocations.push(`${bundlePath}.map`); for (const searchLocation of searchLocations) { try { await util.promisify(fs.access)(searchLocation); logger.debug(`Source map found for bundle \`${bundlePath}\`: \`${searchLocation}\``); return searchLocation; - } catch (e) { + } catch { // noop } } @@ -213,7 +213,7 @@ async function prepareSourceMapForDebugIdUpload( // For now we write both fields until we know what will become the standard - if ever. map["debug_id"] = debugId; map["debugId"] = debugId; - } catch (e) { + } catch { logger.error(`Failed to parse source map for debug ID upload: ${sourceMapPath}`); return; } diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugin-core/src/options-mapping.ts index c7096f1ddf12..e75093e12731 100644 --- a/packages/bundler-plugin-core/src/options-mapping.ts +++ b/packages/bundler-plugin-core/src/options-mapping.ts @@ -1,5 +1,5 @@ -import { Logger } from "./logger"; -import { +import type { Logger } from "./logger"; +import type { Options as UserOptions, SetCommitsOptions, RewriteSourcesHook, @@ -87,6 +87,7 @@ export type NormalizedOptions = { export const SENTRY_SAAS_URL = "https://sentry.io"; +// oxlint-disable-next-line complexity export function normalizeUserOptions(userOptions: UserOptions): NormalizedOptions { const options = { org: userOptions.org ?? process.env["SENTRY_ORG"], diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 984dd6c01993..7f2ee1ca46c7 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -1,7 +1,9 @@ import SentryCli from "@sentry/cli"; -import { Client } from "@sentry/types"; -import { applySdkMetadata, ServerRuntimeClient, ServerRuntimeClientOptions } from "@sentry/core"; -import { NormalizedOptions, SENTRY_SAAS_URL } from "../options-mapping"; +import type { Client } from "@sentry/types"; +import type { ServerRuntimeClientOptions } from "@sentry/core"; +import { applySdkMetadata, ServerRuntimeClient } from "@sentry/core"; +import type { NormalizedOptions } from "../options-mapping"; +import { SENTRY_SAAS_URL } from "../options-mapping"; import { Scope } from "@sentry/core"; import { createStackParser, nodeStackLineParser } from "@sentry/utils"; import { makeOptionallyEnabledNodeTransport } from "./transports"; @@ -150,7 +152,7 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis // because only at this time we checked a possibly existing .sentryclirc file. This file // could point to another URL than the default URL. cliInfo = await cli.execute(["info"], false); - } catch (e) { + } catch { return false; } diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugin-core/src/sentry/transports.ts index c6ab5f43dc8a..0626e3b194c2 100644 --- a/packages/bundler-plugin-core/src/sentry/transports.ts +++ b/packages/bundler-plugin-core/src/sentry/transports.ts @@ -126,7 +126,7 @@ export function makeOptionallyEnabledNodeTransport( const outDir = process.env["SENTRY_TEST_OUT_DIR"]; mkdirSync(outDir, { recursive: true }); const path = join(outDir, "sentry-telemetry.json"); - appendFileSync(path, JSON.stringify(request) + ",\n"); + appendFileSync(path, `${JSON.stringify(request)},\n`); return { statusCode: 200 }; } diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index a79a4f9038bc..3a24e4ead126 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -1,10 +1,12 @@ +/* oxlint-disable max-lines */ import findUp from "find-up"; import path from "path"; import fs from "fs"; import os from "os"; import crypto from "crypto"; import childProcess from "child_process"; -import MagicString, { SourceMap } from "magic-string"; +import type { SourceMap } from "magic-string"; +import MagicString from "magic-string"; /** * Checks whether the given input is already an array, and if it isn't, wraps it in one. @@ -30,7 +32,8 @@ export function getPackageJson({ cwd, stopAt }: { cwd?: string; stopAt?: string return lookupPackageJson(cwd ?? process.cwd(), path.normalize(stopAt ?? os.homedir())); } -export function parseMajorVersion(version: string): number | undefined { +export function parseMajorVersion(ver: string): number | undefined { + let version = ver; // if it has a `v` prefix, remove it if (version.startsWith("v")) { version = version.slice(1); @@ -145,7 +148,7 @@ function lookupPackageJson(cwd: string, stopAt: string): PackageJson | undefined return findUp.stop; } - return findUp.sync.exists(dirName + "/package.json") ? "package.json" : undefined; + return findUp.sync.exists(`${dirName}/package.json`) ? "package.json" : undefined; }, { cwd } ); @@ -163,12 +166,12 @@ function lookupPackageJson(cwd: string, stopAt: string): PackageJson | undefined if ("name" in json || "private" in json) { return json; } - } catch (error) { + } catch { // Ignore and walk up } // Continue up the tree, if we find a fitting package.json - const newCwd = path.dirname(path.resolve(jsonPath + "/..")); + const newCwd = path.dirname(path.resolve(`${jsonPath}/..`)); return lookupPackageJson(newCwd, stopAt); } @@ -182,18 +185,7 @@ export function stringToUUID(str: string): string { // RFC 4122 section 4.4 const v4variant = ["8", "9", "a", "b"][sha256Hash.substring(16, 17).charCodeAt(0) % 4] as string; - return ( - sha256Hash.substring(0, 8) + - "-" + - sha256Hash.substring(8, 12) + - "-4" + - sha256Hash.substring(13, 16) + - "-" + - v4variant + - sha256Hash.substring(17, 20) + - "-" + - sha256Hash.substring(20, 32) - ).toLowerCase(); + return `${sha256Hash.substring(0, 8)}-${sha256Hash.substring(8, 12)}-4${sha256Hash.substring(13, 16)}-${v4variant}${sha256Hash.substring(17, 20)}-${sha256Hash.substring(20, 32)}`.toLowerCase(); } function gitRevision(): string | undefined { @@ -203,7 +195,7 @@ function gitRevision(): string | undefined { .execSync("git rev-parse HEAD", { stdio: ["ignore", "pipe", "ignore"] }) .toString() .trim(); - } catch (e) { + } catch { // noop } return gitRevision; @@ -212,6 +204,7 @@ function gitRevision(): string | undefined { /** * Tries to guess a release name based on environmental data. */ +// oxlint-disable-next-line complexity export function determineReleaseName(): string | undefined { // This list is in approximate alpha order, separated into 3 categories: // 1. Git providers @@ -460,10 +453,13 @@ export function containsOnlyImports(code: string): boolean { export class CodeInjection { // The code below is mostly ternary operators because it saves bundle size. // The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.) - private readonly header = `!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; - private readonly footer = "}catch(e){}}();"; + private readonly header: string; + private readonly footer: string; - constructor(private body: string = "") {} + constructor(private body: string = "") { + this.header = `!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};`; + this.footer = "}catch(e){}}();"; + } public code(): string { if (this.isEmpty()) { 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 9cbaedb5b6c3..4dba33089fe7 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -5,7 +5,8 @@ import { import fs from "fs"; import { globFiles } from "../src/glob"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; -import { describe, it, expect, afterEach, beforeEach, vi, MockedFunction } from "vitest"; +import type { MockedFunction } from "vitest"; +import { describe, it, expect, afterEach, beforeEach, vi } from "vitest"; const { mockCliExecute, mockCliUploadSourceMaps, mockCliNewDeploy, mockCliConstructor } = vi.hoisted(() => ({ diff --git a/packages/bundler-plugin-core/test/debug-id-upload.test.ts b/packages/bundler-plugin-core/test/debug-id-upload.test.ts index bbcc86213387..49ff8d4c91ec 100644 --- a/packages/bundler-plugin-core/test/debug-id-upload.test.ts +++ b/packages/bundler-plugin-core/test/debug-id-upload.test.ts @@ -4,7 +4,7 @@ import * as path from "path"; import * as os from "os"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; import type { RewriteSourcesHook } from "../src/types"; -import { Logger } from "../src"; +import type { Logger } from "../src"; describe("prepareBundleForDebugIdUpload", () => { let tmpDir: string; diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index d07563147804..7194adf33f1e 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 type { Options } from "../src"; +import type { NormalizedOptions } from "../src/options-mapping"; +import { normalizeUserOptions, validateOptions } from "../src/options-mapping"; import { describe, it, test, expect, afterEach, vi, beforeEach } from "vitest"; describe("normalizeUserOptions()", () => { diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 0c4ee3a15a6b..97e636161892 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,5 +1,6 @@ -import { Scope } from "@sentry/core"; -import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; +import type { Scope } from "@sentry/core"; +import type { NormalizedOptions } from "../../src/options-mapping"; +import { normalizeUserOptions } from "../../src/options-mapping"; import { allowedToSendTelemetry, setTelemetryDataOnScope } from "../../src/sentry/telemetry"; import { describe, it, expect, afterEach, beforeEach, vi } from "vitest"; diff --git a/packages/dev-utils/.eslintrc.js b/packages/dev-utils/.eslintrc.js deleted file mode 100644 index 0bb8feae9794..000000000000 --- a/packages/dev-utils/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - env: { - node: true, - }, -}; diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b507a5c6bd09..a9e988f5c8ab 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -9,12 +9,6 @@ "scripts": { "build": "rolldown --config rollup.config.mjs" }, - "peerDependencies": { - "eslint": "^8.14.0" - }, - "devDependencies": { - "eslint": "^8.14.0" - }, "volta": { "extends": "../../package.json" } diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts index c7c5f777695b..96440c127c55 100644 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ b/packages/dev-utils/src/generate-documentation-table.ts @@ -1,3 +1,4 @@ +/* oxlint-disable max-lines */ type Bundler = "webpack" | "vite" | "rollup" | "esbuild"; type OptionDocumentation = { diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js deleted file mode 100644 index 443a69cb70cd..000000000000 --- a/packages/esbuild-plugin/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - env: { - node: true, - es6: true, - }, -}; diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 5be2026a3eb8..28783841da73 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -44,17 +44,14 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "test": "vitest run", - "lint": "eslint ./src ./test", "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 965bc90410b1..8da22f9a6c20 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,8 +1,8 @@ +import type { Options } from "@sentry/bundler-plugin-core"; import { createSentryBuildPluginManager, generateReleaseInjectorCode, generateModuleMetadataInjectorCode, - Options, getDebugIdSnippet, createDebugIdUploadFunction, CodeInjection, @@ -74,7 +74,7 @@ function getEsbuildMajorVersion(): string | undefined { const esbuild = req("esbuild") as { version?: string }; // esbuild hasn't released a v1 yet, so we'll return the minor version as the major version return esbuild.version?.split(".")[1]; - } catch (err) { + } catch { // do nothing, we'll just not report a version } @@ -268,7 +268,7 @@ export function sentryEsbuildPlugin(userOptions: Options = {}): any { sideEffects: true, pluginName, namespace: "sentry-debug-id-stub", - suffix: "?sentry-module-id=" + randomUUID(), + suffix: `?sentry-module-id=${randomUUID()}`, }; }); diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index 6a095c8742b0..a540fc0e5c34 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -1,5 +1,5 @@ import { sentryEsbuildPlugin } from "../src"; -import { Plugin } from "esbuild"; +import type { Plugin } from "esbuild"; import { describe, it, expect, test } from "vitest"; test("Esbuild plugin should exist", () => { diff --git a/packages/eslint-configs/base.js b/packages/eslint-configs/base.js deleted file mode 100644 index dff271925075..000000000000 --- a/packages/eslint-configs/base.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "prettier", - ], - rules: { - "no-console": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }, - ], - "no-undef": "error", // https://github.com/typescript-eslint/typescript-eslint/issues/4580#issuecomment-1047144015 - // Although for most codebases inferencing the return type is fine, we explicitly ask to annotate - // all functions with a return type. This is so that intent is as clear as possible as well as to - // avoid accidental breaking changes. - "@typescript-eslint/explicit-function-return-type": ["error", { allowExpressions: true }], - }, -}; diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json deleted file mode 100644 index a09b16e51acf..000000000000 --- a/packages/eslint-configs/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@sentry-internal/eslint-config", - "version": "5.3.0", - "license": "MIT", - "private": true, - "peerDependencies": { - "eslint": "^8.14.0" - }, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.4.0" - }, - "devDependencies": { - "eslint": "^8.14.0", - "premove": "^4.0.0" - }, - "scripts": { - "clean:all": "run-s clean:deps", - "clean:deps": "premove node_modules" - }, - "volta": { - "extends": "../../package.json" - } -} diff --git a/packages/integration-tests-next/.eslintrc.js b/packages/integration-tests-next/.eslintrc.js deleted file mode 100644 index 414681904fba..000000000000 --- a/packages/integration-tests-next/.eslintrc.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [ - ".eslintrc.js", - "fixtures/*/out", - "fixtures/*/src", - // We ignore Vite and Rollup fixtures for now because there are a couple of version mismatches. - "fixtures/vite*/**/*", - "fixtures/rollup*/**/*", - ], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - env: { - node: true, - }, - rules: { - "@typescript-eslint/explicit-function-return-type": "off", - }, -}; diff --git a/packages/integration-tests-next/fixtures/esbuild/utils.ts b/packages/integration-tests-next/fixtures/esbuild/utils.ts index 73479a8aab3d..d083a33ed570 100644 --- a/packages/integration-tests-next/fixtures/esbuild/utils.ts +++ b/packages/integration-tests-next/fixtures/esbuild/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/packages/integration-tests-next/fixtures/rolldown/utils.ts index 914ae398fbab..682cd6d8c212 100644 --- a/packages/integration-tests-next/fixtures/rolldown/utils.ts +++ b/packages/integration-tests-next/fixtures/rolldown/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/rollup3/utils.ts b/packages/integration-tests-next/fixtures/rollup3/utils.ts index 9061171dc442..313d0e7397b4 100644 --- a/packages/integration-tests-next/fixtures/rollup3/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup3/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/rollup4/utils.ts b/packages/integration-tests-next/fixtures/rollup4/utils.ts index f85039bcf602..f93617917192 100644 --- a/packages/integration-tests-next/fixtures/rollup4/utils.ts +++ b/packages/integration-tests-next/fixtures/rollup4/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index f33fec2090f4..f3d8615f6f3c 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -1,4 +1,5 @@ -import { execSync, ExecSyncOptions } from "node:child_process"; +import type { ExecSyncOptions } from "node:child_process"; +import { execSync } from "node:child_process"; import { randomUUID } from "node:crypto"; import { mkdtempSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs"; import { tmpdir } from "node:os"; @@ -103,7 +104,7 @@ export function readAllFiles( const tempDirs: string[] = []; export function createTempDir(): string { - const tempDir = mkdtempSync(join(tmpdir(), "sentry-bundler-plugin-" + randomUUID())); + const tempDir = mkdtempSync(join(tmpdir(), `sentry-bundler-plugin-${randomUUID()}`)); tempDirs.push(tempDir); return tempDir; } diff --git a/packages/integration-tests-next/fixtures/vite4/utils.ts b/packages/integration-tests-next/fixtures/vite4/utils.ts index 7e3b659c40eb..1b2845bca232 100644 --- a/packages/integration-tests-next/fixtures/vite4/utils.ts +++ b/packages/integration-tests-next/fixtures/vite4/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/vite7/utils.ts b/packages/integration-tests-next/fixtures/vite7/utils.ts index 1b055a8af030..01e358bc6a5c 100644 --- a/packages/integration-tests-next/fixtures/vite7/utils.ts +++ b/packages/integration-tests-next/fixtures/vite7/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/vite8/utils.ts b/packages/integration-tests-next/fixtures/vite8/utils.ts index 13fcacb38ecf..0d7f44cb0a04 100644 --- a/packages/integration-tests-next/fixtures/vite8/utils.ts +++ b/packages/integration-tests-next/fixtures/vite8/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/fixtures/webpack5/utils.ts b/packages/integration-tests-next/fixtures/webpack5/utils.ts index 00a7b04b6d11..48aedc3f11e7 100644 --- a/packages/integration-tests-next/fixtures/webpack5/utils.ts +++ b/packages/integration-tests-next/fixtures/webpack5/utils.ts @@ -2,7 +2,8 @@ import { basename, dirname, join } from "node:path"; import { createTempDir, readAllFiles, runBundler } from "../utils"; import { fileURLToPath } from "node:url"; import { rmSync } from "node:fs"; -import { TestContext, test as vitestTest } from "vitest"; +import type { TestContext } from "vitest"; +import { test as vitestTest } from "vitest"; import { execSync } from "node:child_process"; const cwd = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/integration-tests-next/package.json b/packages/integration-tests-next/package.json index 05e99ee5a955..b7afcc9dea3f 100644 --- a/packages/integration-tests-next/package.json +++ b/packages/integration-tests-next/package.json @@ -5,7 +5,6 @@ "private": true, "scripts": { "test": "node setup.mjs && vitest run --pool threads --test-timeout=10000", - "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -13,7 +12,6 @@ "clean:deps": "premove node_modules" }, "dependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry/esbuild-plugin": "5.3.0", "@sentry/rollup-plugin": "5.3.0", "@sentry/vite-plugin": "5.3.0", diff --git a/packages/playground/rollup.config.mjs b/packages/playground/rollup.config.mjs index 4adf3b4c7613..eb2423a14ff9 100644 --- a/packages/playground/rollup.config.mjs +++ b/packages/playground/rollup.config.mjs @@ -1,6 +1,5 @@ // @ts-check import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -import fs from "fs"; const input = ["src/entrypoint1.js"]; diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js deleted file mode 100644 index ca7345c94a3b..000000000000 --- a/packages/rollup-plugin/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - env: { - node: true, - }, -}; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 79a091fdf1ee..bef25022c47c 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -45,7 +45,6 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "test": "vitest run", - "lint": "eslint ./src ./test", "prepack": "node ./prepack.mjs" }, "dependencies": { @@ -61,10 +60,8 @@ } }, "devDependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 9d33ae3c38f1..21c8ce7ac7ff 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,10 +1,10 @@ +import type { Options } from "@sentry/bundler-plugin-core"; import { createSentryBuildPluginManager, generateReleaseInjectorCode, generateModuleMetadataInjectorCode, isJsFile, shouldSkipCodeInjection, - Options, getDebugIdSnippet, stringToUUID, COMMENT_USE_STRICT_REGEX, @@ -14,7 +14,8 @@ import { replaceBooleanFlagsInCode, CodeInjection, } from "@sentry/bundler-plugin-core"; -import MagicString, { SourceMap } from "magic-string"; +import type { SourceMap } from "magic-string"; +import MagicString from "magic-string"; import type { TransformResult } from "rollup"; import * as path from "node:path"; import { createRequire } from "node:module"; @@ -41,7 +42,7 @@ function getRollupMajorVersion(): string | undefined { const req = createRequire(import.meta.url); const rollup = req("rollup") as { VERSION?: string }; return rollup.VERSION?.split(".")[0]; - } catch (err) { + } catch { // do nothing, we'll just not report a version } diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index 812b82e1d3b7..c0f6dc9c548c 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -1,5 +1,5 @@ import { sentryRollupPlugin } from "../src"; -import { Plugin, SourceMap } from "rollup"; +import type { Plugin, SourceMap } from "rollup"; import { describe, it, expect, test, beforeEach, vi } from "vitest"; test("Rollup plugin should exist", () => { @@ -91,10 +91,7 @@ describe("Hooks", () => { ], [ "inline format with large file", - '"use strict";\n' + - "// comment\n".repeat(10) + - ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};' + - '\nconsole.log("line");\n'.repeat(100), + `"use strict";\n${"// comment\n".repeat(10)};{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};${`\nconsole.log("line");\n`.repeat(100)}`, ], ])("should NOT inject when debug ID already exists (%s)", (_description, code) => { const result = renderChunk(code, { fileName: "bundle.js" }); @@ -103,15 +100,12 @@ describe("Hooks", () => { it("should only check boundaries for performance (not entire file)", () => { // Inline format beyond first 6KB boundary - const codeWithInlineBeyond6KB = - "a".repeat(6100) + - ';{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};'; + const codeWithInlineBeyond6KB = `${"a".repeat(6100)};{try{(function(){var e="undefined"!=typeof window?window:e._sentryDebugIdIdentifier="sentry-dbid-existing-id");})();}catch(e){}};`; expect(renderChunk(codeWithInlineBeyond6KB, { fileName: "bundle.js" })).not.toBeNull(); // Comment format beyond last 500 bytes boundary - const codeWithCommentBeyond500B = - "//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n" + "a".repeat(600); + const codeWithCommentBeyond500B = `//# debugId=f6ccd6f4-7ea0-4854-8384-1c9f8340af81\n${"a".repeat(600)}`; expect(renderChunk(codeWithCommentBeyond500B, { fileName: "bundle.js" })).not.toBeNull(); }); diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js deleted file mode 100644 index ca7345c94a3b..000000000000 --- a/packages/vite-plugin/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - env: { - node: true, - }, -}; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 55852e118d9d..a113eaaaddec 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -44,7 +44,6 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "test": "vitest run", - "lint": "eslint ./src ./test", "prepack": "node ./prepack.mjs" }, "dependencies": { @@ -52,10 +51,8 @@ "@sentry/rollup-plugin": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 5bc373ed0888..c4fc5620a8d8 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -14,7 +14,7 @@ function getViteMajorVersion(): string | undefined { const req = createRequire(import.meta.url); const vite = req("vite") as { version?: string }; return vite.version?.split(".")[0]; - } catch (err) { + } catch { // do nothing, we'll just not report a version } diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js deleted file mode 100644 index ca7345c94a3b..000000000000 --- a/packages/webpack-plugin/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - root: true, - extends: ["@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./test/tsconfig.json"], - }, - env: { - node: true, - }, -}; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index bf973dc040b6..a8c391303041 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -49,18 +49,15 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "test": "vitest run", - "lint": "eslint ./src ./test", "prepack": "node ./prepack.mjs" }, "dependencies": { "@sentry/bundler-plugin-core": "5.3.0" }, "devDependencies": { - "@sentry-internal/eslint-config": "5.3.0", "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", - "eslint": "^8.18.0", "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 42a567bfacf0..8e329568ceac 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,4 +1,5 @@ -import { SentryWebpackPluginOptions, sentryWebpackPluginFactory } from "./webpack4and5"; +import type { SentryWebpackPluginOptions } from "./webpack4and5"; +import { sentryWebpackPluginFactory } from "./webpack4and5"; import * as webpack4or5 from "webpack"; const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPlugin; diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/webpack-plugin/src/webpack4and5.ts index 09f331b6a9df..a89aee6e7570 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/webpack-plugin/src/webpack4and5.ts @@ -1,5 +1,5 @@ +import type { Options } from "@sentry/bundler-plugin-core"; import { - Options, createSentryBuildPluginManager, generateReleaseInjectorCode, generateModuleMetadataInjectorCode, @@ -132,7 +132,7 @@ function getWebpackMajorVersion(): string | undefined { const version = webpack?.version ?? webpack?.default?.version; const webpackMajorVersion = version?.split(".")[0]; // "4" or "5" return webpackMajorVersion; - } catch (error) { + } catch { return undefined; } } diff --git a/packages/webpack-plugin/src/webpack5.ts b/packages/webpack-plugin/src/webpack5.ts index 51f611ef352f..fb77007c1144 100644 --- a/packages/webpack-plugin/src/webpack5.ts +++ b/packages/webpack-plugin/src/webpack5.ts @@ -1,4 +1,5 @@ -import { SentryWebpackPluginOptions, sentryWebpackPluginFactory } from "./webpack4and5"; +import type { SentryWebpackPluginOptions } from "./webpack4and5"; +import { sentryWebpackPluginFactory } from "./webpack4and5"; const createSentryWebpackPlugin = sentryWebpackPluginFactory(); diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index a54c63a6af9e..dbea8a52d444 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import { WebpackPluginInstance } from "webpack"; +import type { WebpackPluginInstance } from "webpack"; import { sentryWebpackPlugin } from "../src"; import { describe, it, expect, test } from "vitest"; diff --git a/packages/webpack-plugin/test/webpack5.test.ts b/packages/webpack-plugin/test/webpack5.test.ts index 179a9e267059..0134d113893e 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -1,4 +1,4 @@ -import { WebpackPluginInstance } from "webpack"; +import type { WebpackPluginInstance } from "webpack"; import { sentryWebpackPlugin } from "../src/index"; import { describe, it, expect, test } from "vitest"; diff --git a/yarn.lock b/yarn.lock index 5c9e779103ba..bdef9143dbcf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -563,57 +563,6 @@ 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" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== - -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.2" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.41.0": - version "8.41.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" - integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== - -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - "@isaacs/balanced-match@^4.0.1": version "4.0.1" resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" @@ -709,27 +658,6 @@ dependencies: "@tybys/wasm-util" "^0.10.1" -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - "@nx/nx-darwin-arm64@22.5.2": version "22.5.2" resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz#beff47093c7d95bfb98631db85a3f680ceda8522" @@ -880,6 +808,131 @@ resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== +"@oxlint-tsgolint/darwin-arm64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-0.16.0.tgz#d03363cdf89bf50faac558a7768e05cd2ab2d507" + integrity sha512-WQt5lGwRPJBw7q2KNR0mSPDAaMmZmVvDlEEti96xLO7ONhyomQc6fBZxxwZ4qTFedjJnrHX94sFelZ4OKzS7UQ== + +"@oxlint-tsgolint/darwin-x64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-0.16.0.tgz#c921618ae28905316c2cc59c3e829ae1a0950655" + integrity sha512-VJo29XOzdkalvCTiE2v6FU3qZlgHaM8x8hUEVJGPU2i5W+FlocPpmn00+Ld2n7Q0pqIjyD5EyvZ5UmoIEJMfqg== + +"@oxlint-tsgolint/linux-arm64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-0.16.0.tgz#9fc38d94e27380a515aa24e1119d696318a8b6aa" + integrity sha512-MPfqRt1+XRHv9oHomcBMQ3KpTE+CSkZz14wUxDQoqTNdUlV0HWdzwIE9q65I3D9YyxEnqpM7j4qtDQ3apqVvbQ== + +"@oxlint-tsgolint/linux-x64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-0.16.0.tgz#366088e3a85b6c295fc5b95d2098ee51a2b67b7f" + integrity sha512-XQSwVUsnwLokMhe1TD6IjgvW5WMTPzOGGkdFDtXWQmlN2YeTw94s/NN0KgDrn2agM1WIgAenEkvnm0u7NgwEyw== + +"@oxlint-tsgolint/win32-arm64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-0.16.0.tgz#9ec46fa4ae6a6b90bdd708af64740812172b8ec8" + integrity sha512-EWdlspQiiFGsP2AiCYdhg5dTYyAlj6y1nRyNI2dQWq4Q/LITFHiSRVPe+7m7K7lcsZCEz2icN/bCeSkZaORqIg== + +"@oxlint-tsgolint/win32-x64@0.16.0": + version "0.16.0" + resolved "https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-0.16.0.tgz#861e5c7df0108212e4b61ef6ae38df22104028a1" + integrity sha512-1ufk8cgktXJuJZHKF63zCHAkaLMwZrEXnZ89H2y6NO85PtOXqu4zbdNl0VBpPP3fCUuUBu9RvNqMFiv0VsbXWA== + +"@oxlint/binding-android-arm-eabi@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.53.0.tgz#c42286b0a96d31fedc7b37183518c9e4054f6330" + integrity sha512-JC89/jAx4d2zhDIbK8MC4L659FN1WiMXMBkNg7b33KXSkYpUgcbf+0nz7+EPRg+VwWiZVfaoFkNHJ7RXYb5Neg== + +"@oxlint/binding-android-arm64@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.53.0.tgz#b3b0906247450cd8a3840ee330e5b7cc97626db2" + integrity sha512-CY+pZfi+uyeU7AwFrEnjsNT+VfxYmKLMuk7bVxArd8f+09hQbJb8f7C7EpvTfNqrCK1J8zZlaYI4LltmEctgbQ== + +"@oxlint/binding-darwin-arm64@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.53.0.tgz#b261b5f5a452dc477c1c576b9c0bc23a305da17d" + integrity sha512-0aqsC4HDQ94oI6kMz64iaOJ1f3bCVArxvaHJGOScBvFz6CcQedXi5b70Xg09CYjKNaHA56dW0QJfoZ/111kz1A== + +"@oxlint/binding-darwin-x64@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.53.0.tgz#3daf9e22dd2e35a24c982ff42fcb701d513075be" + integrity sha512-e+KvuaWtnisyWojO/t5qKDbp2dvVpg+1dl4MGnTb21QpY4+4+9Y1XmZPaztcA2XNvy4BIaXFW+9JH9tMpSBqUg== + +"@oxlint/binding-freebsd-x64@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.53.0.tgz#eee6be65be588fc91a785a099b53275f52f7fd7e" + integrity sha512-hpU0ZHVeblFjmZDfgi9BxhhCpURh0KjoFy5V+Tvp9sg/fRcnMUEfaJrgz+jQfOX4jctlVWrAs1ANs91+5iV+zA== + +"@oxlint/binding-linux-arm-gnueabihf@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.53.0.tgz#0751ed24c4a370a9cbdbfcd5583293f13e79d008" + integrity sha512-ccKxOpw+X4xa2pO+qbTOpxQ2x1+Ag3ViRQMnWt3gHp1LcpNgS1xd6GYc3OvehmHtrXqEV3YGczZ0I1qpBB4/2A== + +"@oxlint/binding-linux-arm-musleabihf@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.53.0.tgz#a795b821695d7af090b9ce036d99d0ce7b43e645" + integrity sha512-UBkBvmzSmlyH2ZObQMDKW/TuyTmUtP/XClPUyU2YLwj0qLopZTZxnDz4VG5d3wz1HQuZXO0o1QqsnQUW1v4a6Q== + +"@oxlint/binding-linux-arm64-gnu@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.53.0.tgz#805fb2ae2d480687a12c942f78069d6ccf9399bc" + integrity sha512-PQJJ1izoH9p61las6rZ0BWOznAhTDMmdUPL2IEBLuXFwhy2mSloYHvRkk39PSYJ1DyG+trqU5Z9ZbtHSGH6plg== + +"@oxlint/binding-linux-arm64-musl@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.53.0.tgz#3664aad7e24841a68525a6220e64a43de1d441c3" + integrity sha512-GXI1o4Thn/rtnRIL38BwrDMwVcUbIHKCsOixIWf/CkU3fCG3MXFzFTtDMt+34ik0Qk452d8kcpksL0w/hUkMZA== + +"@oxlint/binding-linux-ppc64-gnu@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.53.0.tgz#7ffa2e40aae448ee3728f158612f02428489e98c" + integrity sha512-Uahk7IVs2yBamCgeJ3XKpKT9Vh+de0pDKISFKnjEcI3c/w2CFHk1+W6Q6G3KI56HGwE9PWCp6ayhA9whXWkNIQ== + +"@oxlint/binding-linux-riscv64-gnu@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.53.0.tgz#016b145e0abd4a24149558873525b43609edb080" + integrity sha512-sWtcU9UkrKMWsGKdFy8R6jkm9Q0VVG1VCpxVuh0HzRQQi3ENI1Nh5CkpsdfUs2MKRcOoHKbXqTscunuXjhxoxQ== + +"@oxlint/binding-linux-riscv64-musl@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.53.0.tgz#16d7a1cc60f6d85aab3eea1efff84ea1450789f6" + integrity sha512-aXew1+HDvCdExijX/8NBVC854zJwxhKP3l9AHFSHQNo4EanlHtzDMIlIvP3raUkL0vXtFCkTFYezzU5HjstB8A== + +"@oxlint/binding-linux-s390x-gnu@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.53.0.tgz#edbf548da82d4c9ae023a031839425912ac99e81" + integrity sha512-rVpyBSqPGou9sITcsoXqUoGBUH74bxYLYOAGUqN599Zu6BQBlBU9hh3bJQ/20D1xrhhrsbiCpVPvXpLPM5nL1w== + +"@oxlint/binding-linux-x64-gnu@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.53.0.tgz#fa239fe242fd76b45d9a771096215abb82ebd325" + integrity sha512-eOyeQ8qFQ2geXmlWJuXAOaek0hFhbMLlYsU457NMLKDRoC43Xf+eDPZ9Yk0n9jDaGJ5zBl/3Dy8wo41cnIXuLA== + +"@oxlint/binding-linux-x64-musl@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.53.0.tgz#c9f88972e043463ec7fa8f855d6c92a66bc263c0" + integrity sha512-S6rBArW/zD1tob8M9PwKYrRmz+j1ss1+wjbRAJCWKd7TC3JB6noDiA95pIj9zOZVVp04MIzy5qymnYusrEyXzg== + +"@oxlint/binding-openharmony-arm64@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.53.0.tgz#d0df48d35bba716145dbed7529a34ce1829be49e" + integrity sha512-sd/A0Ny5sN0D/MJtlk7w2jGY4bJQou7gToa9WZF7Sj6HTyVzvlzKJWiOHfr4SulVk4ndiFQ8rKmF9rXP0EcF3A== + +"@oxlint/binding-win32-arm64-msvc@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.53.0.tgz#f0a5f856e911112820adbb16240add6adbe28bff" + integrity sha512-QC3q7b51Er/ZurEFcFzc7RpQ/YEoEBLJuCp3WoOzhSHHH/nkUKFy+igOxlj1z3LayhEZPDQQ7sXvv2PM2cdG3Q== + +"@oxlint/binding-win32-ia32-msvc@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.53.0.tgz#f43b0fc12f68620defb373684de91dbca7fbff49" + integrity sha512-3OvLgOqwd705hWHV2i8ni80pilvg6BUgpC2+xtVu++e/q28LKVohGh5J5QYJOrRMfWmxK0M/AUu43vUw62LAKQ== + +"@oxlint/binding-win32-x64-msvc@1.53.0": + version "1.53.0" + resolved "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.53.0.tgz#0e0cc062024a7a58cdaa17a3fa0cefb4a3963a25" + integrity sha512-xTiOkntexCdJytZ7ArIIgl3vGW5ujMM3sJNM7/+iqGAVJagCqjFFWn68HRWRLeyT66c95uR+CeFmQFI6mLQqDw== + "@rolldown/binding-android-arm64@1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz#aefa7afdcabc1269b1933d50cad31013cb697143" @@ -1378,7 +1431,7 @@ dependencies: "@types/node" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.8": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -1417,11 +1470,6 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== - "@types/send@*": version "0.17.1" resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" @@ -1476,90 +1524,6 @@ anymatch "^3.0.0" source-map "^0.6.0" -"@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" - integrity sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/type-utils" "5.59.7" - "@typescript-eslint/utils" "5.59.7" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.13.0": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" - integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== - dependencies: - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/typescript-estree" "5.59.7" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" - integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== - dependencies: - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/visitor-keys" "5.59.7" - -"@typescript-eslint/type-utils@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d" - integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ== - dependencies: - "@typescript-eslint/typescript-estree" "5.59.7" - "@typescript-eslint/utils" "5.59.7" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" - integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== - -"@typescript-eslint/typescript-estree@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" - integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== - dependencies: - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/visitor-keys" "5.59.7" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898" - integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/typescript-estree" "5.59.7" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.59.7": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" - integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== - dependencies: - "@typescript-eslint/types" "5.59.7" - eslint-visitor-keys "^3.3.0" - "@vitest/expect@4.0.18": version "4.0.18" resolved "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz#361510d99fbf20eb814222e4afcb8539d79dc94d" @@ -1782,12 +1746,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +acorn@^8.5.0, acorn@^8.7.1: version "8.8.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -1804,7 +1763,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1876,43 +1835,6 @@ array-flatten@1.1.1: resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - assertion-error@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" @@ -2006,13 +1928,6 @@ brace-expansion@^5.0.2: dependencies: balanced-match "^4.0.2" -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - browserslist@^4.14.5, browserslist@^4.22.2: version "4.22.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" @@ -2057,11 +1972,6 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - caniuse-lite@^1.0.30001580: version "1.0.30001581" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" @@ -2081,7 +1991,7 @@ chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2214,15 +2124,6 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2230,18 +2131,13 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.3.1: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -2277,27 +2173,6 @@ destroy@1.2.0: resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dotenv-expand@~11.0.6: version "11.0.7" resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" @@ -2471,13 +2346,6 @@ es-set-tostringtag@^2.1.0: has-tostringtag "^1.0.2" hasown "^2.0.2" -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2689,43 +2557,7 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.3.0: - version "8.8.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" - integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== - -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" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.29.4: - version "7.32.2" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.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: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2733,85 +2565,11 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== - -eslint@^8.14.0, eslint@^8.18.0: - version "8.41.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" - integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.41.0" - "@humanwhocodes/config-array" "^0.11.8" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -2824,7 +2582,7 @@ estraverse@^4.1.1: resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: +estraverse@^5.2.0: version "5.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -2836,11 +2594,6 @@ estree-walker@^3.0.3: 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" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - etag@~1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -2898,39 +2651,16 @@ express@^4.18.1: utils-merge "1.0.1" vary "~1.1.2" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - fdir@^6.5.0: version "6.5.0" resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" @@ -2943,13 +2673,6 @@ figures@3.2.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - filelist@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -2957,13 +2680,6 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -2985,24 +2701,11 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - flat@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - follow-redirects@^1.0.0: version "1.15.2" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" @@ -3145,20 +2848,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -3190,13 +2879,6 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - globalthis@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -3204,18 +2886,6 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -3233,16 +2903,6 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -3353,11 +3013,6 @@ ieee754@^1.1.13: resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - ignore@^7.0.5: version "7.0.5" resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" @@ -3368,19 +3023,6 @@ immediate@~3.0.5: resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3394,7 +3036,7 @@ inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.3, internal-slot@^1.0.5: +internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -3442,7 +3084,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.9.0: +is-core-module@^2.11.0: version "2.12.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== @@ -3461,23 +3103,11 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -3495,16 +3125,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -3598,7 +3218,7 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^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" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -3611,13 +3231,6 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3638,11 +3251,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -3653,22 +3261,6 @@ jsonc-parser@3.2.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - lie@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -3710,11 +3302,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - log-symbols@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -3723,13 +3310,6 @@ log-symbols@^4.0.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - lru-cache@^11.0.0: version "11.2.6" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58" @@ -3742,13 +3322,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -3786,24 +3359,11 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -3840,7 +3400,7 @@ minimatch@^10.2.2: dependencies: brace-expansion "^5.0.2" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624" integrity sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA== @@ -3894,16 +3454,6 @@ nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -4026,11 +3576,6 @@ nx@22.5.2: "@nx/nx-win32-arm64-msvc" "22.5.2" "@nx/nx-win32-x64-msvc" "22.5.2" -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -4041,7 +3586,7 @@ object-keys@^1.1.1: resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.4: version "4.1.4" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -4051,41 +3596,6 @@ object.assign@^4.1.3, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - 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" @@ -4121,18 +3631,6 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - ora@5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" @@ -4174,6 +3672,43 @@ oxfmt@^0.33.0: "@oxfmt/binding-win32-ia32-msvc" "0.33.0" "@oxfmt/binding-win32-x64-msvc" "0.33.0" +oxlint-tsgolint@0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-0.16.0.tgz#f17cb4cdf792daff212ece3b9a0ba5cf4a74f532" + integrity sha512-4RuJK2jP08XwqtUu+5yhCbxEauCm6tv2MFHKEMsjbosK2+vy5us82oI3VLuHwbNyZG7ekZA26U2LLHnGR4frIA== + optionalDependencies: + "@oxlint-tsgolint/darwin-arm64" "0.16.0" + "@oxlint-tsgolint/darwin-x64" "0.16.0" + "@oxlint-tsgolint/linux-arm64" "0.16.0" + "@oxlint-tsgolint/linux-x64" "0.16.0" + "@oxlint-tsgolint/win32-arm64" "0.16.0" + "@oxlint-tsgolint/win32-x64" "0.16.0" + +oxlint@1.53.0: + version "1.53.0" + resolved "https://registry.npmjs.org/oxlint/-/oxlint-1.53.0.tgz#74b2241c639501b68574550578869055a28f9ee6" + integrity sha512-TLW0PzGbpO1JxUnuy1pIqVPjQUGh4fNfxu5XJbdFIRFVaJ0UFzTjjk/hSFTMRxN6lZub53xL/IwJNEkrh7VtDg== + optionalDependencies: + "@oxlint/binding-android-arm-eabi" "1.53.0" + "@oxlint/binding-android-arm64" "1.53.0" + "@oxlint/binding-darwin-arm64" "1.53.0" + "@oxlint/binding-darwin-x64" "1.53.0" + "@oxlint/binding-freebsd-x64" "1.53.0" + "@oxlint/binding-linux-arm-gnueabihf" "1.53.0" + "@oxlint/binding-linux-arm-musleabihf" "1.53.0" + "@oxlint/binding-linux-arm64-gnu" "1.53.0" + "@oxlint/binding-linux-arm64-musl" "1.53.0" + "@oxlint/binding-linux-ppc64-gnu" "1.53.0" + "@oxlint/binding-linux-riscv64-gnu" "1.53.0" + "@oxlint/binding-linux-riscv64-musl" "1.53.0" + "@oxlint/binding-linux-s390x-gnu" "1.53.0" + "@oxlint/binding-linux-x64-gnu" "1.53.0" + "@oxlint/binding-linux-x64-musl" "1.53.0" + "@oxlint/binding-openharmony-arm64" "1.53.0" + "@oxlint/binding-win32-arm64-msvc" "1.53.0" + "@oxlint/binding-win32-ia32-msvc" "1.53.0" + "@oxlint/binding-win32-x64-msvc" "1.53.0" + p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -4188,13 +3723,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4223,7 +3751,7 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -4253,11 +3781,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -path-type@^4.0.0: - version "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" @@ -4273,7 +3796,7 @@ picocolors@^1.1.0, picocolors@^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.3.1: +picomatch@^2.0.4: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -4311,11 +3834,6 @@ postcss@^8.5.6: 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" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - premove@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz#813a87462dca591946e60ebd97c95092f0743aee" @@ -4335,15 +3853,6 @@ progress@^2.0.3: resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -4374,11 +3883,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4401,11 +3905,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - react-is@^18.3.1: version "18.3.1" resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -4448,11 +3947,6 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - resolve.exports@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" @@ -4467,15 +3961,6 @@ resolve@^1.10.0, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4484,12 +3969,7 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -4568,13 +4048,6 @@ rollup@^4.43.0: "@rollup/rollup-win32-x64-msvc" "4.59.0" fsevents "~2.3.2" -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -4613,13 +4086,6 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7: - version "7.5.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" - integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== - dependencies: - lru-cache "^6.0.0" - semver@^7.6.3: version "7.7.4" resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" @@ -4673,23 +4139,11 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - shell-quote@^1.6.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" @@ -4714,11 +4168,6 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -4802,20 +4251,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - string.prototype.padend@^3.0.0: version "3.1.4" resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" @@ -4871,11 +4306,6 @@ strip-bom@^3.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4939,11 +4369,6 @@ terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - tinybench@^2.9.0: version "2.9.0" resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" @@ -4984,13 +4409,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -5015,7 +4433,7 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -5025,25 +4443,6 @@ tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -5274,7 +4673,7 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -5289,11 +4688,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -5318,11 +4712,6 @@ yallist@^3.0.2: resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^2.6.0: version "2.8.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" From 1099a5fb048595e45a14496f67b55bbb8a950fb9 Mon Sep 17 00:00:00 2001 From: Daniel Szoke <7881302+szokeasaurusrex@users.noreply.github.com> Date: Wed, 27 May 2026 03:05:40 +0200 Subject: [PATCH 635/640] chore(sentry-cli): Upgrade to 2.58.6 (#936) Upgrade sentry-cli to [2.58.6](https://github.com/getsentry/sentry-cli/releases/tag/2.58.6), which includes security fixes. --- packages/bundler-plugin-core/package.json | 6 +- yarn.lock | 104 +++++++++++----------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 637a65d94bc9..a742b3599bac 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -54,7 +54,7 @@ "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "5.3.0", - "@sentry/cli": "^2.58.5", + "@sentry/cli": "^2.58.6", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^13.0.6", @@ -65,9 +65,9 @@ "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", "@types/node": "^18.6.3", - "vitest": "^4.0.0", "premove": "^4.0.0", - "rolldown": "^1.0.0" + "rolldown": "^1.0.0", + "vitest": "^4.0.0" }, "volta": { "extends": "../../package.json" diff --git a/yarn.lock b/yarn.lock index bdef9143dbcf..7bda235a7e05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1162,50 +1162,50 @@ resolved "https://registry.npmjs.org/@sentry-internal/typescript/-/typescript-10.53.1.tgz#216b3e3ec0d5aa7ef3e7055ea50d6371d9786cce" integrity sha512-7ncY4Ww9MsTf5lsX9qAUaiNeQdKNBeZm7rtFze0UeU8fTLxOKx9ink4jCFa1xB/sztIR1pq/rGmnBs7evvn+aw== -"@sentry/cli-darwin@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.5.tgz#ea9c4ab41161f15c636d0d2dcf126202cb49a588" - integrity sha512-lYrNzenZFJftfwSya7gwrHGxtE+Kob/e1sr9lmHMFOd4utDlmq0XFDllmdZAMf21fxcPRI1GL28ejZ3bId01fQ== - -"@sentry/cli-linux-arm64@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.5.tgz#38e866ee11ca88f6fb2164a6afd6cff4156b33d4" - integrity sha512-/4gywFeBqRB6tR/iGMRAJ3HRqY6Z7Yp4l8ZCbl0TDLAfHNxu7schEw4tSnm2/Hh9eNMiOVy4z58uzAWlZXAYBQ== - -"@sentry/cli-linux-arm@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.5.tgz#12da36dd10166c09275b8a91366ad0906a8482fd" - integrity sha512-KtHweSIomYL4WVDrBrYSYJricKAAzxUgX86kc6OnlikbyOhoK6Fy8Vs6vwd52P6dvWPjgrMpUYjW2M5pYXQDUw== - -"@sentry/cli-linux-i686@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.5.tgz#9434360fb67fee3028886de2b143fbed93c627ac" - integrity sha512-G7261dkmyxqlMdyvyP06b+RTIVzp1gZNgglj5UksxSouSUqRd/46W/2pQeOMPhloDYo9yLtCN2YFb3Mw4aUsWw== - -"@sentry/cli-linux-x64@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.5.tgz#405d1740dd2774d7f139e217f628d11e7446fd04" - integrity sha512-rP04494RSmt86xChkQ+ecBNRYSPbyXc4u0IA7R7N1pSLCyO74e5w5Al+LnAq35cMfVbZgz5Sm0iGLjyiUu4I1g== - -"@sentry/cli-win32-arm64@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.5.tgz#0807783f9fa67b32703154533c31c09355149d3c" - integrity sha512-AOJ2nCXlQL1KBaCzv38m3i2VmSHNurUpm7xVKd6yAHX+ZoVBI8VT0EgvwmtJR2TY2N2hNCC7UrgRmdUsQ152bA== - -"@sentry/cli-win32-i686@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.5.tgz#79586eab70341ebde3bbcb0be6d436da3840ef64" - integrity sha512-EsuboLSOnlrN7MMPJ1eFvfMDm+BnzOaSWl8eYhNo8W/BIrmNgpRUdBwnWn9Q2UOjJj5ZopukmsiMYtU/D7ml9g== - -"@sentry/cli-win32-x64@2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.5.tgz#4937c0821abfd346da50a3cf1ecbd752f75f8ef4" - integrity sha512-IZf+XIMiQwj+5NzqbOQfywlOitmCV424Vtf9c+ep61AaVScUFD1TSrQbOcJJv5xGxhlxNOMNgMeZhdexdzrKZg== - -"@sentry/cli@^2.58.5": - version "2.58.5" - resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.5.tgz#160a89235ba2add4c198f666d8c14547a1459ae8" - integrity sha512-tavJ7yGUZV+z3Ct2/ZB6mg339i08sAk6HDkgqmSRuQEu2iLS5sl9HIvuXfM6xjv8fwlgFOSy++WNABNAcGHUbg== +"@sentry/cli-darwin@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.6.tgz#38fd82751014b287e58e99ef948d01ca1e09f41d" + integrity sha512-udAVvcyfNa0R+95GvPz/+43/N3TC0TYKdkQ7D7jhPSzbcMc7l2fxRNN5yB3UpCA5fWFnW4toeaqwDBhb/Wh3LA== + +"@sentry/cli-linux-arm64@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.6.tgz#6e660e457af7928c1be8191c77646801fe3fa6a0" + integrity sha512-q8mEcNNmeXMy5i+jWT30TVpH7LcP4HD21CD5XRSPAd/a912HF6EpK0ybf/1USO14WOhoXbAGi9txwaWabSe33g== + +"@sentry/cli-linux-arm@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.6.tgz#41256912d636193d2a67985b6c9b3efbbe6a47c9" + integrity sha512-pD0LAt5PcUzAinBwvDqc66x9+2CabHEv486yP0gRjWO7SakbaxmfVq/EXd8VLq/Tzi39LAu422UYK1lpW3MILw== + +"@sentry/cli-linux-i686@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.6.tgz#278e7696d82e51dfbfd7d82ec125dda65d249a43" + integrity sha512-q8vNJi1eOV/4vxAFWBsEwLHoSYapaZHIf4j76KJGJXFKTkEbsjCOOsKbwUIBTQQhRgV4DFWh3ryfsPS/que4Kg== + +"@sentry/cli-linux-x64@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.6.tgz#57860d46ac3397c33bbcc6224ac19b7de2502c18" + integrity sha512-DZu956Mhi3ZRjTBe1WdbGV46ldVbA8d2rgp/fh51GsI25zjBHah4wZnPTSzpc+YqxU6pJpg579B/r3jrIK530Q== + +"@sentry/cli-win32-arm64@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.6.tgz#9335a5d2411381dca1d6b11fdd71a4342b375fc3" + integrity sha512-nj0Ff/kmAB73EPDhR8B4O9r+NUHK5GkPCkGWC+kXVemqAJWL5jcJ5KdxG0l/S0z6RoEoltID8/43/B+TaMlT7A== + +"@sentry/cli-win32-i686@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.6.tgz#2afd19536ef111af43538ccc5f9c8c0b179d930e" + integrity sha512-WNZiDzPbgsEMQWq4avsQ391v/xWKJDIWWWo9GYl+N/w5qcYKkoDW7wQG7T9FasI6ENn68phChTOAPXXxbfAdOg== + +"@sentry/cli-win32-x64@2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.6.tgz#8d0e70b5660cc82a7763a4bbe9346cf18e49e07e" + integrity sha512-R35WJ17oF4D2eqI1DR2sQQqr0fjRTt5xoP16WrTu91XM2lndRMFsnjh+/GttbxapLCBNlrjzia99MJ0PZHZpgA== + +"@sentry/cli@^2.58.6": + version "2.58.6" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.6.tgz#72edb4977d822757511b279e006b00f139e24945" + integrity sha512-baBcNPLLfUi9WuL+Tpri9BFaAdvugZIKelC5X0tt0Zdy+K0K+PCVSrnNmwMWU/HyaF/SEv6b6UHnXIdqanBlcg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -1213,14 +1213,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.58.5" - "@sentry/cli-linux-arm" "2.58.5" - "@sentry/cli-linux-arm64" "2.58.5" - "@sentry/cli-linux-i686" "2.58.5" - "@sentry/cli-linux-x64" "2.58.5" - "@sentry/cli-win32-arm64" "2.58.5" - "@sentry/cli-win32-i686" "2.58.5" - "@sentry/cli-win32-x64" "2.58.5" + "@sentry/cli-darwin" "2.58.6" + "@sentry/cli-linux-arm" "2.58.6" + "@sentry/cli-linux-arm64" "2.58.6" + "@sentry/cli-linux-i686" "2.58.6" + "@sentry/cli-linux-x64" "2.58.6" + "@sentry/cli-win32-arm64" "2.58.6" + "@sentry/cli-win32-i686" "2.58.6" + "@sentry/cli-win32-x64" "2.58.6" "@sentry/core@7.50.0": version "7.50.0" From c63ec4d4329583f4d6a32c4678adb96bef824b54 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 3 Jun 2026 19:07:05 +0100 Subject: [PATCH 636/640] feat: Update Sentry SDK for telemetry (#937) --- packages/bundler-plugin-core/package.json | 5 +- packages/bundler-plugin-core/src/index.ts | 4 +- .../src/sentry/telemetry.ts | 2 +- .../fixtures/esbuild/telemetry.test.ts | 6 +- .../fixtures/rolldown/telemetry.test.ts | 6 +- .../fixtures/rollup3/telemetry.test.ts | 6 +- .../fixtures/rollup4/telemetry.test.ts | 6 +- .../integration-tests-next/fixtures/utils.ts | 3 +- .../fixtures/vite4/telemetry.test.ts | 6 +- .../fixtures/vite7/telemetry.test.ts | 6 +- .../fixtures/vite8/telemetry.test.ts | 6 +- .../fixtures/webpack5/telemetry.test.ts | 6 +- yarn.lock | 180 +++--------------- 13 files changed, 61 insertions(+), 181 deletions(-) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index a742b3599bac..f511ed1bf9f9 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -61,9 +61,8 @@ "magic-string": "~0.30.8" }, "devDependencies": { - "@sentry/core": "8.30.0", - "@sentry/types": "8.30.0", - "@sentry/utils": "8.30.0", + "@sentry/core": "10.56.0", + "@sentry/types": "10.56.0", "@types/node": "^18.6.3", "premove": "^4.0.0", "rolldown": "^1.0.0", diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index be30893c5cb8..a42ec5abf1ce 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -3,7 +3,7 @@ import componentNameAnnotatePlugin, { experimentalComponentNameAnnotatePlugin, } from "@sentry/babel-plugin-component-annotate"; import SentryCli from "@sentry/cli"; -import { logger } from "@sentry/utils"; +import { debug } from "@sentry/core"; import * as fs from "fs"; import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; @@ -118,7 +118,7 @@ export function createComponentNameAnnotateHooks( map: result?.map, }; } catch (e) { - logger.error(`Failed to apply react annotate plugin`, e); + debug.error(`Failed to apply react annotate plugin`, e); } return { code }; diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugin-core/src/sentry/telemetry.ts index 7f2ee1ca46c7..d0ed98369f3a 100644 --- a/packages/bundler-plugin-core/src/sentry/telemetry.ts +++ b/packages/bundler-plugin-core/src/sentry/telemetry.ts @@ -5,7 +5,7 @@ import { applySdkMetadata, ServerRuntimeClient } from "@sentry/core"; import type { NormalizedOptions } from "../options-mapping"; import { SENTRY_SAAS_URL } from "../options-mapping"; import { Scope } from "@sentry/core"; -import { createStackParser, nodeStackLineParser } from "@sentry/utils"; +import { createStackParser, nodeStackLineParser } from "@sentry/core"; import { makeOptionallyEnabledNodeTransport } from "./transports"; import { getProjects } from "../utils"; import { LIB_VERSION } from "../version"; diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts index cdd521796dbc..d70b593257da 100644 --- a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts @@ -5,9 +5,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"esbuild","bundler-major-version":"28"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"esbuild","bundler-major-version":"28"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", "telemetry.js": "(() => { // _sentry-injection-stub diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts index f1cc4370048c..1e5c06d820ee 100644 --- a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts @@ -17,9 +17,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { console.log("hello world"); //#endregion ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts index 3f95d11e52ae..2a108cc61461 100644 --- a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts @@ -8,9 +8,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { "basic.js": "// eslint-disable-next-line no-console !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts index 667b55a13d49..bb27238e08b9 100644 --- a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts @@ -8,9 +8,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { "basic.js": "// eslint-disable-next-line no-console !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"CURRENT_SHA"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"4"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"4"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/utils.ts b/packages/integration-tests-next/fixtures/utils.ts index f3d8615f6f3c..dc19b9bf49dc 100644 --- a/packages/integration-tests-next/fixtures/utils.ts +++ b/packages/integration-tests-next/fixtures/utils.ts @@ -81,7 +81,8 @@ export function readAllFiles( .replace(/"duration":[\d.]+/g, '"duration":DURATION') .replace(/"start_timestamp":[\d.]+/g, '"start_timestamp":START_TIMESTAMP') .replace(/"timestamp":[\d.]+/g, '"timestamp":TIMESTAMP') - .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"'); + .replace(/"release":"[\d.]+"/g, '"release":"PLUGIN_VERSION"') + .replace(/"sample_rand":"\d.?\d*"/g, '"sample_rand":"SAMPLE_RAND"'); } else { // Normalize Windows line endings for cross-platform snapshots contents = contents.replace(/\r\n/g, "\n"); diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts index 4b74c39f58f1..560fd499147c 100644 --- a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts @@ -16,9 +16,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { }(); console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"4"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"4"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts index f90b8e9567c1..196ff3ab6447 100644 --- a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts @@ -16,9 +16,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { })(); console.log("hello world"); ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"7"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"7"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts index 6fb42355a436..31b799241081 100644 --- a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts @@ -17,9 +17,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { console.log("hello world"); //#endregion ", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"8"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"vite","bundler-major-version":"8"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts index fcd6e517307d..4644423c0bad 100644 --- a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts +++ b/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts @@ -13,9 +13,9 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { /******/ })() ;", - "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","sample_rate":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"webpack","bundler-major-version":"5"},"sdk":{"name":"sentry.javascript.node","version":"8.30.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"8.30.0"}]}}]]], - [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"8.30.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"webpack","bundler-major-version":"5"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } `); diff --git a/yarn.lock b/yarn.lock index 7bda235a7e05..9db5b31f8712 100644 --- a/yarn.lock +++ b/yarn.lock @@ -274,7 +274,7 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@emnapi/core@1.10.0": +"@emnapi/core@1.10.0", "@emnapi/core@^1.1.0": version "1.10.0" resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== @@ -282,28 +282,13 @@ "@emnapi/wasi-threads" "1.2.1" tslib "^2.4.0" -"@emnapi/core@^1.1.0": - version "1.8.1" - resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" - integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== - dependencies: - "@emnapi/wasi-threads" "1.1.0" - tslib "^2.4.0" - -"@emnapi/runtime@1.10.0": +"@emnapi/runtime@1.10.0", "@emnapi/runtime@^1.1.0": version "1.10.0" resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== dependencies: tslib "^2.4.0" -"@emnapi/runtime@^1.1.0": - version "1.8.1" - resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" - integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== - dependencies: - tslib "^2.4.0" - "@emnapi/wasi-threads@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" @@ -624,12 +609,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - 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.10", "@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== @@ -1222,6 +1202,11 @@ "@sentry/cli-win32-i686" "2.58.6" "@sentry/cli-win32-x64" "2.58.6" +"@sentry/core@10.56.0": + version "10.56.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-10.56.0.tgz#61159a5879d7937b6509cf4e6a680b991ef82001" + integrity sha512-L+u1dIz5SANrmST5jhIwETtt4apILgKrylv12X4hKJU0PvZl+NorjeV/ty3MwzpKQPg6b6q6qMOSLc1rLpy3iQ== + "@sentry/core@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" @@ -1231,14 +1216,6 @@ "@sentry/utils" "7.50.0" tslib "^1.9.3" -"@sentry/core@8.30.0": - version "8.30.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-8.30.0.tgz#f929e42e9a537bfa3eb6024082714e9ab98d822b" - integrity sha512-CJ/FuWLw0QEKGKXGL/nm9eaOdajEcmPekLuHAuOCxID7N07R9l9laz3vFbAkUZ97GGDv3sYrJZgywfY3Moropg== - dependencies: - "@sentry/types" "8.30.0" - "@sentry/utils" "8.30.0" - "@sentry/integrations@7.50": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" @@ -1263,16 +1240,18 @@ lru_map "^0.3.3" tslib "^1.9.3" +"@sentry/types@10.56.0": + version "10.56.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-10.56.0.tgz#4add2d3cfcb294e291e6a63bd18a1f26d216cf1b" + integrity sha512-I9JtS/EtzpV5o9MwLNOKBCTmGU61HRT3E9MS9k68cKxAwexNH2zFW0E9EnQYLDhANXsvHA6moGA+nqt2rbD92Q== + dependencies: + "@sentry/core" "10.56.0" + "@sentry/types@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== -"@sentry/types@8.30.0": - version "8.30.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-8.30.0.tgz#5f5011f5b16bafd30a039ca5e8c337e948c703fb" - integrity sha512-kgWW2BCjBmVlSQRG32GonHEVyeDbys74xf9mLPvynwHTgw3+NUlNAlEdu05xnb2ow4bCTHfbkS5G1zRgyv5k4Q== - "@sentry/utils@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" @@ -1281,13 +1260,6 @@ "@sentry/types" "7.50.0" tslib "^1.9.3" -"@sentry/utils@8.30.0": - version "8.30.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-8.30.0.tgz#2343dd8593ea83890b3e0d792ed3fa257955a26b" - integrity sha512-wZxU2HWlzsnu8214Xy7S7cRIuD6h8Z5DnnkojJfX0i0NLooepZQk2824el1Q13AakLb7/S8CHSHXOMnCtoSduw== - dependencies: - "@sentry/types" "8.30.0" - "@sinclair/typebox@^0.34.0": version "0.34.48" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz#75b0ead87e59e1adbd6dccdc42bad4fddee73b59" @@ -1389,12 +1361,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== - -"@types/estree@1.0.8": +"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": version "1.0.8" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -2180,12 +2147,7 @@ dotenv-expand@~11.0.6: dependencies: dotenv "^16.4.5" -dotenv@^16.3.1: - version "16.3.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - -dotenv@^16.4.5: +dotenv@^16.3.1, dotenv@^16.4.5: version "16.6.1" resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== @@ -2327,16 +2289,7 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" -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" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-set-tostringtag@^2.1.0: +es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== @@ -2706,12 +2659,7 @@ flat@^5.0.2: resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -follow-redirects@^1.15.11: +follow-redirects@^1.0.0, follow-redirects@^1.15.11: version "1.15.11" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== @@ -2761,22 +2709,12 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "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: +fsevents@~2.3.2, 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" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-bind@^1.1.2: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -2806,17 +2744,7 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-proto "^1.0.1" - has-symbols "^1.0.3" - -get-intrinsic@^1.2.6: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.6: version "1.3.0" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -2886,14 +2814,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -gopd@^1.2.0: +gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== @@ -2930,24 +2851,12 @@ has-proto@^1.0.1: resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-symbols@^1.1.0: +has-symbols@^1.0.2, has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-tostringtag@^1.0.2: +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== @@ -3419,12 +3328,7 @@ minimist@^1.2.6: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minipass@^7.1.3: +minipass@^7.1.2, minipass@^7.1.3: version "7.1.3" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== @@ -3444,16 +3348,11 @@ ms@2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@^3.3.11: +nanoid@^3.3.11, nanoid@^3.3.6: 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" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== - negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -3786,12 +3685,7 @@ pathe@^2.0.3: resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picocolors@^1.1.0, picocolors@^1.1.1: +picocolors@^1.0.0, picocolors@^1.1.0, 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== @@ -3816,16 +3710,7 @@ pify@^3.0.0: resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -postcss@^8.4.14: - version "8.4.23" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.5.6: +postcss@^8.4.14, 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== @@ -4168,12 +4053,7 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -source-map-js@^1.0.2: - version "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: +source-map-js@^1.0.2, 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== From 105f25a44e229739457e4b3fb214aede7b93b1bf Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 4 Jun 2026 21:07:50 +0100 Subject: [PATCH 637/640] feat: Add `@sentry/bundler-plugins` core package (#938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consolidate all bundler plugin code into a single new `@sentry/bundler-plugins` package with subpath exports (`/rollup`, `/webpack`, `/vite`, etc.). Code was moved using `git mv` to preserve history. The existing bundler-specific packages (`@sentry/rollup-plugin`, etc.) become thin stubs that re-export from `@sentry/bundler-plugins`. This makes it straightforward to: - Add new bundler support (e.g. rolldown) without publishing a new package - Move all plugin code in the JS monorepo as a single dependency rather than 6 - Keep bundler-specific packages at v5, avoiding unnecessary major version bumps for users Individual packages can eventually be deprecated but there's no urgency — integration tests still target them and they remain fully functional. --- .gitignore | 2 +- .oxfmtrc.json | 6 +- package.json | 1 + .../package.json | 10 +- .../rollup.config.mjs | 4 +- .../src/index.ts | 894 +----------------- packages/bundler-plugin-core/package.json | 20 +- .../bundler-plugin-core/rollup.config.mjs | 4 +- packages/bundler-plugin-core/src/index.ts | 146 +-- packages/bundler-plugins/.gitignore | 1 + packages/bundler-plugins/package.json | 127 +++ packages/bundler-plugins/rollup.config.mjs | 60 ++ .../sentry-esbuild-debugid-injection-file.js | 20 + .../sentry-release-injection-file.js | 4 + .../src/babel-plugin}/constants.ts | 0 .../src/babel-plugin}/experimental.ts | 0 .../bundler-plugins/src/babel-plugin/index.ts | 890 +++++++++++++++++ .../src/core}/build-plugin-manager.ts | 0 .../src/core}/debug-id-upload.ts | 0 .../src => bundler-plugins/src/core}/glob.ts | 0 packages/bundler-plugins/src/core/index.ts | 145 +++ .../src/core}/logger.ts | 0 .../src/core}/options-mapping.ts | 0 .../src/core}/sentry/telemetry.ts | 0 .../src/core}/sentry/transports.ts | 0 .../src => bundler-plugins/src/core}/types.ts | 0 .../src => bundler-plugins/src/core}/utils.ts | 0 packages/bundler-plugins/src/esbuild/index.ts | 312 ++++++ packages/bundler-plugins/src/rollup/index.ts | 265 ++++++ packages/bundler-plugins/src/vite/index.ts | 34 + .../component-annotation-transform.ts | 0 packages/bundler-plugins/src/webpack/index.ts | 18 + .../src/webpack}/webpack4and5.ts | 36 +- .../bundler-plugins/src/webpack/webpack5.ts | 12 + .../__snapshots__/test-plugin.test.ts.snap | 0 .../test/babel-plugin}/experimental.test.ts | 2 +- .../test/babel-plugin}/sentry-label.test.ts | 2 +- .../test/babel-plugin}/test-plugin.test.ts | 2 +- .../core}/__snapshots__/utils.test.ts.snap | 0 .../test/core}/build-plugin-manager.test.ts | 14 +- .../test/core}/debug-id-upload.test.ts | 6 +- .../deeply/nested/index.js | 0 .../deeply/nested/package.json | 0 .../deeply-nested-package/package.json | 0 .../deeply/nested/index.js | 0 .../deeply/nested/package.json | 0 .../nested-error-package/package.json | 0 .../nested-package/deeply/nested/index.js | 0 .../nested-package/deeply/nested/package.json | 0 .../fixtures/nested-package/package.json | 0 .../no-valid-package/deeply/nested/index.js | 0 .../deeply/nested/package.json | 0 .../adjacent-sourcemap/index.js | 0 .../adjacent-sourcemap/index.js.map | 0 .../separate-directory/bundles/index.js | 0 .../sourcemaps/index.js.map | 0 .../test/core}/glob.test.ts | 2 +- .../test/core}/index.test.ts | 4 +- .../test/core}/option-mappings.test.ts | 6 +- .../test/core}/sentry/logger.test.ts | 2 +- .../core}/sentry/resolve-source-maps.test.ts | 4 +- .../test/core}/sentry/telemetry.test.ts | 9 +- .../test/core}/utils.test.ts | 4 +- .../test/esbuild}/public-api.test.ts | 2 +- .../__snapshots__/public-api.test.ts.snap | 0 .../test/rollup}/public-api.test.ts | 2 +- packages/bundler-plugins/test/tsconfig.json | 8 + .../test/vite}/public-api.test.ts | 2 +- .../test/webpack}/public-api.test.ts | 2 +- .../test/webpack}/webpack5.test.ts | 2 +- packages/bundler-plugins/tsconfig.json | 8 + packages/bundler-plugins/types.tsconfig.json | 11 + packages/esbuild-plugin/package.json | 4 +- packages/esbuild-plugin/rollup.config.mjs | 4 +- packages/esbuild-plugin/src/index.ts | 314 +----- .../fixtures/esbuild/package.json | 1 + .../fixtures/rolldown/package.json | 1 + .../fixtures/rollup3/package.json | 1 + .../fixtures/rollup4/package.json | 1 + .../fixtures/vite4/package.json | 1 + .../fixtures/vite6/package.json | 1 + .../fixtures/vite7/package.json | 1 + .../fixtures/vite8/package.json | 1 + .../fixtures/webpack5/package.json | 1 + packages/rollup-plugin/package.json | 5 +- packages/rollup-plugin/rollup.config.mjs | 4 +- packages/rollup-plugin/src/index.ts | 266 +----- packages/vite-plugin/package.json | 5 +- packages/vite-plugin/rollup.config.mjs | 4 +- packages/vite-plugin/src/index.ts | 35 +- packages/webpack-plugin/package.json | 4 +- packages/webpack-plugin/rollup.config.mjs | 7 +- packages/webpack-plugin/src/index.ts | 19 +- packages/webpack-plugin/src/webpack5.ts | 13 +- yarn.lock | 61 +- 95 files changed, 2047 insertions(+), 1812 deletions(-) create mode 100644 packages/bundler-plugins/.gitignore create mode 100644 packages/bundler-plugins/package.json create mode 100644 packages/bundler-plugins/rollup.config.mjs create mode 100644 packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js create mode 100644 packages/bundler-plugins/sentry-release-injection-file.js rename packages/{babel-plugin-component-annotate/src => bundler-plugins/src/babel-plugin}/constants.ts (100%) rename packages/{babel-plugin-component-annotate/src => bundler-plugins/src/babel-plugin}/experimental.ts (100%) create mode 100644 packages/bundler-plugins/src/babel-plugin/index.ts rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/build-plugin-manager.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/debug-id-upload.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/glob.ts (100%) create mode 100644 packages/bundler-plugins/src/core/index.ts rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/logger.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/options-mapping.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/sentry/telemetry.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/sentry/transports.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/types.ts (100%) rename packages/{bundler-plugin-core/src => bundler-plugins/src/core}/utils.ts (100%) create mode 100644 packages/bundler-plugins/src/esbuild/index.ts create mode 100644 packages/bundler-plugins/src/rollup/index.ts create mode 100644 packages/bundler-plugins/src/vite/index.ts rename packages/{webpack-plugin/src => bundler-plugins/src/webpack}/component-annotation-transform.ts (100%) create mode 100644 packages/bundler-plugins/src/webpack/index.ts rename packages/{webpack-plugin/src => bundler-plugins/src/webpack}/webpack4and5.ts (90%) create mode 100644 packages/bundler-plugins/src/webpack/webpack5.ts rename packages/{babel-plugin-component-annotate/test => bundler-plugins/test/babel-plugin}/__snapshots__/test-plugin.test.ts.snap (100%) rename packages/{babel-plugin-component-annotate/test => bundler-plugins/test/babel-plugin}/experimental.test.ts (99%) rename packages/{babel-plugin-component-annotate/test => bundler-plugins/test/babel-plugin}/sentry-label.test.ts (99%) rename packages/{babel-plugin-component-annotate/test => bundler-plugins/test/babel-plugin}/test-plugin.test.ts (99%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/__snapshots__/utils.test.ts.snap (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/build-plugin-manager.test.ts (98%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/debug-id-upload.test.ts (91%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/deeply-nested-package/deeply/nested/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/deeply-nested-package/deeply/nested/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/deeply-nested-package/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-error-package/deeply/nested/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-error-package/deeply/nested/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-error-package/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-package/deeply/nested/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-package/deeply/nested/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/nested-package/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/no-valid-package/deeply/nested/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/no-valid-package/deeply/nested/package.json (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/resolve-source-maps/adjacent-sourcemap/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/resolve-source-maps/separate-directory/bundles/index.js (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map (100%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/glob.test.ts (99%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/index.test.ts (97%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/option-mappings.test.ts (98%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/sentry/logger.test.ts (98%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/sentry/resolve-source-maps.test.ts (97%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/sentry/telemetry.test.ts (94%) rename packages/{bundler-plugin-core/test => bundler-plugins/test/core}/utils.test.ts (98%) rename packages/{esbuild-plugin/test => bundler-plugins/test/esbuild}/public-api.test.ts (91%) rename packages/{rollup-plugin/test => bundler-plugins/test/rollup}/__snapshots__/public-api.test.ts.snap (100%) rename packages/{rollup-plugin/test => bundler-plugins/test/rollup}/public-api.test.ts (99%) create mode 100644 packages/bundler-plugins/test/tsconfig.json rename packages/{vite-plugin/test => bundler-plugins/test/vite}/public-api.test.ts (95%) rename packages/{webpack-plugin/test => bundler-plugins/test/webpack}/public-api.test.ts (91%) rename packages/{webpack-plugin/test => bundler-plugins/test/webpack}/webpack5.test.ts (91%) create mode 100644 packages/bundler-plugins/tsconfig.json create mode 100644 packages/bundler-plugins/types.tsconfig.json diff --git a/.gitignore b/.gitignore index 47a8abf576ef..1126d8eb0b30 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,5 @@ yarn-error.log packages/**/yarn.lock .DS_Store -packages/bundler-plugin-core/src/version.ts +packages/bundler-plugins/src/core/version.ts packages/integration-tests-next/fixtures/**/pnpm-lock.yaml diff --git a/.oxfmtrc.json b/.oxfmtrc.json index ba18e1d9ddab..b34fe26467c3 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -3,5 +3,9 @@ "printWidth": 100, "experimentalSortPackageJson": false, "trailingComma": "es5", - "ignorePatterns": ["packages/bundler-plugin-core/test/fixtures", ".nxcache"] + "ignorePatterns": [ + "packages/bundler-plugin-core/test/fixtures", + "packages/bundler-plugins/test/core/fixtures", + ".nxcache" + ] } diff --git a/package.json b/package.json index d9bac5049dde..8d03e5241654 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "workspaces": [ "packages/babel-plugin-component-annotate", "packages/bundler-plugin-core", + "packages/bundler-plugins", "packages/dev-utils", "packages/esbuild-plugin", "packages/playground", diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index be6f555fcff0..6506229f8ed4 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -45,15 +45,13 @@ "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "test": "vitest run" + "clean:deps": "premove node_modules" + }, + "dependencies": { + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { - "@babel/core": "7.18.5", - "@types/babel__core": "^7.20.5", - "@babel/preset-react": "^7.23.3", "@types/node": "^18.6.3", - "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" }, diff --git a/packages/babel-plugin-component-annotate/rollup.config.mjs b/packages/babel-plugin-component-annotate/rollup.config.mjs index 656ebdad6c58..4e04614e760f 100644 --- a/packages/babel-plugin-component-annotate/rollup.config.mjs +++ b/packages/babel-plugin-component-annotate/rollup.config.mjs @@ -1,9 +1,11 @@ import packageJson from "./package.json" with { type: "json" }; +const deps = Object.keys(packageJson.dependencies ?? {}); + export default { platform: "node", input: ["src/index.ts"], - external: Object.keys(packageJson.dependencies ?? []), + external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), output: [ { file: packageJson.module, diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts index 13773f43bf55..e39709851587 100644 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ b/packages/babel-plugin-component-annotate/src/index.ts @@ -1,890 +1,4 @@ -/* oxlint-disable max-lines */ -/** - * MIT License - * - * Copyright (c) 2020 Engineering at FullStory - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -/** - * The following code is based on the FullStory Babel plugin, but has been modified to work - * with Sentry products: - * - * - Added `sentry` to data properties, i.e `data-sentry-component` - * - Converted to TypeScript - * - Code cleanups - */ - -import type * as Babel from "@babel/core"; -import type { PluginObj, PluginPass } from "@babel/core"; - -import { DEFAULT_IGNORED_ELEMENTS, KNOWN_INCOMPATIBLE_PLUGINS } from "./constants"; - -const webComponentName = "data-sentry-component"; -const webElementName = "data-sentry-element"; -const webSourceFileName = "data-sentry-source-file"; - -const nativeComponentName = "dataSentryComponent"; -const nativeElementName = "dataSentryElement"; -const nativeSourceFileName = "dataSentrySourceFile"; - -const SENTRY_LABEL_ATTRIBUTE = "sentry-label"; -const MAX_LABEL_LENGTH = 64; -const DEFAULT_TEXT_COMPONENT_NAMES = ["Text", "text"]; -const MAX_TEXT_SEARCH_DEPTH = 3; - -interface AutoInjectSentryLabelOpts { - textComponentNames?: string[]; -} - -interface AnnotationOpts { - native?: boolean; - "annotate-fragments"?: boolean; - ignoredComponents?: string[]; - /** @hidden */ - autoInjectSentryLabel?: boolean | AutoInjectSentryLabelOpts; -} - -interface FragmentContext { - fragmentAliases: Set; - reactNamespaceAliases: Set; -} - -interface AnnotationPluginPass extends PluginPass { - opts: AnnotationOpts; - sentryFragmentContext?: FragmentContext; -} - -type AnnotationPlugin = PluginObj; - -// Shared context object for all JSX processing functions -interface JSXProcessingContext { - /** Whether to annotate React fragments */ - annotateFragments: boolean; - /** Babel types object */ - t: typeof Babel.types; - /** Name of the React component */ - componentName: string; - /** Source file name (optional) */ - sourceFileName?: string; - /** Array of attribute names [component, element, sourceFile] */ - attributeNames: string[]; - /** Array of component names to ignore */ - ignoredComponents: string[]; - /** Fragment context for identifying React fragments */ - fragmentContext?: FragmentContext; - /** Whether to auto-inject sentry-label from static text children */ - autoInjectSentryLabel: boolean; - /** Component names whose JSXText children are considered text content */ - textComponentNames: string[]; -} - -export { experimentalComponentNameAnnotatePlugin } from "./experimental"; - -// We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier -export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { - return { - visitor: { - Program: { - enter(path, state) { - const fragmentContext = collectFragmentContext(path); - state.sentryFragmentContext = fragmentContext; - }, - }, - FunctionDeclaration(path, state) { - if (!path.node.id?.name) { - return; - } - if (isKnownIncompatiblePluginFromState(state)) { - return; - } - - const context = createJSXProcessingContext(state, t, path.node.id.name); - functionBodyPushAttributes(context, path); - }, - ArrowFunctionExpression(path, state) { - // We're expecting a `VariableDeclarator` like `const MyComponent =` - const parent = path.parent; - - if ( - !parent || - !("id" in parent) || - !parent.id || - !("name" in parent.id) || - !parent.id.name - ) { - return; - } - - if (isKnownIncompatiblePluginFromState(state)) { - return; - } - - const context = createJSXProcessingContext(state, t, parent.id.name); - functionBodyPushAttributes(context, path); - }, - ClassDeclaration(path, state) { - const name = path.get("id"); - const properties = path.get("body").get("body"); - const render = properties.find((prop) => { - return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); - }); - - if (!render?.traverse || isKnownIncompatiblePluginFromState(state)) { - return; - } - - const context = createJSXProcessingContext(state, t, name.node?.name || ""); - - render.traverse({ - ReturnStatement(returnStatement) { - const arg = returnStatement.get("argument"); - - if (!arg.isJSXElement() && !arg.isJSXFragment()) { - return; - } - - processJSX(context, arg); - }, - }); - }, - }, - }; -} - -/** - * Creates a JSX processing context from the plugin state - */ -function createJSXProcessingContext( - state: AnnotationPluginPass, - t: typeof Babel.types, - componentName: string -): JSXProcessingContext { - return { - annotateFragments: state.opts["annotate-fragments"] === true, - t, - componentName, - sourceFileName: sourceFileNameFromState(state), - attributeNames: attributeNamesFromState(state), - ignoredComponents: state.opts.ignoredComponents ?? [], - fragmentContext: state.sentryFragmentContext, - autoInjectSentryLabel: !!state.opts.autoInjectSentryLabel, - textComponentNames: - (state.opts.autoInjectSentryLabel && typeof state.opts.autoInjectSentryLabel === "object" - ? state.opts.autoInjectSentryLabel.textComponentNames - : undefined) ?? DEFAULT_TEXT_COMPONENT_NAMES, - }; -} - -/** - * Processes the body of a function to add Sentry tracking attributes to JSX elements. - * Handles various function body structures including direct JSX returns, conditional expressions, - * and nested JSX elements. - */ -function functionBodyPushAttributes( - context: JSXProcessingContext, - path: Babel.NodePath -): void { - let jsxNode: Babel.NodePath; - - const functionBody = path.get("body").get("body"); - - if ( - !("length" in functionBody) && - functionBody.parent && - (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") - ) { - const maybeJsxNode = functionBody.find((c) => { - return c.type === "JSXElement" || c.type === "JSXFragment"; - }); - - if (!maybeJsxNode) { - return; - } - - jsxNode = maybeJsxNode; - } else { - const returnStatement = functionBody.find((c) => { - return c.type === "ReturnStatement"; - }); - if (!returnStatement) { - return; - } - - const arg = returnStatement.get("argument"); - if (!arg) { - return; - } - - if (Array.isArray(arg)) { - return; - } - - // Handle the case of a function body returning a ternary operation. - // `return (maybeTrue ? '' : ())` - if (arg.isConditionalExpression()) { - const consequent = arg.get("consequent"); - if (consequent.isJSXFragment() || consequent.isJSXElement()) { - processJSX(context, consequent); - } - const alternate = arg.get("alternate"); - if (alternate.isJSXFragment() || alternate.isJSXElement()) { - processJSX(context, alternate); - } - return; - } - - if (!arg.isJSXFragment() && !arg.isJSXElement()) { - return; - } - - jsxNode = arg; - } - - if (!jsxNode) { - return; - } - - processJSX(context, jsxNode); -} - -/** - * Recursively processes JSX elements to add Sentry tracking attributes. - * Handles both JSX elements and fragments, applying appropriate attributes - * based on configuration and component context. - */ -function processJSX( - context: JSXProcessingContext, - jsxNode: Babel.NodePath, - componentName?: string -): void { - if (!jsxNode) { - return; - } - - // Use provided componentName or fall back to context componentName - const currentComponentName = componentName ?? context.componentName; - const isRootElement = componentName === undefined; - - // NOTE: I don't know of a case where `openingElement` would have more than one item, - // but it's safer to always iterate - const paths = jsxNode.get("openingElement"); - const openingElements = Array.isArray(paths) ? paths : [paths]; - - openingElements.forEach((openingElement) => { - applyAttributes( - context, - openingElement as Babel.NodePath, - currentComponentName - ); - }); - - let children = jsxNode.get("children"); - // TODO: See why `Array.isArray` doesn't have correct behaviour here - if (children && !("length" in children)) { - // A single child was found, maybe a bit of static text - children = [children]; - } - - let shouldSetComponentName = context.annotateFragments; - - children.forEach((child) => { - // Happens for some node types like plain text - if (!child.node) { - return; - } - - // Children don't receive the data-component attribute so we pass null for componentName unless it's the first child of a Fragment with a node and `annotateFragments` is true - const openingElement = child.get("openingElement"); - // TODO: Improve this. We never expect to have multiple opening elements - // but if it's possible, this should work - if (Array.isArray(openingElement)) { - return; - } - - if (shouldSetComponentName && openingElement?.node) { - shouldSetComponentName = false; - processJSX(context, child, currentComponentName); - } else { - processJSX(context, child, ""); - } - }); - - if (isRootElement && context.autoInjectSentryLabel) { - maybeInjectSentryLabel(context, jsxNode); - } -} - -/** - * Applies Sentry tracking attributes to a JSX opening element. - * Adds component name, element name, and source file attributes while - * respecting ignore lists and fragment detection. - */ -function applyAttributes( - context: JSXProcessingContext, - openingElement: Babel.NodePath, - componentName: string -): void { - const { t, attributeNames, ignoredComponents, fragmentContext, sourceFileName } = context; - const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; - - // e.g., Raw JSX text like the `A` in `

a

` - if (!openingElement.node) { - return; - } - - // Check if this is a React fragment - if so, skip attribute addition entirely - const isFragment = isReactFragment(t, openingElement, fragmentContext); - if (isFragment) { - return; - } - - if (!openingElement.node.attributes) openingElement.node.attributes = []; - const elementName = getPathName(t, openingElement); - - const isAnIgnoredComponent = ignoredComponents.some( - (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName - ); - - // Add a stable attribute for the element name but only for non-DOM names - let isAnIgnoredElement = false; - if (!isAnIgnoredComponent && !hasAttributeWithName(openingElement, elementAttributeName)) { - if (DEFAULT_IGNORED_ELEMENTS.includes(elementName)) { - isAnIgnoredElement = true; - } else { - // Always add element attribute for non-ignored elements - if (elementAttributeName) { - openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)) - ); - } - } - } - - // Add a stable attribute for the component name (absent for non-root elements) - if ( - componentName && - !isAnIgnoredComponent && - !hasAttributeWithName(openingElement, componentAttributeName) - ) { - if (componentAttributeName) { - openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) - ); - } - } - - // Add a stable attribute for the source file name - // Updated condition: add source file for elements that have either: - // 1. A component name (root elements), OR - // 2. An element name that's not ignored (child elements) - if ( - sourceFileName && - !isAnIgnoredComponent && - (componentName || !isAnIgnoredElement) && - !hasAttributeWithName(openingElement, sourceFileAttributeName) - ) { - if (sourceFileAttributeName) { - openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)) - ); - } - } -} - -function sourceFileNameFromState(state: AnnotationPluginPass): string | undefined { - const name = fullSourceFileNameFromState(state); - if (!name) { - return undefined; - } - - if (name.indexOf("/") !== -1) { - return name.split("/").pop(); - } else if (name.indexOf("\\") !== -1) { - return name.split("\\").pop(); - } else { - return name; - } -} - -function fullSourceFileNameFromState(state: AnnotationPluginPass): string | null { - // @ts-expect-error This type is incorrect in Babel, `sourceFileName` is the correct type - const name = state.file.opts.parserOpts?.sourceFileName as unknown; - - if (typeof name === "string") { - return name; - } - - return null; -} - -function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass): boolean { - const fullSourceFileName = fullSourceFileNameFromState(state); - - if (!fullSourceFileName) { - return false; - } - - return KNOWN_INCOMPATIBLE_PLUGINS.some((pluginName) => { - if ( - fullSourceFileName.includes(`/node_modules/${pluginName}/`) || - fullSourceFileName.includes(`\\node_modules\\${pluginName}\\`) - ) { - return true; - } - - return false; - }); -} - -function attributeNamesFromState(state: AnnotationPluginPass): [string, string, string] { - if (state.opts.native) { - return [nativeComponentName, nativeElementName, nativeSourceFileName]; - } - - return [webComponentName, webElementName, webSourceFileName]; -} - -function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { - const fragmentAliases = new Set(); - const reactNamespaceAliases = new Set(["React"]); // Default React namespace - - programPath.traverse({ - ImportDeclaration(importPath) { - const source = importPath.node.source.value; - - // Handle React imports - if (source === "react" || source === "React") { - importPath.node.specifiers.forEach((spec) => { - if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { - // Detect aliased React.Fragment imports (e.g., `Fragment as F`) - // so we can later identify as a fragment in JSX. - if (spec.imported.name === "Fragment") { - fragmentAliases.add(spec.local.name); - } - } else if ( - spec.type === "ImportDefaultSpecifier" || - spec.type === "ImportNamespaceSpecifier" - ) { - // import React from 'react' -> React OR - // import * as React from 'react' -> React - reactNamespaceAliases.add(spec.local.name); - } - }); - } - }, - - // Handle simple variable assignments only (avoid complex cases) - VariableDeclarator(varPath) { - if (varPath.node.init) { - const init = varPath.node.init; - - // Handle identifier assignments: const MyFragment = Fragment - if (varPath.node.id.type === "Identifier") { - // Handle: const MyFragment = Fragment (only if Fragment is a known alias) - if (init.type === "Identifier" && fragmentAliases.has(init.name)) { - fragmentAliases.add(varPath.node.id.name); - } - - // Handle: const MyFragment = React.Fragment (only for known React namespaces) - if ( - init.type === "MemberExpression" && - init.object.type === "Identifier" && - init.property.type === "Identifier" && - init.property.name === "Fragment" && - reactNamespaceAliases.has(init.object.name) - ) { - fragmentAliases.add(varPath.node.id.name); - } - } - - // Handle destructuring assignments: const { Fragment } = React - if (varPath.node.id.type === "ObjectPattern") { - if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { - const properties = varPath.node.id.properties; - - for (const prop of properties) { - if ( - prop.type === "ObjectProperty" && - prop.key?.type === "Identifier" && - prop.value?.type === "Identifier" && - prop.key.name === "Fragment" - ) { - fragmentAliases.add(prop.value.name); - } - } - } - } - } - }, - }); - - return { fragmentAliases, reactNamespaceAliases }; -} - -function isReactFragment( - t: typeof Babel.types, - openingElement: Babel.NodePath, - context?: FragmentContext // Add this optional parameter -): boolean { - // Handle JSX fragments (<>) - if (openingElement.isJSXFragment()) { - return true; - } - - const elementName = getPathName(t, openingElement); - - // Direct fragment references - if (elementName === "Fragment" || elementName === "React.Fragment") { - return true; - } - - // TODO: All these objects are typed as unknown, maybe an oversight in Babel types? - - // Check if the element name is a known fragment alias - if (context && elementName && context.fragmentAliases.has(elementName)) { - return true; - } - - // Handle JSXMemberExpression - if ( - openingElement.node && - "name" in openingElement.node && - openingElement.node.name && - typeof openingElement.node.name === "object" && - "type" in openingElement.node.name && - openingElement.node.name.type === "JSXMemberExpression" - ) { - const nodeName = openingElement.node.name; - if (typeof nodeName !== "object" || !nodeName) { - return false; - } - - if ("object" in nodeName && "property" in nodeName) { - const nodeNameObject = nodeName.object; - const nodeNameProperty = nodeName.property; - - if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { - return false; - } - - if (!nodeNameObject || !nodeNameProperty) { - return false; - } - - const objectName = "name" in nodeNameObject && nodeNameObject.name; - const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; - - // React.Fragment check - if (objectName === "React" && propertyName === "Fragment") { - return true; - } - - // Enhanced checks using context - if (context) { - // Check React.Fragment pattern with known React namespaces - if ( - context.reactNamespaceAliases.has(objectName as string) && - propertyName === "Fragment" - ) { - return true; - } - - // Check MyFragment.Fragment pattern - if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { - return true; - } - } - } - } - - return false; -} - -function hasAttributeWithName( - openingElement: Babel.NodePath, - name: string | undefined | null -): boolean { - if (!name) { - return false; - } - - return openingElement.node.attributes.some((node) => { - if (node.type === "JSXAttribute") { - return node.name.name === name; - } - - return false; - }); -} - -function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { - if (!path.node) return UNKNOWN_ELEMENT_NAME; - if (!("name" in path.node)) { - return UNKNOWN_ELEMENT_NAME; - } - - const name = path.node.name; - - if (typeof name === "string") { - return name; - } - - if (t.isIdentifier(name) || t.isJSXIdentifier(name)) { - return name.name; - } - - if (t.isJSXNamespacedName(name)) { - return name.name.name; - } - - // Handle JSX member expressions like Tab.Group - if (t.isJSXMemberExpression(name)) { - const objectName = getJSXMemberExpressionObjectName(t, name.object); - const propertyName = name.property.name; - return `${objectName}.${propertyName}`; - } - - return UNKNOWN_ELEMENT_NAME; -} - -// Recursively handle nested member expressions (e.g. Components.UI.Header) -function getJSXMemberExpressionObjectName( - t: typeof Babel.types, - object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier -): string { - if (t.isJSXIdentifier(object)) { - return object.name; - } - if (t.isJSXMemberExpression(object)) { - const objectName = getJSXMemberExpressionObjectName(t, object.object); - return `${objectName}.${object.property.name}`; - } - - return UNKNOWN_ELEMENT_NAME; -} - -/** - * Extracts static text content from JSX children, searching up to a depth limit. - * Collects text from JSXText nodes of the root element and from recognized - * text components (e.g. ). Non-text custom components are traversed - * but their own JSXText is not collected. - * - * Returns null when dynamic content is found anywhere in the subtree, - * signaling that the entire label should be skipped. - */ -function extractStaticTextFromChildren( - t: typeof Babel.types, - node: Babel.types.JSXElement | Babel.types.JSXFragment, - textComponentNames: string[], - depth: number, - isRoot: boolean -): string[] | null { - if (depth <= 0) { - return []; - } - - const texts: string[] = []; - - for (const child of node.children) { - if (t.isJSXText(child)) { - if (isRoot) { - const trimmed = child.value.replace(/\s+/g, " ").trim(); - if (trimmed) { - texts.push(trimmed); - } - } - } else if (t.isJSXElement(child)) { - const childName = getElementName(t, child.openingElement); - - if (textComponentNames.includes(childName)) { - const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); - if (innerTexts === null) { - return null; - } - texts.push(...innerTexts); - } else { - const result = extractStaticTextFromChildren( - t, - child, - textComponentNames, - depth - 1, - false - ); - if (result === null) { - return null; - } - texts.push(...result); - } - } else if (t.isJSXFragment(child)) { - const result = extractStaticTextFromChildren(t, child, textComponentNames, depth, isRoot); - if (result === null) { - return null; - } - texts.push(...result); - } else if (t.isJSXExpressionContainer(child)) { - if (!t.isJSXEmptyExpression(child.expression)) { - return null; - } - } else if (t.isJSXSpreadChild(child)) { - return null; - } - } - - return texts; -} - -/** - * Recursively extracts static text from within a recognized text component. - * Handles nested text components (e.g. Hello world) - * which is the standard React Native pattern for inline styling. - * - * Returns null when any dynamic content is found, signaling bail-out. - */ -function extractTextFromTextComponent( - t: typeof Babel.types, - node: Babel.types.JSXElement | Babel.types.JSXFragment, - textComponentNames: string[] -): string[] | null { - const texts: string[] = []; - - for (const child of node.children) { - if (t.isJSXText(child)) { - const trimmed = child.value.replace(/\s+/g, " ").trim(); - if (trimmed) { - texts.push(trimmed); - } - } else if (t.isJSXExpressionContainer(child)) { - if (!t.isJSXEmptyExpression(child.expression)) { - return null; - } - } else if (t.isJSXElement(child)) { - const childName = getElementName(t, child.openingElement); - if (textComponentNames.includes(childName)) { - const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); - if (innerTexts === null) { - return null; - } - texts.push(...innerTexts); - } else { - const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); - if (innerTexts === null) { - return null; - } - } - } else if (t.isJSXFragment(child)) { - const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); - if (innerTexts === null) { - return null; - } - texts.push(...innerTexts); - } else if (t.isJSXSpreadChild(child)) { - return null; - } - } - - return texts; -} - -function getElementName( - t: typeof Babel.types, - openingElement: Babel.types.JSXOpeningElement -): string { - const name = openingElement.name; - if (t.isJSXIdentifier(name)) { - return name.name; - } - if (t.isJSXMemberExpression(name)) { - return `${getJSXMemberExpressionObjectName(t, name.object)}.${name.property.name}`; - } - return ""; -} - -/** - * Injects a sentry-label attribute on the root JSX element of a component if - * static text content can be extracted from its children. - * - * When the root is a JSX fragment, the first JSXElement child is used as the - * target for both text extraction and attribute injection (since fragments - * cannot carry attributes). - */ -function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.NodePath): void { - const { t, textComponentNames, ignoredComponents, componentName } = context; - const node = jsxNode.node; - - let targetElement: Babel.types.JSXElement; - - if (t.isJSXElement(node)) { - targetElement = node; - } else if (t.isJSXFragment(node)) { - const firstChild = node.children.find((c): c is Babel.types.JSXElement => t.isJSXElement(c)); - if (!firstChild) { - return; - } - targetElement = firstChild; - } else { - return; - } - - const targetElementName = getElementName(t, targetElement.openingElement); - - if ( - ignoredComponents.some((ignored) => ignored === componentName || ignored === targetElementName) - ) { - return; - } - - if ( - targetElement.openingElement.attributes.some( - (attr) => t.isJSXAttribute(attr) && attr.name.name === SENTRY_LABEL_ATTRIBUTE - ) - ) { - return; - } - - const texts = extractStaticTextFromChildren( - t, - targetElement, - textComponentNames, - MAX_TEXT_SEARCH_DEPTH, - true - ); - - if (texts === null) { - return; - } - - let label = texts.join(" ").replace(/\s+/g, " ").trim(); - - if (!label) { - return; - } - - if (label.length > MAX_LABEL_LENGTH) { - label = `${label.substring(0, MAX_LABEL_LENGTH - 3)}...`; - } - - targetElement.openingElement.attributes.push( - t.jSXAttribute(t.jSXIdentifier(SENTRY_LABEL_ATTRIBUTE), t.stringLiteral(label)) - ); -} - -const UNKNOWN_ELEMENT_NAME = "unknown"; +export { + default, + experimentalComponentNameAnnotatePlugin, +} from "@sentry/bundler-plugins/babel-plugin"; diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index f511ed1bf9f9..a71fa7d9bc60 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -33,8 +33,7 @@ "module": "dist/esm/index.mjs", "types": "dist/types/index.d.ts", "scripts": { - "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts", - "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", + "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", @@ -47,26 +46,15 @@ "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "pretest": "yarn prebuild", - "test": "vitest run" + "clean:deps": "premove node_modules" }, "dependencies": { - "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.3.0", - "@sentry/cli": "^2.58.6", - "dotenv": "^16.3.1", - "find-up": "^5.0.0", - "glob": "^13.0.6", - "magic-string": "~0.30.8" + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { - "@sentry/core": "10.56.0", - "@sentry/types": "10.56.0", "@types/node": "^18.6.3", "premove": "^4.0.0", - "rolldown": "^1.0.0", - "vitest": "^4.0.0" + "rolldown": "^1.0.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/bundler-plugin-core/rollup.config.mjs b/packages/bundler-plugin-core/rollup.config.mjs index 98d8b5dd8022..4e04614e760f 100644 --- a/packages/bundler-plugin-core/rollup.config.mjs +++ b/packages/bundler-plugin-core/rollup.config.mjs @@ -1,9 +1,11 @@ import packageJson from "./package.json" with { type: "json" }; +const deps = Object.keys(packageJson.dependencies ?? {}); + export default { platform: "node", input: ["src/index.ts"], - external: Object.keys(packageJson.dependencies), + external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), output: [ { file: packageJson.module, diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts index a42ec5abf1ce..cec33da94049 100644 --- a/packages/bundler-plugin-core/src/index.ts +++ b/packages/bundler-plugin-core/src/index.ts @@ -1,145 +1 @@ -import { transformAsync } from "@babel/core"; -import componentNameAnnotatePlugin, { - experimentalComponentNameAnnotatePlugin, -} from "@sentry/babel-plugin-component-annotate"; -import SentryCli from "@sentry/cli"; -import { debug } from "@sentry/core"; -import * as fs from "fs"; -import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; - -/** - * Determines whether the Sentry CLI binary is in its expected location. - * This function is useful since `@sentry/cli` installs the binary via a post-install - * script and post-install scripts may not always run. E.g. with `npm i --ignore-scripts`. - */ -export function sentryCliBinaryExists(): boolean { - return fs.existsSync(SentryCli.getPath()); -} - -// We need to be careful not to inject the snippet before any `"use strict";`s. -// As an additional complication `"use strict";`s may come after any number of comments. -export const COMMENT_USE_STRICT_REGEX = - // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. - /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; - -/** - * Checks if a file is a JavaScript file based on its extension. - * Handles query strings and hashes in the filename. - */ -export function isJsFile(fileName: string): boolean { - const cleanFileName = stripQueryAndHashFromPath(fileName); - return [".js", ".mjs", ".cjs"].some((ext) => cleanFileName.endsWith(ext)); -} - -/** - * Checks if a chunk should be skipped for code injection - * - * This is necessary to handle Vite's MPA (multi-page application) mode where - * HTML entry points create "facade" chunks that should not contain injected code. - * See: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/829 - * - * However, in SPA mode, the main bundle also has an HTML facade but contains - * substantial application code. We should NOT skip injection for these bundles. - * - * @param code - The chunk's code content - * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks - * @returns true if the chunk should be skipped - */ -export function shouldSkipCodeInjection( - code: string, - facadeModuleId: string | null | undefined -): boolean { - // Skip empty chunks - these are placeholder chunks that should be optimized away - if (code.trim().length === 0) { - return true; - } - - // For HTML facade chunks, only skip if they contain only import statements - if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith(".html")) { - return containsOnlyImports(code); - } - - return false; -} - -export { globFiles } from "./glob"; - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function createComponentNameAnnotateHooks( - ignoredComponents: string[], - injectIntoHtml: boolean -) { - type ParserPlugins = NonNullable< - NonNullable[1]>["parserOpts"] - >["plugins"]; - - return { - async transform(this: void, code: string, id: string) { - // id may contain query and hash which will trip up our file extension logic below - const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); - - if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) { - return null; - } - - // We will only apply this plugin on jsx and tsx files - if (![".jsx", ".tsx"].some((ending) => idWithoutQueryAndHash.endsWith(ending))) { - return null; - } - - const parserPlugins: ParserPlugins = []; - if (idWithoutQueryAndHash.endsWith(".jsx")) { - parserPlugins.push("jsx"); - } else if (idWithoutQueryAndHash.endsWith(".tsx")) { - parserPlugins.push("jsx", "typescript"); - } - - const plugin = injectIntoHtml - ? experimentalComponentNameAnnotatePlugin - : componentNameAnnotatePlugin; - - try { - const result = await transformAsync(code, { - plugins: [[plugin, { ignoredComponents }]], - filename: id, - parserOpts: { - sourceType: "module", - allowAwaitOutsideFunction: true, - plugins: parserPlugins, - }, - generatorOpts: { - decoratorsBeforeExport: true, - }, - sourceMaps: true, - }); - - return { - code: result?.code ?? code, - map: result?.map, - }; - } catch (e) { - debug.error(`Failed to apply react annotate plugin`, e); - } - - return { code }; - }, - }; -} - -export function getDebugIdSnippet(debugId: string): CodeInjection { - return new CodeInjection( - `var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");` - ); -} - -export type { Logger } from "./logger"; -export type { Options, SentrySDKBuildFlags } from "./types"; -export { - CodeInjection, - replaceBooleanFlagsInCode, - stringToUUID, - generateReleaseInjectorCode, - generateModuleMetadataInjectorCode, -} from "./utils"; -export { createSentryBuildPluginManager } from "./build-plugin-manager"; -export { createDebugIdUploadFunction } from "./debug-id-upload"; +export * from "@sentry/bundler-plugins/core"; diff --git a/packages/bundler-plugins/.gitignore b/packages/bundler-plugins/.gitignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/packages/bundler-plugins/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/bundler-plugins/package.json b/packages/bundler-plugins/package.json new file mode 100644 index 000000000000..44ad4d31e1bd --- /dev/null +++ b/packages/bundler-plugins/package.json @@ -0,0 +1,127 @@ +{ + "name": "@sentry/bundler-plugins", + "version": "5.3.0", + "description": "Sentry Bundler Plugins", + "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", + "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugins", + "author": "Sentry", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist", + "sentry-release-injection-file.js", + "sentry-esbuild-debugid-injection-file.js" + ], + "exports": { + "./webpack": { + "types": "./dist/types/webpack/index.d.ts", + "import": "./dist/esm/webpack/index.mjs", + "require": "./dist/cjs/webpack/index.js" + }, + "./webpack5": { + "types": "./dist/types/webpack/webpack5.d.ts", + "import": "./dist/esm/webpack/webpack5.mjs", + "require": "./dist/cjs/webpack/webpack5.js" + }, + "./rollup": { + "types": "./dist/types/rollup/index.d.ts", + "import": "./dist/esm/rollup/index.mjs", + "require": "./dist/cjs/rollup/index.js" + }, + "./vite": { + "types": "./dist/types/vite/index.d.ts", + "import": "./dist/esm/vite/index.mjs", + "require": "./dist/cjs/vite/index.js" + }, + "./esbuild": { + "types": "./dist/types/esbuild/index.d.ts", + "import": "./dist/esm/esbuild/index.mjs", + "require": "./dist/cjs/esbuild/index.js" + }, + "./core": { + "types": "./dist/types/core/index.d.ts", + "import": "./dist/esm/core/index.mjs", + "require": "./dist/cjs/core/index.js" + }, + "./babel-plugin": { + "types": "./dist/types/babel-plugin/index.d.ts", + "import": "./dist/esm/babel-plugin/index.mjs", + "require": "./dist/cjs/babel-plugin/index.js" + }, + "./sentry-release-injection-file": { + "import": "./sentry-release-injection-file.js", + "require": "./sentry-release-injection-file.js" + }, + "./sentry-esbuild-debugid-injection-file": { + "import": "./sentry-esbuild-debugid-injection-file.js", + "require": "./sentry-esbuild-debugid-injection-file.js" + }, + "./webpack-loader": { + "require": "./dist/cjs/webpack/component-annotation-transform.js" + } + }, + "scripts": { + "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/core/version.ts", + "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", + "build:watch": "run-p build:rollup:watch build:types:watch", + "build:rollup": "rolldown --config rollup.config.mjs", + "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", + "build:types": "tsc --project types.tsconfig.json", + "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", + "build:npm": "npm pack", + "check:types": "run-p check:types:src check:types:test", + "check:types:src": "tsc --project ./tsconfig.json --noEmit", + "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", + "clean": "run-s clean:build", + "clean:all": "run-p clean clean:deps", + "clean:build": "premove ./dist *.tgz", + "clean:deps": "premove node_modules", + "pretest": "yarn prebuild", + "test": "vitest run" + }, + "dependencies": { + "@babel/core": "^7.18.5", + "@sentry/cli": "^2.58.6", + "dotenv": "^16.3.1", + "find-up": "^5.0.0", + "glob": "^13.0.6", + "magic-string": "~0.30.8" + }, + "peerDependencies": { + "rollup": ">=3.2.0", + "webpack": ">=5.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "webpack": { + "optional": true + } + }, + "devDependencies": { + "@babel/preset-react": "^7.23.3", + "@sentry/core": "10.56.0", + "@sentry/types": "10.56.0", + "@sentry-internal/dev-utils": "5.3.0", + "@types/babel__core": "^7.20.5", + "@types/node": "^18.6.3", + "@types/webpack": "npm:@types/webpack@^4", + "premove": "^4.0.0", + "rolldown": "^1.0.0", + "vitest": "^4.0.0", + "webpack": "5.76.0" + }, + "volta": { + "extends": "../../package.json" + }, + "engines": { + "node": ">= 18" + }, + "sideEffects": [ + "./sentry-release-injection-file.js", + "./sentry-esbuild-debugid-injection-file.js" + ] +} diff --git a/packages/bundler-plugins/rollup.config.mjs b/packages/bundler-plugins/rollup.config.mjs new file mode 100644 index 000000000000..8068953eae84 --- /dev/null +++ b/packages/bundler-plugins/rollup.config.mjs @@ -0,0 +1,60 @@ +import packageJson from "./package.json" with { type: "json" }; +import modulePackage from "module"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const srcDir = path.resolve(__dirname, "src"); + +const external = [ + ...Object.keys(packageJson.dependencies || {}), + ...modulePackage.builtinModules, + "webpack", + "rollup", + "vite", +]; + +export default { + platform: "node", + input: [ + "src/babel-plugin/index.ts", + "src/core/index.ts", + "src/rollup/index.ts", + "src/vite/index.ts", + "src/esbuild/index.ts", + "src/webpack/index.ts", + "src/webpack/webpack5.ts", + "src/webpack/component-annotation-transform.ts", + ], + external, + output: [ + { + dir: "./dist/esm", + format: "esm", + exports: "named", + sourcemap: true, + entryFileNames: (chunkInfo) => { + if (chunkInfo.facadeModuleId) { + const rel = path.relative(srcDir, chunkInfo.facadeModuleId); + return rel.replace(/\.ts$/, ".mjs"); + } + return "[name].mjs"; + }, + chunkFileNames: "_chunks/[name]-[hash].mjs", + }, + { + dir: "./dist/cjs", + format: "cjs", + exports: "named", + sourcemap: true, + entryFileNames: (chunkInfo) => { + if (chunkInfo.facadeModuleId) { + const rel = path.relative(srcDir, chunkInfo.facadeModuleId); + return rel.replace(/\.ts$/, ".js"); + } + return "[name].js"; + }, + chunkFileNames: "_chunks/[name]-[hash].js", + }, + ], +}; diff --git a/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js new file mode 100644 index 000000000000..06ad5071d0cc --- /dev/null +++ b/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js @@ -0,0 +1,20 @@ +try { + let globalObject = + "undefined" != typeof window + ? window + : "undefined" != typeof global + ? global + : "undefined" != typeof globalThis + ? global + : "undefined" != typeof self + ? self + : {}; + + let stack = new globalObject.Error().stack; + + if (stack) { + globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; + globalObject._sentryDebugIds[stack] = "__SENTRY_DEBUG_ID__"; + globalObject._sentryDebugIdIdentifier = "sentry-dbid-__SENTRY_DEBUG_ID__"; + } +} catch {} diff --git a/packages/bundler-plugins/sentry-release-injection-file.js b/packages/bundler-plugins/sentry-release-injection-file.js new file mode 100644 index 000000000000..51de6958a7c0 --- /dev/null +++ b/packages/bundler-plugins/sentry-release-injection-file.js @@ -0,0 +1,4 @@ +// This const is used for nothing except to make this file identifiable via its content. +// 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. + +// _sentry_release_injection_file diff --git a/packages/babel-plugin-component-annotate/src/constants.ts b/packages/bundler-plugins/src/babel-plugin/constants.ts similarity index 100% rename from packages/babel-plugin-component-annotate/src/constants.ts rename to packages/bundler-plugins/src/babel-plugin/constants.ts diff --git a/packages/babel-plugin-component-annotate/src/experimental.ts b/packages/bundler-plugins/src/babel-plugin/experimental.ts similarity index 100% rename from packages/babel-plugin-component-annotate/src/experimental.ts rename to packages/bundler-plugins/src/babel-plugin/experimental.ts diff --git a/packages/bundler-plugins/src/babel-plugin/index.ts b/packages/bundler-plugins/src/babel-plugin/index.ts new file mode 100644 index 000000000000..13773f43bf55 --- /dev/null +++ b/packages/bundler-plugins/src/babel-plugin/index.ts @@ -0,0 +1,890 @@ +/* oxlint-disable max-lines */ +/** + * MIT License + * + * Copyright (c) 2020 Engineering at FullStory + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +/** + * The following code is based on the FullStory Babel plugin, but has been modified to work + * with Sentry products: + * + * - Added `sentry` to data properties, i.e `data-sentry-component` + * - Converted to TypeScript + * - Code cleanups + */ + +import type * as Babel from "@babel/core"; +import type { PluginObj, PluginPass } from "@babel/core"; + +import { DEFAULT_IGNORED_ELEMENTS, KNOWN_INCOMPATIBLE_PLUGINS } from "./constants"; + +const webComponentName = "data-sentry-component"; +const webElementName = "data-sentry-element"; +const webSourceFileName = "data-sentry-source-file"; + +const nativeComponentName = "dataSentryComponent"; +const nativeElementName = "dataSentryElement"; +const nativeSourceFileName = "dataSentrySourceFile"; + +const SENTRY_LABEL_ATTRIBUTE = "sentry-label"; +const MAX_LABEL_LENGTH = 64; +const DEFAULT_TEXT_COMPONENT_NAMES = ["Text", "text"]; +const MAX_TEXT_SEARCH_DEPTH = 3; + +interface AutoInjectSentryLabelOpts { + textComponentNames?: string[]; +} + +interface AnnotationOpts { + native?: boolean; + "annotate-fragments"?: boolean; + ignoredComponents?: string[]; + /** @hidden */ + autoInjectSentryLabel?: boolean | AutoInjectSentryLabelOpts; +} + +interface FragmentContext { + fragmentAliases: Set; + reactNamespaceAliases: Set; +} + +interface AnnotationPluginPass extends PluginPass { + opts: AnnotationOpts; + sentryFragmentContext?: FragmentContext; +} + +type AnnotationPlugin = PluginObj; + +// Shared context object for all JSX processing functions +interface JSXProcessingContext { + /** Whether to annotate React fragments */ + annotateFragments: boolean; + /** Babel types object */ + t: typeof Babel.types; + /** Name of the React component */ + componentName: string; + /** Source file name (optional) */ + sourceFileName?: string; + /** Array of attribute names [component, element, sourceFile] */ + attributeNames: string[]; + /** Array of component names to ignore */ + ignoredComponents: string[]; + /** Fragment context for identifying React fragments */ + fragmentContext?: FragmentContext; + /** Whether to auto-inject sentry-label from static text children */ + autoInjectSentryLabel: boolean; + /** Component names whose JSXText children are considered text content */ + textComponentNames: string[]; +} + +export { experimentalComponentNameAnnotatePlugin } from "./experimental"; + +// We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier +export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { + return { + visitor: { + Program: { + enter(path, state) { + const fragmentContext = collectFragmentContext(path); + state.sentryFragmentContext = fragmentContext; + }, + }, + FunctionDeclaration(path, state) { + if (!path.node.id?.name) { + return; + } + if (isKnownIncompatiblePluginFromState(state)) { + return; + } + + const context = createJSXProcessingContext(state, t, path.node.id.name); + functionBodyPushAttributes(context, path); + }, + ArrowFunctionExpression(path, state) { + // We're expecting a `VariableDeclarator` like `const MyComponent =` + const parent = path.parent; + + if ( + !parent || + !("id" in parent) || + !parent.id || + !("name" in parent.id) || + !parent.id.name + ) { + return; + } + + if (isKnownIncompatiblePluginFromState(state)) { + return; + } + + const context = createJSXProcessingContext(state, t, parent.id.name); + functionBodyPushAttributes(context, path); + }, + ClassDeclaration(path, state) { + const name = path.get("id"); + const properties = path.get("body").get("body"); + const render = properties.find((prop) => { + return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); + }); + + if (!render?.traverse || isKnownIncompatiblePluginFromState(state)) { + return; + } + + const context = createJSXProcessingContext(state, t, name.node?.name || ""); + + render.traverse({ + ReturnStatement(returnStatement) { + const arg = returnStatement.get("argument"); + + if (!arg.isJSXElement() && !arg.isJSXFragment()) { + return; + } + + processJSX(context, arg); + }, + }); + }, + }, + }; +} + +/** + * Creates a JSX processing context from the plugin state + */ +function createJSXProcessingContext( + state: AnnotationPluginPass, + t: typeof Babel.types, + componentName: string +): JSXProcessingContext { + return { + annotateFragments: state.opts["annotate-fragments"] === true, + t, + componentName, + sourceFileName: sourceFileNameFromState(state), + attributeNames: attributeNamesFromState(state), + ignoredComponents: state.opts.ignoredComponents ?? [], + fragmentContext: state.sentryFragmentContext, + autoInjectSentryLabel: !!state.opts.autoInjectSentryLabel, + textComponentNames: + (state.opts.autoInjectSentryLabel && typeof state.opts.autoInjectSentryLabel === "object" + ? state.opts.autoInjectSentryLabel.textComponentNames + : undefined) ?? DEFAULT_TEXT_COMPONENT_NAMES, + }; +} + +/** + * Processes the body of a function to add Sentry tracking attributes to JSX elements. + * Handles various function body structures including direct JSX returns, conditional expressions, + * and nested JSX elements. + */ +function functionBodyPushAttributes( + context: JSXProcessingContext, + path: Babel.NodePath +): void { + let jsxNode: Babel.NodePath; + + const functionBody = path.get("body").get("body"); + + if ( + !("length" in functionBody) && + functionBody.parent && + (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") + ) { + const maybeJsxNode = functionBody.find((c) => { + return c.type === "JSXElement" || c.type === "JSXFragment"; + }); + + if (!maybeJsxNode) { + return; + } + + jsxNode = maybeJsxNode; + } else { + const returnStatement = functionBody.find((c) => { + return c.type === "ReturnStatement"; + }); + if (!returnStatement) { + return; + } + + const arg = returnStatement.get("argument"); + if (!arg) { + return; + } + + if (Array.isArray(arg)) { + return; + } + + // Handle the case of a function body returning a ternary operation. + // `return (maybeTrue ? '' : ())` + if (arg.isConditionalExpression()) { + const consequent = arg.get("consequent"); + if (consequent.isJSXFragment() || consequent.isJSXElement()) { + processJSX(context, consequent); + } + const alternate = arg.get("alternate"); + if (alternate.isJSXFragment() || alternate.isJSXElement()) { + processJSX(context, alternate); + } + return; + } + + if (!arg.isJSXFragment() && !arg.isJSXElement()) { + return; + } + + jsxNode = arg; + } + + if (!jsxNode) { + return; + } + + processJSX(context, jsxNode); +} + +/** + * Recursively processes JSX elements to add Sentry tracking attributes. + * Handles both JSX elements and fragments, applying appropriate attributes + * based on configuration and component context. + */ +function processJSX( + context: JSXProcessingContext, + jsxNode: Babel.NodePath, + componentName?: string +): void { + if (!jsxNode) { + return; + } + + // Use provided componentName or fall back to context componentName + const currentComponentName = componentName ?? context.componentName; + const isRootElement = componentName === undefined; + + // NOTE: I don't know of a case where `openingElement` would have more than one item, + // but it's safer to always iterate + const paths = jsxNode.get("openingElement"); + const openingElements = Array.isArray(paths) ? paths : [paths]; + + openingElements.forEach((openingElement) => { + applyAttributes( + context, + openingElement as Babel.NodePath, + currentComponentName + ); + }); + + let children = jsxNode.get("children"); + // TODO: See why `Array.isArray` doesn't have correct behaviour here + if (children && !("length" in children)) { + // A single child was found, maybe a bit of static text + children = [children]; + } + + let shouldSetComponentName = context.annotateFragments; + + children.forEach((child) => { + // Happens for some node types like plain text + if (!child.node) { + return; + } + + // Children don't receive the data-component attribute so we pass null for componentName unless it's the first child of a Fragment with a node and `annotateFragments` is true + const openingElement = child.get("openingElement"); + // TODO: Improve this. We never expect to have multiple opening elements + // but if it's possible, this should work + if (Array.isArray(openingElement)) { + return; + } + + if (shouldSetComponentName && openingElement?.node) { + shouldSetComponentName = false; + processJSX(context, child, currentComponentName); + } else { + processJSX(context, child, ""); + } + }); + + if (isRootElement && context.autoInjectSentryLabel) { + maybeInjectSentryLabel(context, jsxNode); + } +} + +/** + * Applies Sentry tracking attributes to a JSX opening element. + * Adds component name, element name, and source file attributes while + * respecting ignore lists and fragment detection. + */ +function applyAttributes( + context: JSXProcessingContext, + openingElement: Babel.NodePath, + componentName: string +): void { + const { t, attributeNames, ignoredComponents, fragmentContext, sourceFileName } = context; + const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; + + // e.g., Raw JSX text like the `A` in `

a

` + if (!openingElement.node) { + return; + } + + // Check if this is a React fragment - if so, skip attribute addition entirely + const isFragment = isReactFragment(t, openingElement, fragmentContext); + if (isFragment) { + return; + } + + if (!openingElement.node.attributes) openingElement.node.attributes = []; + const elementName = getPathName(t, openingElement); + + const isAnIgnoredComponent = ignoredComponents.some( + (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName + ); + + // Add a stable attribute for the element name but only for non-DOM names + let isAnIgnoredElement = false; + if (!isAnIgnoredComponent && !hasAttributeWithName(openingElement, elementAttributeName)) { + if (DEFAULT_IGNORED_ELEMENTS.includes(elementName)) { + isAnIgnoredElement = true; + } else { + // Always add element attribute for non-ignored elements + if (elementAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)) + ); + } + } + } + + // Add a stable attribute for the component name (absent for non-root elements) + if ( + componentName && + !isAnIgnoredComponent && + !hasAttributeWithName(openingElement, componentAttributeName) + ) { + if (componentAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) + ); + } + } + + // Add a stable attribute for the source file name + // Updated condition: add source file for elements that have either: + // 1. A component name (root elements), OR + // 2. An element name that's not ignored (child elements) + if ( + sourceFileName && + !isAnIgnoredComponent && + (componentName || !isAnIgnoredElement) && + !hasAttributeWithName(openingElement, sourceFileAttributeName) + ) { + if (sourceFileAttributeName) { + openingElement.node.attributes.push( + t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)) + ); + } + } +} + +function sourceFileNameFromState(state: AnnotationPluginPass): string | undefined { + const name = fullSourceFileNameFromState(state); + if (!name) { + return undefined; + } + + if (name.indexOf("/") !== -1) { + return name.split("/").pop(); + } else if (name.indexOf("\\") !== -1) { + return name.split("\\").pop(); + } else { + return name; + } +} + +function fullSourceFileNameFromState(state: AnnotationPluginPass): string | null { + // @ts-expect-error This type is incorrect in Babel, `sourceFileName` is the correct type + const name = state.file.opts.parserOpts?.sourceFileName as unknown; + + if (typeof name === "string") { + return name; + } + + return null; +} + +function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass): boolean { + const fullSourceFileName = fullSourceFileNameFromState(state); + + if (!fullSourceFileName) { + return false; + } + + return KNOWN_INCOMPATIBLE_PLUGINS.some((pluginName) => { + if ( + fullSourceFileName.includes(`/node_modules/${pluginName}/`) || + fullSourceFileName.includes(`\\node_modules\\${pluginName}\\`) + ) { + return true; + } + + return false; + }); +} + +function attributeNamesFromState(state: AnnotationPluginPass): [string, string, string] { + if (state.opts.native) { + return [nativeComponentName, nativeElementName, nativeSourceFileName]; + } + + return [webComponentName, webElementName, webSourceFileName]; +} + +function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { + const fragmentAliases = new Set(); + const reactNamespaceAliases = new Set(["React"]); // Default React namespace + + programPath.traverse({ + ImportDeclaration(importPath) { + const source = importPath.node.source.value; + + // Handle React imports + if (source === "react" || source === "React") { + importPath.node.specifiers.forEach((spec) => { + if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { + // Detect aliased React.Fragment imports (e.g., `Fragment as F`) + // so we can later identify as a fragment in JSX. + if (spec.imported.name === "Fragment") { + fragmentAliases.add(spec.local.name); + } + } else if ( + spec.type === "ImportDefaultSpecifier" || + spec.type === "ImportNamespaceSpecifier" + ) { + // import React from 'react' -> React OR + // import * as React from 'react' -> React + reactNamespaceAliases.add(spec.local.name); + } + }); + } + }, + + // Handle simple variable assignments only (avoid complex cases) + VariableDeclarator(varPath) { + if (varPath.node.init) { + const init = varPath.node.init; + + // Handle identifier assignments: const MyFragment = Fragment + if (varPath.node.id.type === "Identifier") { + // Handle: const MyFragment = Fragment (only if Fragment is a known alias) + if (init.type === "Identifier" && fragmentAliases.has(init.name)) { + fragmentAliases.add(varPath.node.id.name); + } + + // Handle: const MyFragment = React.Fragment (only for known React namespaces) + if ( + init.type === "MemberExpression" && + init.object.type === "Identifier" && + init.property.type === "Identifier" && + init.property.name === "Fragment" && + reactNamespaceAliases.has(init.object.name) + ) { + fragmentAliases.add(varPath.node.id.name); + } + } + + // Handle destructuring assignments: const { Fragment } = React + if (varPath.node.id.type === "ObjectPattern") { + if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { + const properties = varPath.node.id.properties; + + for (const prop of properties) { + if ( + prop.type === "ObjectProperty" && + prop.key?.type === "Identifier" && + prop.value?.type === "Identifier" && + prop.key.name === "Fragment" + ) { + fragmentAliases.add(prop.value.name); + } + } + } + } + } + }, + }); + + return { fragmentAliases, reactNamespaceAliases }; +} + +function isReactFragment( + t: typeof Babel.types, + openingElement: Babel.NodePath, + context?: FragmentContext // Add this optional parameter +): boolean { + // Handle JSX fragments (<>) + if (openingElement.isJSXFragment()) { + return true; + } + + const elementName = getPathName(t, openingElement); + + // Direct fragment references + if (elementName === "Fragment" || elementName === "React.Fragment") { + return true; + } + + // TODO: All these objects are typed as unknown, maybe an oversight in Babel types? + + // Check if the element name is a known fragment alias + if (context && elementName && context.fragmentAliases.has(elementName)) { + return true; + } + + // Handle JSXMemberExpression + if ( + openingElement.node && + "name" in openingElement.node && + openingElement.node.name && + typeof openingElement.node.name === "object" && + "type" in openingElement.node.name && + openingElement.node.name.type === "JSXMemberExpression" + ) { + const nodeName = openingElement.node.name; + if (typeof nodeName !== "object" || !nodeName) { + return false; + } + + if ("object" in nodeName && "property" in nodeName) { + const nodeNameObject = nodeName.object; + const nodeNameProperty = nodeName.property; + + if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { + return false; + } + + if (!nodeNameObject || !nodeNameProperty) { + return false; + } + + const objectName = "name" in nodeNameObject && nodeNameObject.name; + const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + + // React.Fragment check + if (objectName === "React" && propertyName === "Fragment") { + return true; + } + + // Enhanced checks using context + if (context) { + // Check React.Fragment pattern with known React namespaces + if ( + context.reactNamespaceAliases.has(objectName as string) && + propertyName === "Fragment" + ) { + return true; + } + + // Check MyFragment.Fragment pattern + if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { + return true; + } + } + } + } + + return false; +} + +function hasAttributeWithName( + openingElement: Babel.NodePath, + name: string | undefined | null +): boolean { + if (!name) { + return false; + } + + return openingElement.node.attributes.some((node) => { + if (node.type === "JSXAttribute") { + return node.name.name === name; + } + + return false; + }); +} + +function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { + if (!path.node) return UNKNOWN_ELEMENT_NAME; + if (!("name" in path.node)) { + return UNKNOWN_ELEMENT_NAME; + } + + const name = path.node.name; + + if (typeof name === "string") { + return name; + } + + if (t.isIdentifier(name) || t.isJSXIdentifier(name)) { + return name.name; + } + + if (t.isJSXNamespacedName(name)) { + return name.name.name; + } + + // Handle JSX member expressions like Tab.Group + if (t.isJSXMemberExpression(name)) { + const objectName = getJSXMemberExpressionObjectName(t, name.object); + const propertyName = name.property.name; + return `${objectName}.${propertyName}`; + } + + return UNKNOWN_ELEMENT_NAME; +} + +// Recursively handle nested member expressions (e.g. Components.UI.Header) +function getJSXMemberExpressionObjectName( + t: typeof Babel.types, + object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier +): string { + if (t.isJSXIdentifier(object)) { + return object.name; + } + if (t.isJSXMemberExpression(object)) { + const objectName = getJSXMemberExpressionObjectName(t, object.object); + return `${objectName}.${object.property.name}`; + } + + return UNKNOWN_ELEMENT_NAME; +} + +/** + * Extracts static text content from JSX children, searching up to a depth limit. + * Collects text from JSXText nodes of the root element and from recognized + * text components (e.g. ). Non-text custom components are traversed + * but their own JSXText is not collected. + * + * Returns null when dynamic content is found anywhere in the subtree, + * signaling that the entire label should be skipped. + */ +function extractStaticTextFromChildren( + t: typeof Babel.types, + node: Babel.types.JSXElement | Babel.types.JSXFragment, + textComponentNames: string[], + depth: number, + isRoot: boolean +): string[] | null { + if (depth <= 0) { + return []; + } + + const texts: string[] = []; + + for (const child of node.children) { + if (t.isJSXText(child)) { + if (isRoot) { + const trimmed = child.value.replace(/\s+/g, " ").trim(); + if (trimmed) { + texts.push(trimmed); + } + } + } else if (t.isJSXElement(child)) { + const childName = getElementName(t, child.openingElement); + + if (textComponentNames.includes(childName)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else { + const result = extractStaticTextFromChildren( + t, + child, + textComponentNames, + depth - 1, + false + ); + if (result === null) { + return null; + } + texts.push(...result); + } + } else if (t.isJSXFragment(child)) { + const result = extractStaticTextFromChildren(t, child, textComponentNames, depth, isRoot); + if (result === null) { + return null; + } + texts.push(...result); + } else if (t.isJSXExpressionContainer(child)) { + if (!t.isJSXEmptyExpression(child.expression)) { + return null; + } + } else if (t.isJSXSpreadChild(child)) { + return null; + } + } + + return texts; +} + +/** + * Recursively extracts static text from within a recognized text component. + * Handles nested text components (e.g. Hello world) + * which is the standard React Native pattern for inline styling. + * + * Returns null when any dynamic content is found, signaling bail-out. + */ +function extractTextFromTextComponent( + t: typeof Babel.types, + node: Babel.types.JSXElement | Babel.types.JSXFragment, + textComponentNames: string[] +): string[] | null { + const texts: string[] = []; + + for (const child of node.children) { + if (t.isJSXText(child)) { + const trimmed = child.value.replace(/\s+/g, " ").trim(); + if (trimmed) { + texts.push(trimmed); + } + } else if (t.isJSXExpressionContainer(child)) { + if (!t.isJSXEmptyExpression(child.expression)) { + return null; + } + } else if (t.isJSXElement(child)) { + const childName = getElementName(t, child.openingElement); + if (textComponentNames.includes(childName)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + } + } else if (t.isJSXFragment(child)) { + const innerTexts = extractTextFromTextComponent(t, child, textComponentNames); + if (innerTexts === null) { + return null; + } + texts.push(...innerTexts); + } else if (t.isJSXSpreadChild(child)) { + return null; + } + } + + return texts; +} + +function getElementName( + t: typeof Babel.types, + openingElement: Babel.types.JSXOpeningElement +): string { + const name = openingElement.name; + if (t.isJSXIdentifier(name)) { + return name.name; + } + if (t.isJSXMemberExpression(name)) { + return `${getJSXMemberExpressionObjectName(t, name.object)}.${name.property.name}`; + } + return ""; +} + +/** + * Injects a sentry-label attribute on the root JSX element of a component if + * static text content can be extracted from its children. + * + * When the root is a JSX fragment, the first JSXElement child is used as the + * target for both text extraction and attribute injection (since fragments + * cannot carry attributes). + */ +function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.NodePath): void { + const { t, textComponentNames, ignoredComponents, componentName } = context; + const node = jsxNode.node; + + let targetElement: Babel.types.JSXElement; + + if (t.isJSXElement(node)) { + targetElement = node; + } else if (t.isJSXFragment(node)) { + const firstChild = node.children.find((c): c is Babel.types.JSXElement => t.isJSXElement(c)); + if (!firstChild) { + return; + } + targetElement = firstChild; + } else { + return; + } + + const targetElementName = getElementName(t, targetElement.openingElement); + + if ( + ignoredComponents.some((ignored) => ignored === componentName || ignored === targetElementName) + ) { + return; + } + + if ( + targetElement.openingElement.attributes.some( + (attr) => t.isJSXAttribute(attr) && attr.name.name === SENTRY_LABEL_ATTRIBUTE + ) + ) { + return; + } + + const texts = extractStaticTextFromChildren( + t, + targetElement, + textComponentNames, + MAX_TEXT_SEARCH_DEPTH, + true + ); + + if (texts === null) { + return; + } + + let label = texts.join(" ").replace(/\s+/g, " ").trim(); + + if (!label) { + return; + } + + if (label.length > MAX_LABEL_LENGTH) { + label = `${label.substring(0, MAX_LABEL_LENGTH - 3)}...`; + } + + targetElement.openingElement.attributes.push( + t.jSXAttribute(t.jSXIdentifier(SENTRY_LABEL_ATTRIBUTE), t.stringLiteral(label)) + ); +} + +const UNKNOWN_ELEMENT_NAME = "unknown"; diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugins/src/core/build-plugin-manager.ts similarity index 100% rename from packages/bundler-plugin-core/src/build-plugin-manager.ts rename to packages/bundler-plugins/src/core/build-plugin-manager.ts diff --git a/packages/bundler-plugin-core/src/debug-id-upload.ts b/packages/bundler-plugins/src/core/debug-id-upload.ts similarity index 100% rename from packages/bundler-plugin-core/src/debug-id-upload.ts rename to packages/bundler-plugins/src/core/debug-id-upload.ts diff --git a/packages/bundler-plugin-core/src/glob.ts b/packages/bundler-plugins/src/core/glob.ts similarity index 100% rename from packages/bundler-plugin-core/src/glob.ts rename to packages/bundler-plugins/src/core/glob.ts diff --git a/packages/bundler-plugins/src/core/index.ts b/packages/bundler-plugins/src/core/index.ts new file mode 100644 index 000000000000..425c86f9ed33 --- /dev/null +++ b/packages/bundler-plugins/src/core/index.ts @@ -0,0 +1,145 @@ +import { transformAsync } from "@babel/core"; +import componentNameAnnotatePlugin, { + experimentalComponentNameAnnotatePlugin, +} from "../babel-plugin"; +import SentryCli from "@sentry/cli"; +import { debug } from "@sentry/core"; +import * as fs from "fs"; +import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; + +/** + * Determines whether the Sentry CLI binary is in its expected location. + * This function is useful since `@sentry/cli` installs the binary via a post-install + * script and post-install scripts may not always run. E.g. with `npm i --ignore-scripts`. + */ +export function sentryCliBinaryExists(): boolean { + return fs.existsSync(SentryCli.getPath()); +} + +// We need to be careful not to inject the snippet before any `"use strict";`s. +// As an additional complication `"use strict";`s may come after any number of comments. +export const COMMENT_USE_STRICT_REGEX = + // Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files. + /^(?:\s*|\/\*(?:.|\r|\n)*?\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/; + +/** + * Checks if a file is a JavaScript file based on its extension. + * Handles query strings and hashes in the filename. + */ +export function isJsFile(fileName: string): boolean { + const cleanFileName = stripQueryAndHashFromPath(fileName); + return [".js", ".mjs", ".cjs"].some((ext) => cleanFileName.endsWith(ext)); +} + +/** + * Checks if a chunk should be skipped for code injection + * + * This is necessary to handle Vite's MPA (multi-page application) mode where + * HTML entry points create "facade" chunks that should not contain injected code. + * See: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/829 + * + * However, in SPA mode, the main bundle also has an HTML facade but contains + * substantial application code. We should NOT skip injection for these bundles. + * + * @param code - The chunk's code content + * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks + * @returns true if the chunk should be skipped + */ +export function shouldSkipCodeInjection( + code: string, + facadeModuleId: string | null | undefined +): boolean { + // Skip empty chunks - these are placeholder chunks that should be optimized away + if (code.trim().length === 0) { + return true; + } + + // For HTML facade chunks, only skip if they contain only import statements + if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith(".html")) { + return containsOnlyImports(code); + } + + return false; +} + +export { globFiles } from "./glob"; + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function createComponentNameAnnotateHooks( + ignoredComponents: string[], + injectIntoHtml: boolean +) { + type ParserPlugins = NonNullable< + NonNullable[1]>["parserOpts"] + >["plugins"]; + + return { + async transform(this: void, code: string, id: string) { + // id may contain query and hash which will trip up our file extension logic below + const idWithoutQueryAndHash = stripQueryAndHashFromPath(id); + + if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) { + return null; + } + + // We will only apply this plugin on jsx and tsx files + if (![".jsx", ".tsx"].some((ending) => idWithoutQueryAndHash.endsWith(ending))) { + return null; + } + + const parserPlugins: ParserPlugins = []; + if (idWithoutQueryAndHash.endsWith(".jsx")) { + parserPlugins.push("jsx"); + } else if (idWithoutQueryAndHash.endsWith(".tsx")) { + parserPlugins.push("jsx", "typescript"); + } + + const plugin = injectIntoHtml + ? experimentalComponentNameAnnotatePlugin + : componentNameAnnotatePlugin; + + try { + const result = await transformAsync(code, { + plugins: [[plugin, { ignoredComponents }]], + filename: id, + parserOpts: { + sourceType: "module", + allowAwaitOutsideFunction: true, + plugins: parserPlugins, + }, + generatorOpts: { + decoratorsBeforeExport: true, + }, + sourceMaps: true, + }); + + return { + code: result?.code ?? code, + map: result?.map, + }; + } catch (e) { + debug.error(`Failed to apply react annotate plugin`, e); + } + + return { code }; + }, + }; +} + +export function getDebugIdSnippet(debugId: string): CodeInjection { + return new CodeInjection( + `var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");` + ); +} + +export type { Logger } from "./logger"; +export type { Options, SentrySDKBuildFlags } from "./types"; +export { + CodeInjection, + replaceBooleanFlagsInCode, + stringToUUID, + generateReleaseInjectorCode, + generateModuleMetadataInjectorCode, +} from "./utils"; +export { createSentryBuildPluginManager } from "./build-plugin-manager"; +export { createDebugIdUploadFunction } from "./debug-id-upload"; diff --git a/packages/bundler-plugin-core/src/logger.ts b/packages/bundler-plugins/src/core/logger.ts similarity index 100% rename from packages/bundler-plugin-core/src/logger.ts rename to packages/bundler-plugins/src/core/logger.ts diff --git a/packages/bundler-plugin-core/src/options-mapping.ts b/packages/bundler-plugins/src/core/options-mapping.ts similarity index 100% rename from packages/bundler-plugin-core/src/options-mapping.ts rename to packages/bundler-plugins/src/core/options-mapping.ts diff --git a/packages/bundler-plugin-core/src/sentry/telemetry.ts b/packages/bundler-plugins/src/core/sentry/telemetry.ts similarity index 100% rename from packages/bundler-plugin-core/src/sentry/telemetry.ts rename to packages/bundler-plugins/src/core/sentry/telemetry.ts diff --git a/packages/bundler-plugin-core/src/sentry/transports.ts b/packages/bundler-plugins/src/core/sentry/transports.ts similarity index 100% rename from packages/bundler-plugin-core/src/sentry/transports.ts rename to packages/bundler-plugins/src/core/sentry/transports.ts diff --git a/packages/bundler-plugin-core/src/types.ts b/packages/bundler-plugins/src/core/types.ts similarity index 100% rename from packages/bundler-plugin-core/src/types.ts rename to packages/bundler-plugins/src/core/types.ts diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugins/src/core/utils.ts similarity index 100% rename from packages/bundler-plugin-core/src/utils.ts rename to packages/bundler-plugins/src/core/utils.ts diff --git a/packages/bundler-plugins/src/esbuild/index.ts b/packages/bundler-plugins/src/esbuild/index.ts new file mode 100644 index 000000000000..57d5b2b68802 --- /dev/null +++ b/packages/bundler-plugins/src/esbuild/index.ts @@ -0,0 +1,312 @@ +import type { Options } from "../core"; +import { + createSentryBuildPluginManager, + generateReleaseInjectorCode, + generateModuleMetadataInjectorCode, + getDebugIdSnippet, + createDebugIdUploadFunction, + CodeInjection, +} from "../core"; +import * as path from "node:path"; +import { createRequire } from "node:module"; +import { randomUUID } from "node:crypto"; + +interface EsbuildOnResolveArgs { + path: string; + kind: string; + importer?: string; + resolveDir: string; + pluginData?: unknown; +} + +interface EsbuildOnResolveResult { + path: string; + sideEffects?: boolean; + pluginName?: string; + namespace?: string; + suffix?: string; + pluginData?: unknown; +} + +interface EsbuildOnLoadArgs { + path: string; + pluginData?: unknown; +} + +interface EsbuildOnLoadResult { + loader: string; + pluginName: string; + contents: string; + resolveDir?: string; +} + +interface EsbuildOnEndArgs { + metafile?: { + outputs: Record; + }; +} + +interface EsbuildInitialOptions { + bundle?: boolean; + inject?: string[]; + metafile?: boolean; + define?: Record; +} + +interface EsbuildPluginBuild { + initialOptions: EsbuildInitialOptions; + onLoad: ( + options: { filter: RegExp; namespace?: string }, + callback: (args: EsbuildOnLoadArgs) => EsbuildOnLoadResult | null + ) => void; + onResolve: ( + options: { filter: RegExp }, + callback: (args: EsbuildOnResolveArgs) => EsbuildOnResolveResult | undefined + ) => void; + onEnd: (callback: (result: EsbuildOnEndArgs) => void | Promise) => void; +} + +function getEsbuildMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - esbuild transpiles this for us + const req = createRequire(import.meta.url); + const esbuild = req("esbuild") as { version?: string }; + // esbuild hasn't released a v1 yet, so we'll return the minor version as the major version + return esbuild.version?.split(".")[1]; + } catch { + // do nothing, we'll just not report a version + } + + return undefined; +} + +const pluginName = "sentry-esbuild-plugin"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function sentryEsbuildPlugin(userOptions: Options = {}): any { + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[${pluginName}]`, + buildTool: "esbuild", + buildToolMajorVersion: getEsbuildMajorVersion(), + }); + + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues: replacementValues, + bundleMetadata, + createDependencyOnBuildArtifacts, + } = sentryBuildPluginManager; + + if (options.disable) { + return { + name: "sentry-esbuild-noop-plugin", + setup() { + // noop plugin + }, + }; + } + + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + + const sourcemapsEnabled = options.sourcemaps?.disable !== true; + const staticInjectionCode = new CodeInjection(); + + if (!options.release.inject) { + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); + } else if (!options.release.name) { + logger.debug( + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." + ); + } else { + staticInjectionCode.append( + generateReleaseInjectorCode({ + release: options.release.name, + injectBuildInformation: options._experiments.injectBuildInformation || false, + }) + ); + } + + if (Object.keys(bundleMetadata).length > 0) { + staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); + } + + // Component annotation warning + if (options.reactComponentAnnotation?.enabled) { + logger.warn( + "Component name annotation is not supported in esbuild. Please use a separate transform step or consider using a different bundler." + ); + } + + const transformReplace = Object.keys(replacementValues).length > 0; + + // Track entry points wrapped for debug ID injection + const debugIdWrappedPaths = new Set(); + + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Telemetry failures are acceptable + }); + + return { + name: pluginName, + setup({ initialOptions, onLoad, onResolve, onEnd }: EsbuildPluginBuild) { + // Release and/or metadata injection + if (!staticInjectionCode.isEmpty()) { + const virtualInjectionFilePath = path.resolve("_sentry-injection-stub"); + initialOptions.inject = initialOptions.inject || []; + initialOptions.inject.push(virtualInjectionFilePath); + + onResolve({ filter: /_sentry-injection-stub/ }, (args) => { + return { + path: args.path, + sideEffects: true, + pluginName, + }; + }); + + onLoad({ filter: /_sentry-injection-stub/ }, () => { + return { + loader: "js", + pluginName, + contents: staticInjectionCode.code(), + }; + }); + } + + // Bundle size optimizations + if (transformReplace) { + const replacementStringValues: Record = {}; + Object.entries(replacementValues).forEach(([key, value]) => { + replacementStringValues[key] = JSON.stringify(value); + }); + + initialOptions.define = { ...initialOptions.define, ...replacementStringValues }; + } + + // Debug ID injection - requires per-entry-point unique IDs + if (sourcemapsEnabled) { + // Clear state from previous builds (important for watch mode and test suites) + debugIdWrappedPaths.clear(); + + if (!initialOptions.bundle) { + logger.warn( + "The Sentry esbuild plugin only supports esbuild with `bundle: true` being set in the esbuild build options. Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps without `bundle: true`, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" + ); + } + + // Wrap entry points to inject debug IDs + onResolve({ filter: /.*/ }, (args) => { + if (args.kind !== "entry-point") { + return; + } + + // Skip injecting debug IDs into modules specified in the esbuild `inject` option + // since they're already part of the entry points + if (initialOptions.inject?.includes(args.path)) { + return; + } + + const resolvedPath = path.isAbsolute(args.path) + ? args.path + : path.join(args.resolveDir, args.path); + + // Skip injecting debug IDs into paths that have already been wrapped + if (debugIdWrappedPaths.has(resolvedPath)) { + return; + } + debugIdWrappedPaths.add(resolvedPath); + + return { + pluginName, + path: resolvedPath, + pluginData: { + isDebugIdProxy: true, + originalPath: args.path, + originalResolveDir: args.resolveDir, + }, + // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse + // the module tree any further down past the proxy module because we're essentially creating a dependency + // loop back to the proxy module. + // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, + // making it re-resolve the entrypoint when it is imported from the proxy module. + // Super confusing? Yes. Works? Apparently... Let's see. + suffix: "?sentryDebugIdProxy=true", + }; + }); + + onLoad({ filter: /.*/ }, (args) => { + if (!(args.pluginData as { isDebugIdProxy?: boolean })?.isDebugIdProxy) { + return null; + } + + const originalPath = (args.pluginData as { originalPath: string }).originalPath; + const originalResolveDir = (args.pluginData as { originalResolveDir: string }) + .originalResolveDir; + + return { + loader: "js", + pluginName, + contents: ` + import "_sentry-debug-id-injection-stub"; + import * as OriginalModule from ${JSON.stringify(originalPath)}; + export default OriginalModule.default; + export * from ${JSON.stringify(originalPath)};`, + resolveDir: originalResolveDir, + }; + }); + + onResolve({ filter: /_sentry-debug-id-injection-stub/ }, (args) => { + return { + path: args.path, + sideEffects: true, + pluginName, + namespace: "sentry-debug-id-stub", + suffix: `?sentry-module-id=${randomUUID()}`, + }; + }); + + onLoad( + { filter: /_sentry-debug-id-injection-stub/, namespace: "sentry-debug-id-stub" }, + () => { + return { + loader: "js", + pluginName, + contents: getDebugIdSnippet(randomUUID()).code(), + }; + } + ); + } + + // Create release and optionally upload + const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); + + initialOptions.metafile = true; + onEnd(async (result) => { + try { + await sentryBuildPluginManager.createRelease(); + + if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { + const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; + await upload(buildArtifacts); + } + } finally { + freeGlobalDependencyOnBuildArtifacts(); + await sentryBuildPluginManager.deleteArtifacts(); + } + }); + }, + }; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export default sentryEsbuildPlugin; +export type { Options as SentryEsbuildPluginOptions } from "../core"; +export { sentryCliBinaryExists } from "../core"; diff --git a/packages/bundler-plugins/src/rollup/index.ts b/packages/bundler-plugins/src/rollup/index.ts new file mode 100644 index 000000000000..926e4c47f5e5 --- /dev/null +++ b/packages/bundler-plugins/src/rollup/index.ts @@ -0,0 +1,265 @@ +import type { Options } from "../core"; +import { + createSentryBuildPluginManager, + generateReleaseInjectorCode, + generateModuleMetadataInjectorCode, + isJsFile, + shouldSkipCodeInjection, + getDebugIdSnippet, + stringToUUID, + COMMENT_USE_STRICT_REGEX, + createDebugIdUploadFunction, + globFiles, + createComponentNameAnnotateHooks, + replaceBooleanFlagsInCode, + CodeInjection, +} from "../core"; +import type { SourceMap } from "magic-string"; +import MagicString from "magic-string"; +import type { TransformResult } from "rollup"; +import * as path from "node:path"; +import { createRequire } from "node:module"; + +function hasExistingDebugID(code: string): boolean { + // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) + const chunkStartSnippet = code.slice(0, 6000); + const chunkEndSnippet = code.slice(-500); + + if ( + chunkStartSnippet.includes("_sentryDebugIdIdentifier") || + chunkEndSnippet.includes("//# debugId=") + ) { + return true; // Debug ID already present, skip injection + } + + return false; +} + +function getRollupMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - Rollup already transpiles this for us + const req = createRequire(import.meta.url); + const rollup = req("rollup") as { VERSION?: string }; + return rollup.VERSION?.split(".")[0]; + } catch { + // do nothing, we'll just not report a version + } + + return undefined; +} + +/** + * @ignore - this is the internal plugin factory function only used for the Vite plugin! + */ +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function _rollupPluginInternal( + userOptions: Options = {}, + buildTool: "rollup" | "vite", + buildToolMajorVersion?: string +) { + const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { + loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[sentry-${buildTool}-plugin]`, + buildTool, + buildToolMajorVersion: buildToolMajorVersion || getRollupMajorVersion(), + }); + + const { + logger, + normalizedOptions: options, + bundleSizeOptimizationReplacementValues: replacementValues, + bundleMetadata, + createDependencyOnBuildArtifacts, + } = sentryBuildPluginManager; + + if (options.disable) { + return { + name: "sentry-noop-plugin", + }; + } + + if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { + logger.warn( + "Running Sentry plugin from within a `node_modules` folder. Some features may not work." + ); + } + + const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); + const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); + const sourcemapsEnabled = options.sourcemaps?.disable !== true; + const staticInjectionCode = new CodeInjection(); + + if (!options.release.inject) { + logger.debug( + "Release injection disabled via `release.inject` option. Will not inject release." + ); + } else if (!options.release.name) { + logger.debug( + "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." + ); + } else { + staticInjectionCode.append( + generateReleaseInjectorCode({ + release: options.release.name, + injectBuildInformation: options._experiments.injectBuildInformation || false, + }) + ); + } + + if (Object.keys(bundleMetadata).length > 0) { + staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); + } + + const transformAnnotations = options.reactComponentAnnotation?.enabled + ? createComponentNameAnnotateHooks( + options.reactComponentAnnotation?.ignoredComponents || [], + !!options.reactComponentAnnotation?._experimentalInjectIntoHtml + ) + : undefined; + + const transformReplace = Object.keys(replacementValues).length > 0; + const shouldTransform = transformAnnotations || transformReplace; + + function buildStart(): void { + void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { + // Telemetry failures are acceptable + }); + } + + async function transform(code: string, id: string): Promise { + // Component annotations are only in user code and boolean flag replacements are + // only in Sentry code. If we successfully add annotations, we can return early. + + if (transformAnnotations?.transform) { + const result = await transformAnnotations.transform(code, id); + if (result) { + return result; + } + } + + if (transformReplace) { + return replaceBooleanFlagsInCode(code, replacementValues); + } + + return null; + } + + function renderChunk( + code: string, + chunk: { fileName: string; facadeModuleId?: string | null }, + _?: unknown, + meta?: { magicString?: MagicString } + ): { + code: string; + map?: SourceMap; + } | null { + if (!isJsFile(chunk.fileName)) { + return null; // returning null means not modifying the chunk at all + } + + // Skip empty chunks and HTML facade chunks (Vite MPA) + if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { + return null; + } + + const injectCode = staticInjectionCode.clone(); + + if (sourcemapsEnabled && !hasExistingDebugID(code)) { + const debugId = stringToUUID(code); // generate a deterministic debug ID + injectCode.append(getDebugIdSnippet(debugId)); + } + + if (injectCode.isEmpty()) { + return null; + } + + const ms = meta?.magicString || new MagicString(code, { filename: chunk.fileName }); + const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; + + if (match) { + // Add injected code after any comments or "use strict" at the beginning of the bundle. + ms.appendLeft(match.length, injectCode.code()); + } else { + // ms.replace() doesn't work when there is an empty string match (which happens if + // there is neither, a comment, nor a "use strict" at the top of the chunk) so we + // need this special case here. + ms.prepend(injectCode.code()); + } + + // Rolldown can pass a native MagicString instance in meta.magicString + // https://rolldown.rs/in-depth/native-magic-string#usage-examples + if (ms?.constructor?.name === "BindingMagicString") { + // Rolldown docs say to return the magic string instance directly in this case + return { code: ms as unknown as string }; + } + + return { + code: ms.toString(), + map: ms.generateMap({ file: chunk.fileName, hires: "boundary" as unknown as undefined }), + }; + } + + async function writeBundle( + outputOptions: { dir?: string; file?: string }, + bundle: { [fileName: string]: unknown } + ): Promise { + try { + await sentryBuildPluginManager.createRelease(); + + if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { + if (outputOptions.dir) { + const outputDir = outputOptions.dir; + const JS_AND_MAP_PATTERNS = [ + "/**/*.js", + "/**/*.mjs", + "/**/*.cjs", + "/**/*.js.map", + "/**/*.mjs.map", + "/**/*.cjs.map", + ].map((q) => `${q}?(\\?*)?(#*)`); // We want to allow query and hash strings at the end of files + const buildArtifacts = await globFiles(JS_AND_MAP_PATTERNS, { root: outputDir }); + await upload(buildArtifacts); + } else if (outputOptions.file) { + await upload([outputOptions.file]); + } else { + const buildArtifacts = Object.keys(bundle).map((asset) => + path.join(path.resolve(), asset) + ); + await upload(buildArtifacts); + } + } + } finally { + freeGlobalDependencyOnBuildArtifacts(); + await sentryBuildPluginManager.deleteArtifacts(); + } + } + + const name = `sentry-${buildTool}-plugin`; + + if (shouldTransform) { + return { + name, + buildStart, + transform, + renderChunk, + writeBundle, + }; + } + + return { + name, + buildStart, + renderChunk, + writeBundle, + }; +} + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-explicit-any +export function sentryRollupPlugin(userOptions: Options = {}): any { + // We return an array here so we don't break backwards compatibility with what + // unplugin used to return + return [_rollupPluginInternal(userOptions, "rollup")]; +} + +export type { Options as SentryRollupPluginOptions } from "../core"; +export { sentryCliBinaryExists } from "../core"; diff --git a/packages/bundler-plugins/src/vite/index.ts b/packages/bundler-plugins/src/vite/index.ts new file mode 100644 index 000000000000..6ca804ea884f --- /dev/null +++ b/packages/bundler-plugins/src/vite/index.ts @@ -0,0 +1,34 @@ +import type { SentryRollupPluginOptions } from "../rollup"; +import { _rollupPluginInternal } from "../rollup"; +import { createRequire } from "node:module"; + +interface SentryVitePlugin { + name: string; + enforce: "pre"; +} + +function getViteMajorVersion(): string | undefined { + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - Rollup already transpiles this for us + const req = createRequire(import.meta.url); + const vite = req("vite") as { version?: string }; + return vite.version?.split(".")[0]; + } catch { + // do nothing, we'll just not report a version + } + + return undefined; +} + +export const sentryVitePlugin = (options?: SentryRollupPluginOptions): SentryVitePlugin[] => { + return [ + { + enforce: "pre", + ..._rollupPluginInternal(options, "vite", getViteMajorVersion()), + }, + ]; +}; + +export type { Options as SentryVitePluginOptions } from "../core"; +export { sentryCliBinaryExists } from "../core"; diff --git a/packages/webpack-plugin/src/component-annotation-transform.ts b/packages/bundler-plugins/src/webpack/component-annotation-transform.ts similarity index 100% rename from packages/webpack-plugin/src/component-annotation-transform.ts rename to packages/bundler-plugins/src/webpack/component-annotation-transform.ts diff --git a/packages/bundler-plugins/src/webpack/index.ts b/packages/bundler-plugins/src/webpack/index.ts new file mode 100644 index 000000000000..a63ffaa21049 --- /dev/null +++ b/packages/bundler-plugins/src/webpack/index.ts @@ -0,0 +1,18 @@ +import type { SentryWebpackPluginOptions } from "./webpack4and5"; +import { sentryWebpackPluginFactory } from "./webpack4and5"; +import * as webpack4or5 from "webpack"; + +const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPlugin; + +const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = + sentryWebpackPluginFactory({ + BannerPlugin, + DefinePlugin, + }); + +export { sentryCliBinaryExists } from "../core"; + +export type { SentryWebpackPluginOptions }; diff --git a/packages/webpack-plugin/src/webpack4and5.ts b/packages/bundler-plugins/src/webpack/webpack4and5.ts similarity index 90% rename from packages/webpack-plugin/src/webpack4and5.ts rename to packages/bundler-plugins/src/webpack/webpack4and5.ts index a89aee6e7570..4a006dc89487 100644 --- a/packages/webpack-plugin/src/webpack4and5.ts +++ b/packages/bundler-plugins/src/webpack/webpack4and5.ts @@ -1,4 +1,4 @@ -import type { Options } from "@sentry/bundler-plugin-core"; +import type { Options } from "../core/index"; import { createSentryBuildPluginManager, generateReleaseInjectorCode, @@ -8,22 +8,34 @@ import { CodeInjection, getDebugIdSnippet, createDebugIdUploadFunction, -} from "@sentry/bundler-plugin-core"; +} from "../core/index"; import * as path from "node:path"; import { fileURLToPath } from "node:url"; import { createRequire } from "node:module"; import { randomUUID } from "node:crypto"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore Rollup transpiles import.meta for us for CJS -const dirname = path.dirname(fileURLToPath(import.meta.url)); - -const COMPONENT_ANNOTATION_LOADER = path.resolve( - dirname, - typeof __dirname !== "undefined" - ? "component-annotation-transform.js" // CJS - : "component-annotation-transform.mjs" // ESM -); +const _req = createRequire(import.meta.url); + +// Resolve the loader path via the package's own exports. +// webpack4and5.ts may end up in a shared chunk (_chunks/) whose import.meta.url +// does not point to the webpack/ directory where the transform file lives, so +// a path-relative lookup would fail. Using require.resolve on the package export +// always finds the correct installed file regardless of chunk placement. +let COMPONENT_ANNOTATION_LOADER: string; +try { + COMPONENT_ANNOTATION_LOADER = _req.resolve("@sentry/bundler-plugins/webpack-loader"); +} catch { + // Fallback for non-packaged environments (e.g., monorepo source runs without dist) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Rollup transpiles import.meta for us for CJS + const dirname = path.dirname(fileURLToPath(import.meta.url)); + COMPONENT_ANNOTATION_LOADER = path.resolve( + dirname, + typeof __dirname !== "undefined" + ? "component-annotation-transform.js" // CJS + : "component-annotation-transform.mjs" // ESM + ); +} // since webpack 5.1 compiler contains webpack module so plugins always use correct webpack version // https://github.com/webpack/webpack/commit/65eca2e529ce1d79b79200d4bdb1ce1b81141459 diff --git a/packages/bundler-plugins/src/webpack/webpack5.ts b/packages/bundler-plugins/src/webpack/webpack5.ts new file mode 100644 index 000000000000..410b660cb3f0 --- /dev/null +++ b/packages/bundler-plugins/src/webpack/webpack5.ts @@ -0,0 +1,12 @@ +import type { SentryWebpackPluginOptions } from "./webpack4and5"; +import { sentryWebpackPluginFactory } from "./webpack4and5"; + +const createSentryWebpackPlugin = sentryWebpackPluginFactory(); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = + createSentryWebpackPlugin; + +export { sentryCliBinaryExists } from "../core"; + +export type { SentryWebpackPluginOptions }; diff --git a/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap b/packages/bundler-plugins/test/babel-plugin/__snapshots__/test-plugin.test.ts.snap similarity index 100% rename from packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap rename to packages/bundler-plugins/test/babel-plugin/__snapshots__/test-plugin.test.ts.snap diff --git a/packages/babel-plugin-component-annotate/test/experimental.test.ts b/packages/bundler-plugins/test/babel-plugin/experimental.test.ts similarity index 99% rename from packages/babel-plugin-component-annotate/test/experimental.test.ts rename to packages/bundler-plugins/test/babel-plugin/experimental.test.ts index 121582fff165..29b04dee515b 100644 --- a/packages/babel-plugin-component-annotate/test/experimental.test.ts +++ b/packages/bundler-plugins/test/babel-plugin/experimental.test.ts @@ -25,7 +25,7 @@ import { describe, it, expect } from "vitest"; import { transform } from "@babel/core"; -import { experimentalComponentNameAnnotatePlugin as plugin } from "../src/index"; +import { experimentalComponentNameAnnotatePlugin as plugin } from "../../src/babel-plugin/index"; const BananasPizzaAppStandardInput = `import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; diff --git a/packages/babel-plugin-component-annotate/test/sentry-label.test.ts b/packages/bundler-plugins/test/babel-plugin/sentry-label.test.ts similarity index 99% rename from packages/babel-plugin-component-annotate/test/sentry-label.test.ts rename to packages/bundler-plugins/test/babel-plugin/sentry-label.test.ts index e11f0af77321..822eb95f2ef4 100644 --- a/packages/babel-plugin-component-annotate/test/sentry-label.test.ts +++ b/packages/bundler-plugins/test/babel-plugin/sentry-label.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; import type { BabelFileResult } from "@babel/core"; import { transform } from "@babel/core"; -import plugin from "../src/index"; +import plugin from "../../src/babel-plugin/index"; function transformWith(code: string, opts: Record = {}): BabelFileResult | null { return transform(code, { diff --git a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts b/packages/bundler-plugins/test/babel-plugin/test-plugin.test.ts similarity index 99% rename from packages/babel-plugin-component-annotate/test/test-plugin.test.ts rename to packages/bundler-plugins/test/babel-plugin/test-plugin.test.ts index cb9b61eb4865..84d97796f56c 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/bundler-plugins/test/babel-plugin/test-plugin.test.ts @@ -25,7 +25,7 @@ import { describe, it, expect } from "vitest"; import { transform } from "@babel/core"; -import plugin from "../src/index"; +import plugin from "../../src/babel-plugin/index"; const BananasPizzaAppStandardInput = `import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; diff --git a/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap b/packages/bundler-plugins/test/core/__snapshots__/utils.test.ts.snap similarity index 100% rename from packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap rename to packages/bundler-plugins/test/core/__snapshots__/utils.test.ts.snap diff --git a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts b/packages/bundler-plugins/test/core/build-plugin-manager.test.ts similarity index 98% rename from packages/bundler-plugin-core/test/build-plugin-manager.test.ts rename to packages/bundler-plugins/test/core/build-plugin-manager.test.ts index 4dba33089fe7..49717c608e9f 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugins/test/core/build-plugin-manager.test.ts @@ -1,10 +1,10 @@ import { createSentryBuildPluginManager, _resetDeployedReleasesForTesting, -} from "../src/build-plugin-manager"; +} from "../../src/core/build-plugin-manager"; import fs from "fs"; -import { globFiles } from "../src/glob"; -import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; +import { globFiles } from "../../src/core/glob"; +import { prepareBundleForDebugIdUpload } from "../../src/core/debug-id-upload"; import type { MockedFunction } from "vitest"; import { describe, it, expect, afterEach, beforeEach, vi } from "vitest"; @@ -32,8 +32,8 @@ vi.mock("@sentry/cli", () => ({ }, })); -vi.mock("../src/sentry/telemetry", async () => ({ - ...(await vi.importActual("../src/sentry/telemetry")), +vi.mock("../../src/core/sentry/telemetry", async () => ({ + ...(await vi.importActual("../../src/core/sentry/telemetry")), safeFlushTelemetry: vi.fn(), })); @@ -42,8 +42,8 @@ vi.mock("@sentry/core", async () => ({ startSpan: vi.fn((options: unknown, callback: () => unknown) => callback()), })); -vi.mock("../src/glob"); -vi.mock("../src/debug-id-upload"); +vi.mock("../../src/core/glob"); +vi.mock("../../src/core/debug-id-upload"); const mockGlobFiles = globFiles as MockedFunction; const mockPrepareBundleForDebugIdUpload = diff --git a/packages/bundler-plugin-core/test/debug-id-upload.test.ts b/packages/bundler-plugins/test/core/debug-id-upload.test.ts similarity index 91% rename from packages/bundler-plugin-core/test/debug-id-upload.test.ts rename to packages/bundler-plugins/test/core/debug-id-upload.test.ts index 49ff8d4c91ec..f4651fea3832 100644 --- a/packages/bundler-plugin-core/test/debug-id-upload.test.ts +++ b/packages/bundler-plugins/test/core/debug-id-upload.test.ts @@ -2,9 +2,9 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; import * as fs from "fs"; import * as path from "path"; import * as os from "os"; -import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; -import type { RewriteSourcesHook } from "../src/types"; -import type { Logger } from "../src"; +import { prepareBundleForDebugIdUpload } from "../../src/core/debug-id-upload"; +import type { RewriteSourcesHook } from "../../src/core/types"; +import type { Logger } from "../../src/core"; describe("prepareBundleForDebugIdUpload", () => { let tmpDir: string; diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js b/packages/bundler-plugins/test/core/fixtures/deeply-nested-package/deeply/nested/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/index.js rename to packages/bundler-plugins/test/core/fixtures/deeply-nested-package/deeply/nested/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json b/packages/bundler-plugins/test/core/fixtures/deeply-nested-package/deeply/nested/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/deeply-nested-package/deeply/nested/package.json rename to packages/bundler-plugins/test/core/fixtures/deeply-nested-package/deeply/nested/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json b/packages/bundler-plugins/test/core/fixtures/deeply-nested-package/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/deeply-nested-package/package.json rename to packages/bundler-plugins/test/core/fixtures/deeply-nested-package/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js b/packages/bundler-plugins/test/core/fixtures/nested-error-package/deeply/nested/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/index.js rename to packages/bundler-plugins/test/core/fixtures/nested-error-package/deeply/nested/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json b/packages/bundler-plugins/test/core/fixtures/nested-error-package/deeply/nested/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-error-package/deeply/nested/package.json rename to packages/bundler-plugins/test/core/fixtures/nested-error-package/deeply/nested/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json b/packages/bundler-plugins/test/core/fixtures/nested-error-package/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-error-package/package.json rename to packages/bundler-plugins/test/core/fixtures/nested-error-package/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js b/packages/bundler-plugins/test/core/fixtures/nested-package/deeply/nested/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/index.js rename to packages/bundler-plugins/test/core/fixtures/nested-package/deeply/nested/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json b/packages/bundler-plugins/test/core/fixtures/nested-package/deeply/nested/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-package/deeply/nested/package.json rename to packages/bundler-plugins/test/core/fixtures/nested-package/deeply/nested/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/nested-package/package.json b/packages/bundler-plugins/test/core/fixtures/nested-package/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/nested-package/package.json rename to packages/bundler-plugins/test/core/fixtures/nested-package/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js b/packages/bundler-plugins/test/core/fixtures/no-valid-package/deeply/nested/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/index.js rename to packages/bundler-plugins/test/core/fixtures/no-valid-package/deeply/nested/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json b/packages/bundler-plugins/test/core/fixtures/no-valid-package/deeply/nested/package.json similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/no-valid-package/deeply/nested/package.json rename to packages/bundler-plugins/test/core/fixtures/no-valid-package/deeply/nested/package.json diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js b/packages/bundler-plugins/test/core/fixtures/resolve-source-maps/adjacent-sourcemap/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js rename to packages/bundler-plugins/test/core/fixtures/resolve-source-maps/adjacent-sourcemap/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map b/packages/bundler-plugins/test/core/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map rename to packages/bundler-plugins/test/core/fixtures/resolve-source-maps/adjacent-sourcemap/index.js.map diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js b/packages/bundler-plugins/test/core/fixtures/resolve-source-maps/separate-directory/bundles/index.js similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/bundles/index.js rename to packages/bundler-plugins/test/core/fixtures/resolve-source-maps/separate-directory/bundles/index.js diff --git a/packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map b/packages/bundler-plugins/test/core/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map similarity index 100% rename from packages/bundler-plugin-core/test/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map rename to packages/bundler-plugins/test/core/fixtures/resolve-source-maps/separate-directory/sourcemaps/index.js.map diff --git a/packages/bundler-plugin-core/test/glob.test.ts b/packages/bundler-plugins/test/core/glob.test.ts similarity index 99% rename from packages/bundler-plugin-core/test/glob.test.ts rename to packages/bundler-plugins/test/core/glob.test.ts index 808d3e91ff90..9411a7bc370e 100644 --- a/packages/bundler-plugin-core/test/glob.test.ts +++ b/packages/bundler-plugins/test/core/glob.test.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; import * as path from "path"; import * as os from "os"; -import { globFiles } from "../src/glob"; +import { globFiles } from "../../src/core/glob"; import { describe, it, expect, beforeEach, afterEach } from "vitest"; let tmpDir: string; diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugins/test/core/index.test.ts similarity index 97% rename from packages/bundler-plugin-core/test/index.test.ts rename to packages/bundler-plugins/test/core/index.test.ts index fe4c03f0465d..5f9ee192e385 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugins/test/core/index.test.ts @@ -1,5 +1,5 @@ -import { getDebugIdSnippet } from "../src"; -import { containsOnlyImports } from "../src/utils"; +import { getDebugIdSnippet } from "../../src/core"; +import { containsOnlyImports } from "../../src/core/utils"; import { describe, it, expect } from "vitest"; describe("getDebugIdSnippet", () => { diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugins/test/core/option-mappings.test.ts similarity index 98% rename from packages/bundler-plugin-core/test/option-mappings.test.ts rename to packages/bundler-plugins/test/core/option-mappings.test.ts index 7194adf33f1e..c50d5187789e 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugins/test/core/option-mappings.test.ts @@ -1,6 +1,6 @@ -import type { Options } from "../src"; -import type { NormalizedOptions } from "../src/options-mapping"; -import { normalizeUserOptions, validateOptions } from "../src/options-mapping"; +import type { Options } from "../../src/core"; +import type { NormalizedOptions } from "../../src/core/options-mapping"; +import { normalizeUserOptions, validateOptions } from "../../src/core/options-mapping"; import { describe, it, test, expect, afterEach, vi, beforeEach } from "vitest"; describe("normalizeUserOptions()", () => { diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugins/test/core/sentry/logger.test.ts similarity index 98% rename from packages/bundler-plugin-core/test/sentry/logger.test.ts rename to packages/bundler-plugins/test/core/sentry/logger.test.ts index 1bb5d4147a62..0e2655690846 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugins/test/core/sentry/logger.test.ts @@ -1,4 +1,4 @@ -import { createLogger } from "../../src/logger"; +import { createLogger } from "../../../src/core/logger"; import { describe, it, expect, vi, afterEach } from "vitest"; describe("Logger", () => { diff --git a/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts b/packages/bundler-plugins/test/core/sentry/resolve-source-maps.test.ts similarity index 97% rename from packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts rename to packages/bundler-plugins/test/core/sentry/resolve-source-maps.test.ts index 8a9530f8a5bb..b7a5a2af179c 100644 --- a/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts +++ b/packages/bundler-plugins/test/core/sentry/resolve-source-maps.test.ts @@ -1,8 +1,8 @@ import * as path from "path"; import * as fs from "fs"; import * as url from "url"; -import { determineSourceMapPathFromBundle } from "../../src/debug-id-upload"; -import { createLogger } from "../../src/logger"; +import { determineSourceMapPathFromBundle } from "../../../src/core/debug-id-upload"; +import { createLogger } from "../../../src/core/logger"; import { describe, it, expect, vi } from "vitest"; const logger = createLogger({ prefix: "[resolve-source-maps-test]", silent: false, debug: false }); diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugins/test/core/sentry/telemetry.test.ts similarity index 94% rename from packages/bundler-plugin-core/test/sentry/telemetry.test.ts rename to packages/bundler-plugins/test/core/sentry/telemetry.test.ts index 97e636161892..5474f6e55b97 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugins/test/core/sentry/telemetry.test.ts @@ -1,7 +1,10 @@ import type { Scope } from "@sentry/core"; -import type { NormalizedOptions } from "../../src/options-mapping"; -import { normalizeUserOptions } from "../../src/options-mapping"; -import { allowedToSendTelemetry, setTelemetryDataOnScope } from "../../src/sentry/telemetry"; +import type { NormalizedOptions } from "../../../src/core/options-mapping"; +import { normalizeUserOptions } from "../../../src/core/options-mapping"; +import { + allowedToSendTelemetry, + setTelemetryDataOnScope, +} from "../../../src/core/sentry/telemetry"; import { describe, it, expect, afterEach, beforeEach, vi } from "vitest"; const { mockCliExecute } = vi.hoisted(() => ({ diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugins/test/core/utils.test.ts similarity index 98% rename from packages/bundler-plugin-core/test/utils.test.ts rename to packages/bundler-plugins/test/core/utils.test.ts index 11a32135bbc2..e229cccd5020 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugins/test/core/utils.test.ts @@ -7,7 +7,7 @@ import { replaceBooleanFlagsInCode, serializeIgnoreOptions, stringToUUID, -} from "../src/utils"; +} from "../../src/core/utils"; import fs from "fs"; import { describe, it, expect, test, vi } from "vitest"; @@ -23,7 +23,7 @@ describe("getPackageJson", () => { test("it works for this package", () => { const packageJson = getPackageJson(); // eslint-disable-next-line @typescript-eslint/no-var-requires - const expected = require("../package.json") as PackageJson; + const expected = require("../../package.json") as PackageJson; expect(packageJson).toEqual(expected); }); diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/bundler-plugins/test/esbuild/public-api.test.ts similarity index 91% rename from packages/esbuild-plugin/test/public-api.test.ts rename to packages/bundler-plugins/test/esbuild/public-api.test.ts index a540fc0e5c34..04a694e2c9a9 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/bundler-plugins/test/esbuild/public-api.test.ts @@ -1,4 +1,4 @@ -import { sentryEsbuildPlugin } from "../src"; +import { sentryEsbuildPlugin } from "../../src/esbuild"; import type { Plugin } from "esbuild"; import { describe, it, expect, test } from "vitest"; diff --git a/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap b/packages/bundler-plugins/test/rollup/__snapshots__/public-api.test.ts.snap similarity index 100% rename from packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap rename to packages/bundler-plugins/test/rollup/__snapshots__/public-api.test.ts.snap diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/bundler-plugins/test/rollup/public-api.test.ts similarity index 99% rename from packages/rollup-plugin/test/public-api.test.ts rename to packages/bundler-plugins/test/rollup/public-api.test.ts index c0f6dc9c548c..3b4113c009b2 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/bundler-plugins/test/rollup/public-api.test.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "../src"; +import { sentryRollupPlugin } from "../../src/rollup"; import type { Plugin, SourceMap } from "rollup"; import { describe, it, expect, test, beforeEach, vi } from "vitest"; diff --git a/packages/bundler-plugins/test/tsconfig.json b/packages/bundler-plugins/test/tsconfig.json new file mode 100644 index 000000000000..76d0c9cff6f2 --- /dev/null +++ b/packages/bundler-plugins/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/bundler-plugins/test/vite/public-api.test.ts similarity index 95% rename from packages/vite-plugin/test/public-api.test.ts rename to packages/bundler-plugins/test/vite/public-api.test.ts index 285cb4ce4b8a..43e93467146a 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/bundler-plugins/test/vite/public-api.test.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "../src"; +import { sentryVitePlugin } from "../../src/vite"; import { describe, it, expect, test, beforeEach, vi } from "vitest"; test("Vite plugin should exist", () => { diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/bundler-plugins/test/webpack/public-api.test.ts similarity index 91% rename from packages/webpack-plugin/test/public-api.test.ts rename to packages/bundler-plugins/test/webpack/public-api.test.ts index dbea8a52d444..098e48f28df0 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/bundler-plugins/test/webpack/public-api.test.ts @@ -1,5 +1,5 @@ import type { WebpackPluginInstance } from "webpack"; -import { sentryWebpackPlugin } from "../src"; +import { sentryWebpackPlugin } from "../../src/webpack"; import { describe, it, expect, test } from "vitest"; test("Webpack plugin should exist", () => { diff --git a/packages/webpack-plugin/test/webpack5.test.ts b/packages/bundler-plugins/test/webpack/webpack5.test.ts similarity index 91% rename from packages/webpack-plugin/test/webpack5.test.ts rename to packages/bundler-plugins/test/webpack/webpack5.test.ts index 0134d113893e..b6ab5d8d64c5 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/bundler-plugins/test/webpack/webpack5.test.ts @@ -1,5 +1,5 @@ import type { WebpackPluginInstance } from "webpack"; -import { sentryWebpackPlugin } from "../src/index"; +import { sentryWebpackPlugin } from "../../src/webpack/index"; import { describe, it, expect, test } from "vitest"; test("Webpack plugin should exist", () => { diff --git a/packages/bundler-plugins/tsconfig.json b/packages/bundler-plugins/tsconfig.json new file mode 100644 index 000000000000..088fbb9b9bab --- /dev/null +++ b/packages/bundler-plugins/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/bundler-plugins/types.tsconfig.json b/packages/bundler-plugins/types.tsconfig.json new file mode 100644 index 000000000000..e427dd968049 --- /dev/null +++ b/packages/bundler-plugins/types.tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "emitDeclarationOnly": true, + "declarationDir": "./dist/types" + } +} diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 28783841da73..153bdb3709a7 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -43,16 +43,14 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "vitest run", "prepack": "node ./prepack.mjs" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0" + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" }, diff --git a/packages/esbuild-plugin/rollup.config.mjs b/packages/esbuild-plugin/rollup.config.mjs index 98d8b5dd8022..4e04614e760f 100644 --- a/packages/esbuild-plugin/rollup.config.mjs +++ b/packages/esbuild-plugin/rollup.config.mjs @@ -1,9 +1,11 @@ import packageJson from "./package.json" with { type: "json" }; +const deps = Object.keys(packageJson.dependencies ?? {}); + export default { platform: "node", input: ["src/index.ts"], - external: Object.keys(packageJson.dependencies), + external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), output: [ { file: packageJson.module, diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts index 8da22f9a6c20..80e70f701e51 100644 --- a/packages/esbuild-plugin/src/index.ts +++ b/packages/esbuild-plugin/src/index.ts @@ -1,312 +1,2 @@ -import type { Options } from "@sentry/bundler-plugin-core"; -import { - createSentryBuildPluginManager, - generateReleaseInjectorCode, - generateModuleMetadataInjectorCode, - getDebugIdSnippet, - createDebugIdUploadFunction, - CodeInjection, -} from "@sentry/bundler-plugin-core"; -import * as path from "node:path"; -import { createRequire } from "node:module"; -import { randomUUID } from "node:crypto"; - -interface EsbuildOnResolveArgs { - path: string; - kind: string; - importer?: string; - resolveDir: string; - pluginData?: unknown; -} - -interface EsbuildOnResolveResult { - path: string; - sideEffects?: boolean; - pluginName?: string; - namespace?: string; - suffix?: string; - pluginData?: unknown; -} - -interface EsbuildOnLoadArgs { - path: string; - pluginData?: unknown; -} - -interface EsbuildOnLoadResult { - loader: string; - pluginName: string; - contents: string; - resolveDir?: string; -} - -interface EsbuildOnEndArgs { - metafile?: { - outputs: Record; - }; -} - -interface EsbuildInitialOptions { - bundle?: boolean; - inject?: string[]; - metafile?: boolean; - define?: Record; -} - -interface EsbuildPluginBuild { - initialOptions: EsbuildInitialOptions; - onLoad: ( - options: { filter: RegExp; namespace?: string }, - callback: (args: EsbuildOnLoadArgs) => EsbuildOnLoadResult | null - ) => void; - onResolve: ( - options: { filter: RegExp }, - callback: (args: EsbuildOnResolveArgs) => EsbuildOnResolveResult | undefined - ) => void; - onEnd: (callback: (result: EsbuildOnEndArgs) => void | Promise) => void; -} - -function getEsbuildMajorVersion(): string | undefined { - try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - esbuild transpiles this for us - const req = createRequire(import.meta.url); - const esbuild = req("esbuild") as { version?: string }; - // esbuild hasn't released a v1 yet, so we'll return the minor version as the major version - return esbuild.version?.split(".")[1]; - } catch { - // do nothing, we'll just not report a version - } - - return undefined; -} - -const pluginName = "sentry-esbuild-plugin"; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function sentryEsbuildPlugin(userOptions: Options = {}): any { - const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { - loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[${pluginName}]`, - buildTool: "esbuild", - buildToolMajorVersion: getEsbuildMajorVersion(), - }); - - const { - logger, - normalizedOptions: options, - bundleSizeOptimizationReplacementValues: replacementValues, - bundleMetadata, - createDependencyOnBuildArtifacts, - } = sentryBuildPluginManager; - - if (options.disable) { - return { - name: "sentry-esbuild-noop-plugin", - setup() { - // noop plugin - }, - }; - } - - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { - logger.warn( - "Running Sentry plugin from within a `node_modules` folder. Some features may not work." - ); - } - - const sourcemapsEnabled = options.sourcemaps?.disable !== true; - const staticInjectionCode = new CodeInjection(); - - if (!options.release.inject) { - logger.debug( - "Release injection disabled via `release.inject` option. Will not inject release." - ); - } else if (!options.release.name) { - logger.debug( - "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." - ); - } else { - staticInjectionCode.append( - generateReleaseInjectorCode({ - release: options.release.name, - injectBuildInformation: options._experiments.injectBuildInformation || false, - }) - ); - } - - if (Object.keys(bundleMetadata).length > 0) { - staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); - } - - // Component annotation warning - if (options.reactComponentAnnotation?.enabled) { - logger.warn( - "Component name annotation is not supported in esbuild. Please use a separate transform step or consider using a different bundler." - ); - } - - const transformReplace = Object.keys(replacementValues).length > 0; - - // Track entry points wrapped for debug ID injection - const debugIdWrappedPaths = new Set(); - - void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { - // Telemetry failures are acceptable - }); - - return { - name: pluginName, - setup({ initialOptions, onLoad, onResolve, onEnd }: EsbuildPluginBuild) { - // Release and/or metadata injection - if (!staticInjectionCode.isEmpty()) { - const virtualInjectionFilePath = path.resolve("_sentry-injection-stub"); - initialOptions.inject = initialOptions.inject || []; - initialOptions.inject.push(virtualInjectionFilePath); - - onResolve({ filter: /_sentry-injection-stub/ }, (args) => { - return { - path: args.path, - sideEffects: true, - pluginName, - }; - }); - - onLoad({ filter: /_sentry-injection-stub/ }, () => { - return { - loader: "js", - pluginName, - contents: staticInjectionCode.code(), - }; - }); - } - - // Bundle size optimizations - if (transformReplace) { - const replacementStringValues: Record = {}; - Object.entries(replacementValues).forEach(([key, value]) => { - replacementStringValues[key] = JSON.stringify(value); - }); - - initialOptions.define = { ...initialOptions.define, ...replacementStringValues }; - } - - // Debug ID injection - requires per-entry-point unique IDs - if (sourcemapsEnabled) { - // Clear state from previous builds (important for watch mode and test suites) - debugIdWrappedPaths.clear(); - - if (!initialOptions.bundle) { - logger.warn( - "The Sentry esbuild plugin only supports esbuild with `bundle: true` being set in the esbuild build options. Esbuild will probably crash now. Sorry about that. If you need to upload sourcemaps without `bundle: true`, it is recommended to use Sentry CLI instead: https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/" - ); - } - - // Wrap entry points to inject debug IDs - onResolve({ filter: /.*/ }, (args) => { - if (args.kind !== "entry-point") { - return; - } - - // Skip injecting debug IDs into modules specified in the esbuild `inject` option - // since they're already part of the entry points - if (initialOptions.inject?.includes(args.path)) { - return; - } - - const resolvedPath = path.isAbsolute(args.path) - ? args.path - : path.join(args.resolveDir, args.path); - - // Skip injecting debug IDs into paths that have already been wrapped - if (debugIdWrappedPaths.has(resolvedPath)) { - return; - } - debugIdWrappedPaths.add(resolvedPath); - - return { - pluginName, - path: resolvedPath, - pluginData: { - isDebugIdProxy: true, - originalPath: args.path, - originalResolveDir: args.resolveDir, - }, - // We need to add a suffix here, otherwise esbuild will mark the entrypoint as resolved and won't traverse - // the module tree any further down past the proxy module because we're essentially creating a dependency - // loop back to the proxy module. - // By setting a suffix we're telling esbuild that the entrypoint and proxy module are two different things, - // making it re-resolve the entrypoint when it is imported from the proxy module. - // Super confusing? Yes. Works? Apparently... Let's see. - suffix: "?sentryDebugIdProxy=true", - }; - }); - - onLoad({ filter: /.*/ }, (args) => { - if (!(args.pluginData as { isDebugIdProxy?: boolean })?.isDebugIdProxy) { - return null; - } - - const originalPath = (args.pluginData as { originalPath: string }).originalPath; - const originalResolveDir = (args.pluginData as { originalResolveDir: string }) - .originalResolveDir; - - return { - loader: "js", - pluginName, - contents: ` - import "_sentry-debug-id-injection-stub"; - import * as OriginalModule from ${JSON.stringify(originalPath)}; - export default OriginalModule.default; - export * from ${JSON.stringify(originalPath)};`, - resolveDir: originalResolveDir, - }; - }); - - onResolve({ filter: /_sentry-debug-id-injection-stub/ }, (args) => { - return { - path: args.path, - sideEffects: true, - pluginName, - namespace: "sentry-debug-id-stub", - suffix: `?sentry-module-id=${randomUUID()}`, - }; - }); - - onLoad( - { filter: /_sentry-debug-id-injection-stub/, namespace: "sentry-debug-id-stub" }, - () => { - return { - loader: "js", - pluginName, - contents: getDebugIdSnippet(randomUUID()).code(), - }; - } - ); - } - - // Create release and optionally upload - const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); - const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); - - initialOptions.metafile = true; - onEnd(async (result) => { - try { - await sentryBuildPluginManager.createRelease(); - - if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { - const buildArtifacts = result.metafile ? Object.keys(result.metafile.outputs) : []; - await upload(buildArtifacts); - } - } finally { - freeGlobalDependencyOnBuildArtifacts(); - await sentryBuildPluginManager.deleteArtifacts(); - } - }); - }, - }; -} - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export default sentryEsbuildPlugin; -export type { Options as SentryEsbuildPluginOptions } from "@sentry/bundler-plugin-core"; -export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +export * from "@sentry/bundler-plugins/esbuild"; +export { default } from "@sentry/bundler-plugins/esbuild"; diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/packages/integration-tests-next/fixtures/esbuild/package.json index ae9341e288e9..b6f096660356 100644 --- a/packages/integration-tests-next/fixtures/esbuild/package.json +++ b/packages/integration-tests-next/fixtures/esbuild/package.json @@ -9,6 +9,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.3.0.tgz", "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/packages/integration-tests-next/fixtures/rolldown/package.json index 1aec87ac9ed8..43b95341e72d 100644 --- a/packages/integration-tests-next/fixtures/rolldown/package.json +++ b/packages/integration-tests-next/fixtures/rolldown/package.json @@ -10,6 +10,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/packages/integration-tests-next/fixtures/rollup3/package.json index 53cd21e6de8f..aa29336e6cba 100644 --- a/packages/integration-tests-next/fixtures/rollup3/package.json +++ b/packages/integration-tests-next/fixtures/rollup3/package.json @@ -12,6 +12,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/packages/integration-tests-next/fixtures/rollup4/package.json index 944d4479719b..5abcc7655ec8 100644 --- a/packages/integration-tests-next/fixtures/rollup4/package.json +++ b/packages/integration-tests-next/fixtures/rollup4/package.json @@ -12,6 +12,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/packages/integration-tests-next/fixtures/vite4/package.json index 0a10b4e92705..cd6089fcf975 100644 --- a/packages/integration-tests-next/fixtures/vite4/package.json +++ b/packages/integration-tests-next/fixtures/vite4/package.json @@ -11,6 +11,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", diff --git a/packages/integration-tests-next/fixtures/vite6/package.json b/packages/integration-tests-next/fixtures/vite6/package.json index 038495ef49b5..adf5500ed0f5 100644 --- a/packages/integration-tests-next/fixtures/vite6/package.json +++ b/packages/integration-tests-next/fixtures/vite6/package.json @@ -9,6 +9,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/packages/integration-tests-next/fixtures/vite7/package.json index 9a7ea8808a44..14b5d21ea82b 100644 --- a/packages/integration-tests-next/fixtures/vite7/package.json +++ b/packages/integration-tests-next/fixtures/vite7/package.json @@ -11,6 +11,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/packages/integration-tests-next/fixtures/vite8/package.json index 6843a41ab241..0ee48e392013 100644 --- a/packages/integration-tests-next/fixtures/vite8/package.json +++ b/packages/integration-tests-next/fixtures/vite8/package.json @@ -11,6 +11,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/packages/integration-tests-next/fixtures/webpack5/package.json index 7b4337019961..20bf49a2fe25 100644 --- a/packages/integration-tests-next/fixtures/webpack5/package.json +++ b/packages/integration-tests-next/fixtures/webpack5/package.json @@ -12,6 +12,7 @@ }, "pnpm": { "overrides": { + "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.3.0.tgz", "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index bef25022c47c..8bfa911a5afb 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -44,12 +44,10 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "vitest run", "prepack": "node ./prepack.mjs" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0", - "magic-string": "~0.30.8" + "@sentry/bundler-plugins": "5.3.0" }, "peerDependencies": { "rollup": ">=3.2.0" @@ -62,7 +60,6 @@ "devDependencies": { "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" }, diff --git a/packages/rollup-plugin/rollup.config.mjs b/packages/rollup-plugin/rollup.config.mjs index 98d8b5dd8022..4e04614e760f 100644 --- a/packages/rollup-plugin/rollup.config.mjs +++ b/packages/rollup-plugin/rollup.config.mjs @@ -1,9 +1,11 @@ import packageJson from "./package.json" with { type: "json" }; +const deps = Object.keys(packageJson.dependencies ?? {}); + export default { platform: "node", input: ["src/index.ts"], - external: Object.keys(packageJson.dependencies), + external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), output: [ { file: packageJson.module, diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts index 21c8ce7ac7ff..bd60cf6ca876 100644 --- a/packages/rollup-plugin/src/index.ts +++ b/packages/rollup-plugin/src/index.ts @@ -1,265 +1 @@ -import type { Options } from "@sentry/bundler-plugin-core"; -import { - createSentryBuildPluginManager, - generateReleaseInjectorCode, - generateModuleMetadataInjectorCode, - isJsFile, - shouldSkipCodeInjection, - getDebugIdSnippet, - stringToUUID, - COMMENT_USE_STRICT_REGEX, - createDebugIdUploadFunction, - globFiles, - createComponentNameAnnotateHooks, - replaceBooleanFlagsInCode, - CodeInjection, -} from "@sentry/bundler-plugin-core"; -import type { SourceMap } from "magic-string"; -import MagicString from "magic-string"; -import type { TransformResult } from "rollup"; -import * as path from "node:path"; -import { createRequire } from "node:module"; - -function hasExistingDebugID(code: string): boolean { - // Check if a debug ID has already been injected to avoid duplicate injection (e.g. by another plugin or Sentry CLI) - const chunkStartSnippet = code.slice(0, 6000); - const chunkEndSnippet = code.slice(-500); - - if ( - chunkStartSnippet.includes("_sentryDebugIdIdentifier") || - chunkEndSnippet.includes("//# debugId=") - ) { - return true; // Debug ID already present, skip injection - } - - return false; -} - -function getRollupMajorVersion(): string | undefined { - try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - Rollup already transpiles this for us - const req = createRequire(import.meta.url); - const rollup = req("rollup") as { VERSION?: string }; - return rollup.VERSION?.split(".")[0]; - } catch { - // do nothing, we'll just not report a version - } - - return undefined; -} - -/** - * @ignore - this is the internal plugin factory function only used for the Vite plugin! - */ -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function _rollupPluginInternal( - userOptions: Options = {}, - buildTool: "rollup" | "vite", - buildToolMajorVersion?: string -) { - const sentryBuildPluginManager = createSentryBuildPluginManager(userOptions, { - loggerPrefix: userOptions._metaOptions?.loggerPrefixOverride ?? `[sentry-${buildTool}-plugin]`, - buildTool, - buildToolMajorVersion: buildToolMajorVersion || getRollupMajorVersion(), - }); - - const { - logger, - normalizedOptions: options, - bundleSizeOptimizationReplacementValues: replacementValues, - bundleMetadata, - createDependencyOnBuildArtifacts, - } = sentryBuildPluginManager; - - if (options.disable) { - return { - name: "sentry-noop-plugin", - }; - } - - if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) { - logger.warn( - "Running Sentry plugin from within a `node_modules` folder. Some features may not work." - ); - } - - const freeGlobalDependencyOnBuildArtifacts = createDependencyOnBuildArtifacts(); - const upload = createDebugIdUploadFunction({ sentryBuildPluginManager }); - const sourcemapsEnabled = options.sourcemaps?.disable !== true; - const staticInjectionCode = new CodeInjection(); - - if (!options.release.inject) { - logger.debug( - "Release injection disabled via `release.inject` option. Will not inject release." - ); - } else if (!options.release.name) { - logger.debug( - "No release name provided. Will not inject release. Please set the `release.name` option to identify your release." - ); - } else { - staticInjectionCode.append( - generateReleaseInjectorCode({ - release: options.release.name, - injectBuildInformation: options._experiments.injectBuildInformation || false, - }) - ); - } - - if (Object.keys(bundleMetadata).length > 0) { - staticInjectionCode.append(generateModuleMetadataInjectorCode(bundleMetadata)); - } - - const transformAnnotations = options.reactComponentAnnotation?.enabled - ? createComponentNameAnnotateHooks( - options.reactComponentAnnotation?.ignoredComponents || [], - !!options.reactComponentAnnotation?._experimentalInjectIntoHtml - ) - : undefined; - - const transformReplace = Object.keys(replacementValues).length > 0; - const shouldTransform = transformAnnotations || transformReplace; - - function buildStart(): void { - void sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal().catch(() => { - // Telemetry failures are acceptable - }); - } - - async function transform(code: string, id: string): Promise { - // Component annotations are only in user code and boolean flag replacements are - // only in Sentry code. If we successfully add annotations, we can return early. - - if (transformAnnotations?.transform) { - const result = await transformAnnotations.transform(code, id); - if (result) { - return result; - } - } - - if (transformReplace) { - return replaceBooleanFlagsInCode(code, replacementValues); - } - - return null; - } - - function renderChunk( - code: string, - chunk: { fileName: string; facadeModuleId?: string | null }, - _?: unknown, - meta?: { magicString?: MagicString } - ): { - code: string; - map?: SourceMap; - } | null { - if (!isJsFile(chunk.fileName)) { - return null; // returning null means not modifying the chunk at all - } - - // Skip empty chunks and HTML facade chunks (Vite MPA) - if (shouldSkipCodeInjection(code, chunk.facadeModuleId)) { - return null; - } - - const injectCode = staticInjectionCode.clone(); - - if (sourcemapsEnabled && !hasExistingDebugID(code)) { - const debugId = stringToUUID(code); // generate a deterministic debug ID - injectCode.append(getDebugIdSnippet(debugId)); - } - - if (injectCode.isEmpty()) { - return null; - } - - const ms = meta?.magicString || new MagicString(code, { filename: chunk.fileName }); - const match = code.match(COMMENT_USE_STRICT_REGEX)?.[0]; - - if (match) { - // Add injected code after any comments or "use strict" at the beginning of the bundle. - ms.appendLeft(match.length, injectCode.code()); - } else { - // ms.replace() doesn't work when there is an empty string match (which happens if - // there is neither, a comment, nor a "use strict" at the top of the chunk) so we - // need this special case here. - ms.prepend(injectCode.code()); - } - - // Rolldown can pass a native MagicString instance in meta.magicString - // https://rolldown.rs/in-depth/native-magic-string#usage-examples - if (ms?.constructor?.name === "BindingMagicString") { - // Rolldown docs say to return the magic string instance directly in this case - return { code: ms as unknown as string }; - } - - return { - code: ms.toString(), - map: ms.generateMap({ file: chunk.fileName, hires: "boundary" as unknown as undefined }), - }; - } - - async function writeBundle( - outputOptions: { dir?: string; file?: string }, - bundle: { [fileName: string]: unknown } - ): Promise { - try { - await sentryBuildPluginManager.createRelease(); - - if (sourcemapsEnabled && options.sourcemaps?.disable !== "disable-upload") { - if (outputOptions.dir) { - const outputDir = outputOptions.dir; - const JS_AND_MAP_PATTERNS = [ - "/**/*.js", - "/**/*.mjs", - "/**/*.cjs", - "/**/*.js.map", - "/**/*.mjs.map", - "/**/*.cjs.map", - ].map((q) => `${q}?(\\?*)?(#*)`); // We want to allow query and hash strings at the end of files - const buildArtifacts = await globFiles(JS_AND_MAP_PATTERNS, { root: outputDir }); - await upload(buildArtifacts); - } else if (outputOptions.file) { - await upload([outputOptions.file]); - } else { - const buildArtifacts = Object.keys(bundle).map((asset) => - path.join(path.resolve(), asset) - ); - await upload(buildArtifacts); - } - } - } finally { - freeGlobalDependencyOnBuildArtifacts(); - await sentryBuildPluginManager.deleteArtifacts(); - } - } - - const name = `sentry-${buildTool}-plugin`; - - if (shouldTransform) { - return { - name, - buildStart, - transform, - renderChunk, - writeBundle, - }; - } - - return { - name, - buildStart, - renderChunk, - writeBundle, - }; -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-explicit-any -export function sentryRollupPlugin(userOptions: Options = {}): any { - // We return an array here so we don't break backwards compatibility with what - // unplugin used to return - return [_rollupPluginInternal(userOptions, "rollup")]; -} - -export type { Options as SentryRollupPluginOptions } from "@sentry/bundler-plugin-core"; -export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +export * from "@sentry/bundler-plugins/rollup"; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index a113eaaaddec..16075874465f 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -43,17 +43,14 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "vitest run", "prepack": "node ./prepack.mjs" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0", - "@sentry/rollup-plugin": "5.3.0" + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", - "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0" }, diff --git a/packages/vite-plugin/rollup.config.mjs b/packages/vite-plugin/rollup.config.mjs index 98d8b5dd8022..4e04614e760f 100644 --- a/packages/vite-plugin/rollup.config.mjs +++ b/packages/vite-plugin/rollup.config.mjs @@ -1,9 +1,11 @@ import packageJson from "./package.json" with { type: "json" }; +const deps = Object.keys(packageJson.dependencies ?? {}); + export default { platform: "node", input: ["src/index.ts"], - external: Object.keys(packageJson.dependencies), + external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), output: [ { file: packageJson.module, diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index c4fc5620a8d8..d8ab78aac088 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -1,34 +1 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; -import { _rollupPluginInternal } from "@sentry/rollup-plugin"; -import { createRequire } from "node:module"; - -interface SentryVitePlugin { - name: string; - enforce: "pre"; -} - -function getViteMajorVersion(): string | undefined { - try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - Rollup already transpiles this for us - const req = createRequire(import.meta.url); - const vite = req("vite") as { version?: string }; - return vite.version?.split(".")[0]; - } catch { - // do nothing, we'll just not report a version - } - - return undefined; -} - -export const sentryVitePlugin = (options?: SentryRollupPluginOptions): SentryVitePlugin[] => { - return [ - { - enforce: "pre", - ..._rollupPluginInternal(options, "vite", getViteMajorVersion()), - }, - ]; -}; - -export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; -export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; +export * from "@sentry/bundler-plugins/vite"; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index a8c391303041..d3677ac38302 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -48,17 +48,15 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "vitest run", "prepack": "node ./prepack.mjs" }, "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0" + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { "@sentry-internal/dev-utils": "5.3.0", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", - "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0", "webpack": "5.76.0" diff --git a/packages/webpack-plugin/rollup.config.mjs b/packages/webpack-plugin/rollup.config.mjs index 3895fc9cd2e0..0b39609fd8b0 100644 --- a/packages/webpack-plugin/rollup.config.mjs +++ b/packages/webpack-plugin/rollup.config.mjs @@ -3,8 +3,11 @@ import modulePackage from "module"; export default { platform: "node", - input: ["src/index.ts", "src/webpack5.ts", "src/component-annotation-transform.ts"], - external: [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules, "webpack"], + input: ["src/index.ts", "src/webpack5.ts"], + external: (id) => + [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules].some( + (dep) => id === dep || id.startsWith(`${dep}/`) + ), output: [ { dir: "./dist/esm", diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts index 8e329568ceac..8319369de49e 100644 --- a/packages/webpack-plugin/src/index.ts +++ b/packages/webpack-plugin/src/index.ts @@ -1,18 +1 @@ -import type { SentryWebpackPluginOptions } from "./webpack4and5"; -import { sentryWebpackPluginFactory } from "./webpack4and5"; -import * as webpack4or5 from "webpack"; - -const BannerPlugin = webpack4or5?.BannerPlugin || webpack4or5?.default?.BannerPlugin; - -const DefinePlugin = webpack4or5?.DefinePlugin || webpack4or5?.default?.DefinePlugin; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = - sentryWebpackPluginFactory({ - BannerPlugin, - DefinePlugin, - }); - -export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; - -export type { SentryWebpackPluginOptions }; +export * from "@sentry/bundler-plugins/webpack"; diff --git a/packages/webpack-plugin/src/webpack5.ts b/packages/webpack-plugin/src/webpack5.ts index fb77007c1144..86e5b39d3e6c 100644 --- a/packages/webpack-plugin/src/webpack5.ts +++ b/packages/webpack-plugin/src/webpack5.ts @@ -1,12 +1 @@ -import type { SentryWebpackPluginOptions } from "./webpack4and5"; -import { sentryWebpackPluginFactory } from "./webpack4and5"; - -const createSentryWebpackPlugin = sentryWebpackPluginFactory(); - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const sentryWebpackPlugin: (options?: SentryWebpackPluginOptions) => any = - createSentryWebpackPlugin; - -export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; - -export type { SentryWebpackPluginOptions }; +export * from "@sentry/bundler-plugins/webpack5"; diff --git a/yarn.lock b/yarn.lock index 9db5b31f8712..fab98a7089ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -23,27 +23,6 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.18.5": - version "7.18.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" - integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.5" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.5" - "@babel/types" "^7.18.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - "@babel/core@^7.18.5": version "7.24.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" @@ -65,7 +44,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.18.2", "@babel/generator@^7.23.6": +"@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== @@ -82,7 +61,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -120,7 +99,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.23.3": +"@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== @@ -165,7 +144,7 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helpers@^7.18.2", "@babel/helpers@^7.24.0": +"@babel/helpers@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== @@ -183,7 +162,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== @@ -240,7 +219,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.23.3" -"@babel/template@^7.16.7", "@babel/template@^7.22.15", "@babel/template@^7.24.0": +"@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -249,7 +228,7 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.18.5", "@babel/traverse@^7.24.0": +"@babel/traverse@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== @@ -265,7 +244,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.4", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -289,13 +268,6 @@ dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" - integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== - dependencies: - tslib "^2.4.0" - "@emnapi/wasi-threads@1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" @@ -2055,11 +2027,6 @@ content-type@~1.0.4: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -3160,7 +3127,7 @@ json-schema-traverse@^0.4.1: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: +json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -3348,7 +3315,7 @@ ms@2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@^3.3.11, nanoid@^3.3.6: +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== @@ -3966,7 +3933,7 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.3.0, semver@^6.3.1: +semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -4053,7 +4020,7 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -source-map-js@^1.0.2, source-map-js@^1.2.1: +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== From 12bd9a79ae0a457387f4c072cf52ca65ef99d51b Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 4 Jun 2026 13:22:04 -0700 Subject: [PATCH 638/640] chore: isolate the bundler-plugins package for merge - Remove all contents that are not going to be ported to the sentry-javascript monorepo. - Move the integration tests into a suitable location. --- .craft.yml | 23 - .devcontainer/Dockerfile | 10 - .devcontainer/devcontainer.json | 36 - .gitattributes | 1 - .github/dependency-review-config.yml | 4 - .github/workflows/checks.yml | 218 - .github/workflows/codeql.yml | 73 - .../workflows/enforce-license-complience.yml | 16 - .github/workflows/release.yml | 40 - .gitignore | 15 - .oxfmtrc.json | 11 - .oxlintrc.base.json | 164 - .oxlintrc.json | 43 - .vscode/settings.json | 4 - .yarnrc | 1 - CHANGELOG.md | 743 --- CONTRIBUTING.md | 79 - LICENSE | 21 - MIGRATION.md | 118 - README.md | 40 - .../.gitignore | 0 .../after-upload-deletion-promise.config.d.ts | 0 .../after-upload-deletion-promise.config.js | 0 .../configs/after-upload-deletion.config.d.ts | 0 .../configs/after-upload-deletion.config.js | 0 .../configs/application-key.config.d.ts | 0 .../configs/application-key.config.js | 0 .../basic-release-disabled.config.d.ts | 0 .../configs/basic-release-disabled.config.js | 0 .../configs/basic-sourcemaps.config.d.ts | 0 .../configs/basic-sourcemaps.config.js | 0 .../fixtures/configs/basic.config.cjs | 0 .../fixtures/configs/basic.config.d.ts | 0 .../fixtures/configs/basic.config.js | 0 .../fixtures/configs/build-info.config.d.ts | 0 .../fixtures/configs/build-info.config.js | 0 .../bundle-size-optimizations.config.d.ts | 0 .../bundle-size-optimizations.config.js | 0 .../component-annotation-disabled.config.d.ts | 0 .../component-annotation-disabled.config.js | 0 .../component-annotation-next.config.d.ts | 0 .../component-annotation-next.config.js | 0 .../configs/component-annotation.config.d.ts | 0 .../configs/component-annotation.config.js | 0 .../configs/debugid-disabled.config.d.ts | 0 .../configs/debugid-disabled.config.js | 0 .../debugids-already-injected.config.d.ts | 0 .../debugids-already-injected.config.js | 0 .../dont-mess-up-user-code.config.d.ts | 0 .../configs/dont-mess-up-user-code.config.js | 0 .../configs/errorhandling.config.d.ts | 0 .../fixtures/configs/errorhandling.config.js | 0 .../configs/module-metadata.config.d.ts | 0 .../configs/module-metadata.config.js | 0 .../configs/multiple-entry-points.config.d.ts | 0 .../configs/multiple-entry-points.config.js | 0 .../fixtures/configs/package.json | 0 .../fixtures/configs/query-param.config.d.ts | 0 .../fixtures/configs/query-param.config.js | 0 .../configs/release-disabled.config.d.ts | 0 .../configs/release-disabled.config.js | 0 .../release-value-with-quotes.config.d.ts | 0 .../release-value-with-quotes.config.js | 0 .../fixtures/configs/telemetry.config.d.ts | 0 .../fixtures/configs/telemetry.config.js | 0 .../vite-mpa-extra-modules.config.d.ts | 0 .../configs/vite-mpa-extra-modules.config.js | 0 .../after-upload-deletion-promise.config.js | 0 .../after-upload-deletion-promise.test.ts | 0 .../esbuild/after-upload-deletion.config.js | 0 .../esbuild/after-upload-deletion.test.ts | 0 .../esbuild/application-key.config.js | 0 .../fixtures/esbuild/application-key.test.ts | 0 .../fixtures/esbuild/basic-cjs.config.cjs | 0 .../fixtures/esbuild/basic-cjs.test.ts | 0 .../esbuild/basic-release-disabled.config.js | 0 .../esbuild/basic-release-disabled.test.ts | 0 .../esbuild/basic-sourcemaps.config.js | 0 .../fixtures/esbuild/basic-sourcemaps.test.ts | 0 .../fixtures/esbuild/basic.config.js | 0 .../fixtures/esbuild/basic.test.ts | 0 .../fixtures/esbuild/build-info.config.js | 0 .../fixtures/esbuild/build-info.test.ts | 0 .../bundle-size-optimizations.config.js | 0 .../esbuild/bundle-size-optimizations.test.ts | 0 .../esbuild/debugid-disabled.config.js | 0 .../fixtures/esbuild/debugid-disabled.test.ts | 0 .../esbuild/dont-mess-up-user-code.config.js | 0 .../esbuild/dont-mess-up-user-code.test.ts | 0 .../fixtures/esbuild/errorhandling.config.js | 0 .../fixtures/esbuild/errorhandling.test.ts | 0 .../esbuild/esbuild-inject-compat.config.js | 0 .../esbuild/esbuild-inject-compat.test.ts | 0 .../esbuild/module-metadata.config.js | 0 .../fixtures/esbuild/module-metadata.test.ts | 0 .../esbuild/multiple-entry-points.config.js | 0 .../esbuild/multiple-entry-points.test.ts | 0 .../fixtures/esbuild/package.json | 0 .../esbuild/release-disabled.config.js | 0 .../fixtures/esbuild/release-disabled.test.ts | 0 .../release-value-with-quotes.config.js | 0 .../esbuild/release-value-with-quotes.test.ts | 0 .../fixtures/esbuild/src/app.jsx | 0 .../fixtures/esbuild/src/basic.js | 0 .../fixtures/esbuild/src/bundle.js | 0 .../fixtures/esbuild/src/common.js | 0 .../fixtures/esbuild/src/component-a.jsx | 0 .../fixtures/esbuild/src/entry1.js | 0 .../fixtures/esbuild/src/entry2.js | 0 .../fixtures/esbuild/src/import.js | 0 .../fixtures/esbuild/src/index.js | 0 .../esbuild/src/inject-compat-index.ts | 0 .../fixtures/esbuild/src/inject.ts | 0 .../esbuild/src/release-value-with-quotes.js | 0 .../fixtures/esbuild/telemetry.config.js | 0 .../fixtures/esbuild/telemetry.test.ts | 0 .../fixtures/esbuild/utils.ts | 0 .../fixtures/patches/@sentry__cli.patch | 0 .../after-upload-deletion-promise.config.ts | 0 .../after-upload-deletion-promise.test.ts | 0 .../rolldown/after-upload-deletion.config.ts | 0 .../rolldown/after-upload-deletion.test.ts | 0 .../rolldown/application-key.config.ts | 0 .../fixtures/rolldown/application-key.test.ts | 0 .../fixtures/rolldown/basic-cjs.config.cjs | 0 .../fixtures/rolldown/basic-cjs.test.ts | 0 .../rolldown/basic-release-disabled.config.ts | 0 .../rolldown/basic-release-disabled.test.ts | 0 .../rolldown/basic-sourcemaps.config.ts | 0 .../rolldown/basic-sourcemaps.test.ts | 0 .../fixtures/rolldown/basic.config.ts | 0 .../fixtures/rolldown/basic.test.ts | 0 .../fixtures/rolldown/build-info.config.ts | 0 .../fixtures/rolldown/build-info.test.ts | 0 .../bundle-size-optimizations.config.ts | 0 .../bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.ts | 0 .../component-annotation-disabled.test.ts | 0 .../component-annotation-next.config.ts | 0 .../component-annotation-next.test.ts | 0 .../rolldown/component-annotation.config.ts | 0 .../rolldown/component-annotation.test.ts | 0 .../rolldown/debugid-disabled.config.ts | 0 .../rolldown/debugid-disabled.test.ts | 0 .../debugids-already-injected.config.ts | 0 .../debugids-already-injected.test.ts | 0 .../rolldown/dont-mess-up-user-code.config.ts | 0 .../rolldown/dont-mess-up-user-code.test.ts | 0 .../fixtures/rolldown/errorhandling.config.ts | 0 .../fixtures/rolldown/errorhandling.test.ts | 0 .../rolldown/module-metadata.config.ts | 0 .../fixtures/rolldown/module-metadata.test.ts | 0 .../rolldown/multiple-entry-points.config.ts | 0 .../rolldown/multiple-entry-points.test.ts | 0 .../fixtures/rolldown/package.json | 0 .../fixtures/rolldown/query-param.config.ts | 0 .../fixtures/rolldown/query-param.test.ts | 0 .../rolldown/release-disabled.config.ts | 0 .../rolldown/release-disabled.test.ts | 0 .../release-value-with-quotes.config.ts | 0 .../release-value-with-quotes.test.ts | 0 .../fixtures/rolldown/src/app.jsx | 0 .../fixtures/rolldown/src/basic.js | 0 .../fixtures/rolldown/src/bundle.js | 0 .../fixtures/rolldown/src/common.js | 0 .../fixtures/rolldown/src/component-a.jsx | 0 .../fixtures/rolldown/src/entry1.js | 0 .../fixtures/rolldown/src/entry2.js | 0 .../fixtures/rolldown/src/import.js | 0 .../fixtures/rolldown/src/index.js | 0 .../rolldown/src/release-value-with-quotes.js | 0 .../fixtures/rolldown/telemetry.config.ts | 0 .../fixtures/rolldown/telemetry.test.ts | 0 .../fixtures/rolldown/utils.ts | 0 .../after-upload-deletion-promise.config.js | 0 .../after-upload-deletion-promise.test.ts | 0 .../rollup3/after-upload-deletion.config.js | 0 .../rollup3/after-upload-deletion.test.ts | 0 .../rollup3/application-key.config.js | 0 .../fixtures/rollup3/application-key.test.ts | 0 .../fixtures/rollup3/basic-cjs.config.cjs | 0 .../fixtures/rollup3/basic-cjs.test.ts | 0 .../rollup3/basic-release-disabled.config.js | 0 .../rollup3/basic-release-disabled.test.ts | 0 .../rollup3/basic-sourcemaps.config.js | 0 .../fixtures/rollup3/basic-sourcemaps.test.ts | 0 .../fixtures/rollup3/basic.config.js | 0 .../fixtures/rollup3/basic.test.ts | 0 .../fixtures/rollup3/build-info.config.js | 0 .../fixtures/rollup3/build-info.test.ts | 0 .../bundle-size-optimizations.config.js | 0 .../rollup3/bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.js | 0 .../component-annotation-disabled.test.ts | 0 .../component-annotation-next.config.js | 0 .../rollup3/component-annotation-next.test.ts | 0 .../rollup3/component-annotation.config.js | 0 .../rollup3/component-annotation.test.ts | 0 .../rollup3/debugid-disabled.config.js | 0 .../fixtures/rollup3/debugid-disabled.test.ts | 0 .../rollup3/dont-mess-up-user-code.config.js | 0 .../rollup3/dont-mess-up-user-code.test.ts | 0 .../fixtures/rollup3/errorhandling.config.js | 0 .../fixtures/rollup3/errorhandling.test.ts | 0 .../rollup3/module-metadata.config.js | 0 .../fixtures/rollup3/module-metadata.test.ts | 0 .../rollup3/multiple-entry-points.config.js | 0 .../rollup3/multiple-entry-points.test.ts | 0 .../fixtures/rollup3/package.json | 0 .../fixtures/rollup3/query-param.config.js | 0 .../fixtures/rollup3/query-param.test.ts | 0 .../rollup3/release-disabled.config.js | 0 .../fixtures/rollup3/release-disabled.test.ts | 0 .../release-value-with-quotes.config.js | 0 .../rollup3/release-value-with-quotes.test.ts | 0 .../fixtures/rollup3/src/app.jsx | 0 .../fixtures/rollup3/src/basic.js | 0 .../fixtures/rollup3/src/bundle.js | 0 .../fixtures/rollup3/src/common.js | 0 .../fixtures/rollup3/src/component-a.jsx | 0 .../fixtures/rollup3/src/entry1.js | 0 .../fixtures/rollup3/src/entry2.js | 0 .../fixtures/rollup3/src/import.js | 0 .../fixtures/rollup3/src/index.js | 0 .../rollup3/src/release-value-with-quotes.js | 0 .../fixtures/rollup3/telemetry.config.js | 0 .../fixtures/rollup3/telemetry.test.ts | 0 .../fixtures/rollup3/utils.ts | 0 .../after-upload-deletion-promise.config.js | 0 .../after-upload-deletion-promise.test.ts | 0 .../rollup4/after-upload-deletion.config.js | 0 .../rollup4/after-upload-deletion.test.ts | 0 .../rollup4/application-key.config.js | 0 .../fixtures/rollup4/application-key.test.ts | 0 .../fixtures/rollup4/basic-cjs.config.cjs | 0 .../fixtures/rollup4/basic-cjs.test.ts | 0 .../rollup4/basic-release-disabled.config.js | 0 .../rollup4/basic-release-disabled.test.ts | 0 .../rollup4/basic-sourcemaps.config.js | 0 .../fixtures/rollup4/basic-sourcemaps.test.ts | 0 .../fixtures/rollup4/basic.config.js | 0 .../fixtures/rollup4/basic.test.ts | 0 .../fixtures/rollup4/build-info.config.js | 0 .../fixtures/rollup4/build-info.test.ts | 0 .../bundle-size-optimizations.config.js | 0 .../rollup4/bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.js | 0 .../component-annotation-disabled.test.ts | 0 .../component-annotation-next.config.js | 0 .../rollup4/component-annotation-next.test.ts | 0 .../rollup4/component-annotation.config.js | 0 .../rollup4/component-annotation.test.ts | 0 .../rollup4/debugid-disabled.config.js | 0 .../fixtures/rollup4/debugid-disabled.test.ts | 0 .../debugids-already-injected.config.js | 0 .../rollup4/debugids-already-injected.test.ts | 0 .../rollup4/dont-mess-up-user-code.config.js | 0 .../rollup4/dont-mess-up-user-code.test.ts | 0 .../fixtures/rollup4/errorhandling.config.js | 0 .../fixtures/rollup4/errorhandling.test.ts | 0 .../rollup4/module-metadata.config.js | 0 .../fixtures/rollup4/module-metadata.test.ts | 0 .../rollup4/multiple-entry-points.config.js | 0 .../rollup4/multiple-entry-points.test.ts | 0 .../fixtures/rollup4/package.json | 0 .../fixtures/rollup4/query-param.config.js | 0 .../fixtures/rollup4/query-param.test.ts | 0 .../rollup4/release-disabled.config.js | 0 .../fixtures/rollup4/release-disabled.test.ts | 0 .../release-value-with-quotes.config.js | 0 .../rollup4/release-value-with-quotes.test.ts | 0 .../fixtures/rollup4/src/app.jsx | 0 .../fixtures/rollup4/src/basic.js | 0 .../fixtures/rollup4/src/bundle.js | 0 .../fixtures/rollup4/src/common.js | 0 .../fixtures/rollup4/src/component-a.jsx | 0 .../fixtures/rollup4/src/entry1.js | 0 .../fixtures/rollup4/src/entry2.js | 0 .../fixtures/rollup4/src/import.js | 0 .../fixtures/rollup4/src/index.js | 0 .../rollup4/src/release-value-with-quotes.js | 0 .../fixtures/rollup4/telemetry.config.js | 0 .../fixtures/rollup4/telemetry.test.ts | 0 .../fixtures/rollup4/utils.ts | 0 .../fixtures/utils.ts | 0 .../fixtures/vite-type-compat.test.ts | 0 .../after-upload-deletion-promise.config.ts | 0 .../after-upload-deletion-promise.test.ts | 0 .../vite4/after-upload-deletion.config.ts | 0 .../vite4/after-upload-deletion.test.ts | 0 .../fixtures/vite4/application-key.config.ts | 0 .../fixtures/vite4/application-key.test.ts | 0 .../fixtures/vite4/basic-cjs.config.cjs | 0 .../fixtures/vite4/basic-cjs.test.ts | 0 .../vite4/basic-release-disabled.config.ts | 0 .../vite4/basic-release-disabled.test.ts | 0 .../fixtures/vite4/basic-sourcemaps.config.ts | 0 .../fixtures/vite4/basic-sourcemaps.test.ts | 0 .../fixtures/vite4/basic.config.ts | 0 .../fixtures/vite4/basic.test.ts | 0 .../fixtures/vite4/build-info.config.ts | 0 .../fixtures/vite4/build-info.test.ts | 0 .../vite4/bundle-size-optimizations.config.ts | 0 .../vite4/bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.ts | 0 .../component-annotation-disabled.test.ts | 0 .../vite4/component-annotation-next.config.ts | 0 .../vite4/component-annotation-next.test.ts | 0 .../vite4/component-annotation.config.ts | 0 .../vite4/component-annotation.test.ts | 0 .../fixtures/vite4/debugid-disabled.config.ts | 0 .../fixtures/vite4/debugid-disabled.test.ts | 0 .../vite4/dont-mess-up-user-code.config.ts | 0 .../vite4/dont-mess-up-user-code.test.ts | 0 .../fixtures/vite4/errorhandling.config.ts | 0 .../fixtures/vite4/errorhandling.test.ts | 0 .../fixtures/vite4/module-metadata.config.ts | 0 .../fixtures/vite4/module-metadata.test.ts | 0 .../vite4/multiple-entry-points.config.ts | 0 .../vite4/multiple-entry-points.test.ts | 0 .../fixtures/vite4/package.json | 0 .../fixtures/vite4/query-param.config.ts | 0 .../fixtures/vite4/query-param.test.ts | 0 .../fixtures/vite4/release-disabled.config.ts | 0 .../fixtures/vite4/release-disabled.test.ts | 0 .../vite4/release-value-with-quotes.config.ts | 0 .../vite4/release-value-with-quotes.test.ts | 0 .../fixtures/vite4/src/app.jsx | 0 .../fixtures/vite4/src/basic.js | 0 .../fixtures/vite4/src/bundle.js | 0 .../fixtures/vite4/src/common.js | 0 .../fixtures/vite4/src/component-a.jsx | 0 .../fixtures/vite4/src/entry1.js | 0 .../fixtures/vite4/src/entry2.js | 0 .../fixtures/vite4/src/import.js | 0 .../fixtures/vite4/src/index.js | 0 .../vite4/src/release-value-with-quotes.js | 0 .../fixtures/vite4/src/shared-module.js | 0 .../fixtures/vite4/src/vite-mpa-index.html | 0 .../fixtures/vite4/src/vite-mpa-page1.html | 0 .../fixtures/vite4/src/vite-mpa-page2.html | 0 .../fixtures/vite4/telemetry.config.ts | 0 .../fixtures/vite4/telemetry.test.ts | 0 .../fixtures/vite4/utils.ts | 0 .../vite4/vite-mpa-extra-modules.config.ts | 0 .../vite4/vite-mpa-extra-modules.test.ts | 0 .../fixtures/vite6/package.json | 0 .../after-upload-deletion-promise.config.ts | 0 .../after-upload-deletion-promise.test.ts | 0 .../vite7/after-upload-deletion.config.ts | 0 .../vite7/after-upload-deletion.test.ts | 0 .../fixtures/vite7/application-key.config.ts | 0 .../fixtures/vite7/application-key.test.ts | 0 .../fixtures/vite7/basic-cjs.config.cjs | 0 .../fixtures/vite7/basic-cjs.test.ts | 0 .../vite7/basic-release-disabled.config.ts | 0 .../vite7/basic-release-disabled.test.ts | 0 .../fixtures/vite7/basic-sourcemaps.config.ts | 0 .../fixtures/vite7/basic-sourcemaps.test.ts | 0 .../fixtures/vite7/basic.config.ts | 0 .../fixtures/vite7/basic.test.ts | 0 .../fixtures/vite7/build-info.config.ts | 0 .../fixtures/vite7/build-info.test.ts | 0 .../vite7/bundle-size-optimizations.config.ts | 0 .../vite7/bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.ts | 0 .../component-annotation-disabled.test.ts | 0 .../vite7/component-annotation-next.config.ts | 0 .../vite7/component-annotation-next.test.ts | 0 .../vite7/component-annotation.config.ts | 0 .../vite7/component-annotation.test.ts | 0 .../fixtures/vite7/debugid-disabled.config.ts | 0 .../fixtures/vite7/debugid-disabled.test.ts | 0 .../vite7/debugids-already-injected.config.ts | 0 .../vite7/debugids-already-injected.test.ts | 0 .../vite7/dont-mess-up-user-code.config.ts | 0 .../vite7/dont-mess-up-user-code.test.ts | 0 .../fixtures/vite7/errorhandling.config.ts | 0 .../fixtures/vite7/errorhandling.test.ts | 0 .../fixtures/vite7/module-metadata.config.ts | 0 .../fixtures/vite7/module-metadata.test.ts | 0 .../vite7/multiple-entry-points.config.ts | 0 .../vite7/multiple-entry-points.test.ts | 0 .../fixtures/vite7/package.json | 0 .../fixtures/vite7/query-param.config.ts | 0 .../fixtures/vite7/query-param.test.ts | 0 .../fixtures/vite7/release-disabled.config.ts | 0 .../fixtures/vite7/release-disabled.test.ts | 0 .../vite7/release-value-with-quotes.config.ts | 0 .../vite7/release-value-with-quotes.test.ts | 0 .../fixtures/vite7/src/app.jsx | 0 .../fixtures/vite7/src/basic.js | 0 .../fixtures/vite7/src/bundle.js | 0 .../fixtures/vite7/src/common.js | 0 .../fixtures/vite7/src/component-a.jsx | 0 .../fixtures/vite7/src/entry1.js | 0 .../fixtures/vite7/src/entry2.js | 0 .../fixtures/vite7/src/import.js | 0 .../fixtures/vite7/src/index.js | 0 .../vite7/src/release-value-with-quotes.js | 0 .../fixtures/vite7/src/shared-module.js | 0 .../fixtures/vite7/src/vite-mpa-index.html | 0 .../fixtures/vite7/src/vite-mpa-page1.html | 0 .../fixtures/vite7/src/vite-mpa-page2.html | 0 .../fixtures/vite7/telemetry.config.ts | 0 .../fixtures/vite7/telemetry.test.ts | 0 .../fixtures/vite7/utils.ts | 0 .../vite7/vite-mpa-extra-modules.config.ts | 0 .../vite7/vite-mpa-extra-modules.test.ts | 0 .../after-upload-deletion-promise.config.ts | 0 .../after-upload-deletion-promise.test.ts | 0 .../vite8/after-upload-deletion.config.ts | 0 .../vite8/after-upload-deletion.test.ts | 0 .../fixtures/vite8/application-key.config.ts | 0 .../fixtures/vite8/application-key.test.ts | 0 .../fixtures/vite8/basic-cjs.config.cjs | 0 .../fixtures/vite8/basic-cjs.test.ts | 0 .../vite8/basic-release-disabled.config.ts | 0 .../vite8/basic-release-disabled.test.ts | 0 .../fixtures/vite8/basic-sourcemaps.config.ts | 0 .../fixtures/vite8/basic-sourcemaps.test.ts | 0 .../fixtures/vite8/basic.config.ts | 0 .../fixtures/vite8/basic.test.ts | 0 .../fixtures/vite8/build-info.config.ts | 0 .../fixtures/vite8/build-info.test.ts | 0 .../vite8/bundle-size-optimizations.config.ts | 0 .../vite8/bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.ts | 0 .../component-annotation-disabled.test.ts | 0 .../vite8/component-annotation-next.config.ts | 0 .../vite8/component-annotation-next.test.ts | 0 .../vite8/component-annotation.config.ts | 0 .../vite8/component-annotation.test.ts | 0 .../fixtures/vite8/debugid-disabled.config.ts | 0 .../fixtures/vite8/debugid-disabled.test.ts | 0 .../vite8/debugids-already-injected.config.ts | 0 .../vite8/debugids-already-injected.test.ts | 0 .../vite8/dont-mess-up-user-code.config.ts | 0 .../vite8/dont-mess-up-user-code.test.ts | 0 .../fixtures/vite8/errorhandling.config.ts | 0 .../fixtures/vite8/errorhandling.test.ts | 0 .../fixtures/vite8/module-metadata.config.ts | 0 .../fixtures/vite8/module-metadata.test.ts | 0 .../vite8/multiple-entry-points.config.ts | 0 .../vite8/multiple-entry-points.test.ts | 0 .../fixtures/vite8/package.json | 0 .../fixtures/vite8/query-param.config.ts | 0 .../fixtures/vite8/query-param.test.ts | 0 .../fixtures/vite8/release-disabled.config.ts | 0 .../fixtures/vite8/release-disabled.test.ts | 0 .../vite8/release-value-with-quotes.config.ts | 0 .../vite8/release-value-with-quotes.test.ts | 0 .../fixtures/vite8/src/app.jsx | 0 .../fixtures/vite8/src/basic.js | 0 .../fixtures/vite8/src/bundle.js | 0 .../fixtures/vite8/src/common.js | 0 .../fixtures/vite8/src/component-a.jsx | 0 .../fixtures/vite8/src/entry1.js | 0 .../fixtures/vite8/src/entry2.js | 0 .../fixtures/vite8/src/import.js | 0 .../fixtures/vite8/src/index.js | 0 .../vite8/src/release-value-with-quotes.js | 0 .../fixtures/vite8/src/shared-module.js | 0 .../fixtures/vite8/src/vite-mpa-index.html | 0 .../fixtures/vite8/src/vite-mpa-page1.html | 0 .../fixtures/vite8/src/vite-mpa-page2.html | 0 .../fixtures/vite8/telemetry.config.ts | 0 .../fixtures/vite8/telemetry.test.ts | 0 .../fixtures/vite8/utils.ts | 0 .../vite8/vite-mpa-extra-modules.config.ts | 0 .../vite8/vite-mpa-extra-modules.test.ts | 0 .../after-upload-deletion-promise.config.js | 0 .../after-upload-deletion-promise.test.ts | 0 .../webpack5/after-upload-deletion.config.js | 0 .../webpack5/after-upload-deletion.test.ts | 0 .../webpack5/application-key.config.js | 0 .../fixtures/webpack5/application-key.test.ts | 0 .../fixtures/webpack5/basic-cjs.config.cjs | 0 .../fixtures/webpack5/basic-cjs.test.ts | 0 .../webpack5/basic-release-disabled.config.js | 0 .../webpack5/basic-release-disabled.test.ts | 0 .../webpack5/basic-sourcemaps.config.js | 0 .../webpack5/basic-sourcemaps.test.ts | 0 .../fixtures/webpack5/basic.config.js | 0 .../fixtures/webpack5/basic.test.ts | 0 .../fixtures/webpack5/build-info.config.js | 0 .../fixtures/webpack5/build-info.test.ts | 0 .../bundle-size-optimizations.config.js | 0 .../bundle-size-optimizations.test.ts | 0 .../component-annotation-disabled.config.js | 0 .../component-annotation-disabled.test.ts | 0 .../component-annotation-next.config.js | 0 .../component-annotation-next.test.ts | 0 .../webpack5/component-annotation.config.js | 0 .../webpack5/component-annotation.test.ts | 0 .../webpack5/debugid-disabled.config.js | 0 .../webpack5/debugid-disabled.test.ts | 0 .../debugids-already-injected.config.js | 0 .../debugids-already-injected.test.ts | 0 .../fixtures/webpack5/errorhandling.config.js | 0 .../fixtures/webpack5/errorhandling.test.ts | 0 .../webpack5/module-metadata.config.js | 0 .../fixtures/webpack5/module-metadata.test.ts | 0 .../webpack5/multiple-entry-points.config.js | 0 .../webpack5/multiple-entry-points.test.ts | 0 .../fixtures/webpack5/package.json | 0 .../webpack5/release-disabled.config.js | 0 .../webpack5/release-disabled.test.ts | 0 .../release-value-with-quotes.config.js | 0 .../release-value-with-quotes.test.ts | 0 .../fixtures/webpack5/src/app.jsx | 0 .../fixtures/webpack5/src/basic.js | 0 .../fixtures/webpack5/src/bundle.js | 0 .../fixtures/webpack5/src/common.js | 0 .../fixtures/webpack5/src/component-a.jsx | 0 .../fixtures/webpack5/src/entry1.js | 0 .../fixtures/webpack5/src/entry2.js | 0 .../webpack5/src/release-value-with-quotes.js | 0 .../fixtures/webpack5/telemetry.config.js | 0 .../fixtures/webpack5/telemetry.test.ts | 0 .../fixtures/webpack5/utils.ts | 0 .../package.json | 0 .../setup.mjs | 0 .../tsconfig.json | 0 nx.json | 38 - package.json | 52 - .../.gitignore | 2 - .../babel-plugin-component-annotate/LICENSE | 29 - .../babel-plugin-component-annotate/README.md | 95 - .../package.json | 64 - .../rollup.config.mjs | 23 - .../src/index.ts | 4 - .../test/tsconfig.json | 8 - .../tsconfig.json | 5 - .../types.tsconfig.json | 11 - packages/bundler-plugin-core/.gitignore | 1 - packages/bundler-plugin-core/LICENSE | 29 - packages/bundler-plugin-core/README.md | 31 - packages/bundler-plugin-core/package.json | 69 - .../bundler-plugin-core/rollup.config.mjs | 23 - .../sentry-esbuild-debugid-injection-file.js | 20 - .../sentry-release-injection-file.js | 4 - packages/bundler-plugin-core/src/index.ts | 1 - .../bundler-plugin-core/test/tsconfig.json | 8 - packages/bundler-plugin-core/tsconfig.json | 5 - .../bundler-plugin-core/types.tsconfig.json | 11 - packages/dev-utils/.gitignore | 2 - packages/dev-utils/package.json | 15 - packages/dev-utils/rollup.config.mjs | 14 - .../src/generate-documentation-table.ts | 520 -- packages/dev-utils/src/index.ts | 1 - packages/dev-utils/tsconfig.json | 5 - packages/esbuild-plugin/.gitignore | 2 - packages/esbuild-plugin/LICENSE | 29 - packages/esbuild-plugin/README_TEMPLATE.md | 92 - packages/esbuild-plugin/package.json | 63 - packages/esbuild-plugin/prepack.mjs | 12 - packages/esbuild-plugin/rollup.config.mjs | 23 - packages/esbuild-plugin/src/index.ts | 2 - packages/esbuild-plugin/test/tsconfig.json | 8 - packages/esbuild-plugin/tsconfig.json | 5 - packages/esbuild-plugin/types.tsconfig.json | 11 - packages/playground/.env.example | 5 - packages/playground/.gitignore | 4 - packages/playground/.sentryignore | 5 - packages/playground/build-esbuild.js | 16 - packages/playground/build-webpack.js | 31 - packages/playground/package.json | 38 - packages/playground/rollup.config.mjs | 19 - .../scripts/request-logger-logs/.gitkeep | 0 .../scripts/request-logger-proxy.mjs | 75 - packages/playground/src/entrypoint1.js | 12 - packages/playground/src/entrypoint2.js | 16 - packages/playground/src/get-global.js | 3 - packages/playground/src/hello-world.js | 3 - packages/playground/src/smallNodeApp.js | 24 - packages/playground/vite.config.js | 22 - .../playground/vite.config.smallNodeApp.js | 40 - packages/rollup-plugin/.gitignore | 2 - packages/rollup-plugin/LICENSE | 29 - packages/rollup-plugin/README_TEMPLATE.md | 96 - packages/rollup-plugin/package.json | 72 - packages/rollup-plugin/prepack.mjs | 12 - packages/rollup-plugin/rollup.config.mjs | 23 - packages/rollup-plugin/src/index.ts | 1 - packages/rollup-plugin/test/tsconfig.json | 8 - packages/rollup-plugin/tsconfig.json | 5 - packages/rollup-plugin/types.tsconfig.json | 11 - packages/vite-plugin/.gitignore | 2 - packages/vite-plugin/LICENSE | 29 - packages/vite-plugin/README_TEMPLATE.md | 102 - packages/vite-plugin/package.json | 63 - packages/vite-plugin/prepack.mjs | 12 - packages/vite-plugin/rollup.config.mjs | 23 - packages/vite-plugin/src/index.ts | 1 - packages/vite-plugin/test/tsconfig.json | 8 - packages/vite-plugin/tsconfig.json | 5 - packages/vite-plugin/types.tsconfig.json | 11 - packages/webpack-plugin/.gitignore | 2 - packages/webpack-plugin/LICENSE | 29 - packages/webpack-plugin/README_TEMPLATE.md | 97 - packages/webpack-plugin/package.json | 73 - packages/webpack-plugin/prepack.mjs | 12 - packages/webpack-plugin/rollup.config.mjs | 29 - packages/webpack-plugin/src/index.ts | 1 - packages/webpack-plugin/src/webpack5.ts | 1 - packages/webpack-plugin/test/tsconfig.json | 8 - packages/webpack-plugin/tsconfig.json | 8 - packages/webpack-plugin/types.tsconfig.json | 11 - scripts/bump-version.js | 136 - scripts/craft-pre-release.sh | 15 - tsconfig.json | 12 - yarn.lock | 4588 ----------------- 613 files changed, 8847 deletions(-) delete mode 100644 .craft.yml delete mode 100644 .devcontainer/Dockerfile delete mode 100644 .devcontainer/devcontainer.json delete mode 100644 .gitattributes delete mode 100644 .github/dependency-review-config.yml delete mode 100644 .github/workflows/checks.yml delete mode 100644 .github/workflows/codeql.yml delete mode 100644 .github/workflows/enforce-license-complience.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .gitignore delete mode 100644 .oxfmtrc.json delete mode 100644 .oxlintrc.base.json delete mode 100644 .oxlintrc.json delete mode 100644 .vscode/settings.json delete mode 100644 .yarnrc delete mode 100644 CHANGELOG.md delete mode 100644 CONTRIBUTING.md delete mode 100644 LICENSE delete mode 100644 MIGRATION.md delete mode 100644 README.md rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/.gitignore (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/after-upload-deletion-promise.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/after-upload-deletion-promise.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/after-upload-deletion.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/after-upload-deletion.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/application-key.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/application-key.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic-release-disabled.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic-release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic-sourcemaps.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic-sourcemaps.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/basic.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/build-info.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/build-info.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/bundle-size-optimizations.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/bundle-size-optimizations.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation-disabled.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation-next.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation-next.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/component-annotation.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/debugid-disabled.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/debugid-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/debugids-already-injected.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/debugids-already-injected.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/dont-mess-up-user-code.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/dont-mess-up-user-code.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/errorhandling.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/errorhandling.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/module-metadata.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/module-metadata.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/multiple-entry-points.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/multiple-entry-points.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/query-param.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/query-param.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/release-disabled.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/release-value-with-quotes.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/release-value-with-quotes.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/telemetry.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/telemetry.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/vite-mpa-extra-modules.config.d.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/configs/vite-mpa-extra-modules.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/after-upload-deletion-promise.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/after-upload-deletion.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/application-key.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-sourcemaps.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/build-info.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/bundle-size-optimizations.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/debugid-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/dont-mess-up-user-code.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/errorhandling.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/esbuild-inject-compat.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/esbuild-inject-compat.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/module-metadata.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/multiple-entry-points.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/release-value-with-quotes.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/inject-compat-index.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/inject.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/telemetry.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/esbuild/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/patches/@sentry__cli.patch (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/after-upload-deletion-promise.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/after-upload-deletion.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/application-key.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-sourcemaps.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/build-info.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/bundle-size-optimizations.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation-next.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/debugid-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/debugids-already-injected.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/debugids-already-injected.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/dont-mess-up-user-code.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/errorhandling.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/module-metadata.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/multiple-entry-points.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/query-param.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/release-value-with-quotes.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/telemetry.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rolldown/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/after-upload-deletion-promise.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/after-upload-deletion.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/application-key.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-sourcemaps.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/build-info.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/bundle-size-optimizations.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation-next.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/debugid-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/dont-mess-up-user-code.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/errorhandling.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/module-metadata.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/multiple-entry-points.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/query-param.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/release-value-with-quotes.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/telemetry.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup3/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/after-upload-deletion-promise.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/after-upload-deletion.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/application-key.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-sourcemaps.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/build-info.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/bundle-size-optimizations.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation-next.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/debugid-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/debugids-already-injected.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/debugids-already-injected.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/dont-mess-up-user-code.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/errorhandling.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/module-metadata.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/multiple-entry-points.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/query-param.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/release-value-with-quotes.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/telemetry.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/rollup4/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite-type-compat.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/after-upload-deletion-promise.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/after-upload-deletion.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/application-key.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-sourcemaps.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/build-info.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/bundle-size-optimizations.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation-next.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/debugid-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/dont-mess-up-user-code.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/errorhandling.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/module-metadata.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/multiple-entry-points.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/query-param.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/release-value-with-quotes.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/shared-module.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/vite-mpa-index.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/vite-mpa-page1.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/src/vite-mpa-page2.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/telemetry.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/vite-mpa-extra-modules.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite4/vite-mpa-extra-modules.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite6/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/after-upload-deletion-promise.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/after-upload-deletion.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/application-key.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-sourcemaps.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/build-info.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/bundle-size-optimizations.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation-next.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/debugid-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/debugids-already-injected.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/debugids-already-injected.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/dont-mess-up-user-code.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/errorhandling.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/module-metadata.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/multiple-entry-points.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/query-param.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/release-value-with-quotes.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/shared-module.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/vite-mpa-index.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/vite-mpa-page1.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/src/vite-mpa-page2.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/telemetry.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/vite-mpa-extra-modules.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite7/vite-mpa-extra-modules.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/after-upload-deletion-promise.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/after-upload-deletion.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/application-key.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-sourcemaps.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/build-info.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/bundle-size-optimizations.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation-next.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/debugid-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/debugids-already-injected.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/debugids-already-injected.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/dont-mess-up-user-code.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/dont-mess-up-user-code.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/errorhandling.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/module-metadata.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/multiple-entry-points.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/query-param.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/query-param.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/release-disabled.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/release-value-with-quotes.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/import.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/index.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/shared-module.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/vite-mpa-index.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/vite-mpa-page1.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/src/vite-mpa-page2.html (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/telemetry.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/vite-mpa-extra-modules.config.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/vite8/vite-mpa-extra-modules.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/after-upload-deletion-promise.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/after-upload-deletion-promise.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/after-upload-deletion.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/after-upload-deletion.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/application-key.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/application-key.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-cjs.config.cjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-cjs.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-sourcemaps.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic-sourcemaps.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/basic.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/build-info.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/build-info.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/bundle-size-optimizations.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/bundle-size-optimizations.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation-next.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation-next.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/component-annotation.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/debugid-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/debugid-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/debugids-already-injected.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/debugids-already-injected.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/errorhandling.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/errorhandling.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/module-metadata.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/module-metadata.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/multiple-entry-points.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/multiple-entry-points.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/release-disabled.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/release-disabled.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/release-value-with-quotes.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/release-value-with-quotes.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/app.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/basic.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/bundle.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/common.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/component-a.jsx (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/entry1.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/entry2.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/src/release-value-with-quotes.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/telemetry.config.js (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/telemetry.test.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/fixtures/webpack5/utils.ts (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/package.json (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/setup.mjs (100%) rename {packages/integration-tests-next => dev-packages/bundler-plugin-integration-tests}/tsconfig.json (100%) delete mode 100644 nx.json delete mode 100644 package.json delete mode 100644 packages/babel-plugin-component-annotate/.gitignore delete mode 100644 packages/babel-plugin-component-annotate/LICENSE delete mode 100644 packages/babel-plugin-component-annotate/README.md delete mode 100644 packages/babel-plugin-component-annotate/package.json delete mode 100644 packages/babel-plugin-component-annotate/rollup.config.mjs delete mode 100644 packages/babel-plugin-component-annotate/src/index.ts delete mode 100644 packages/babel-plugin-component-annotate/test/tsconfig.json delete mode 100644 packages/babel-plugin-component-annotate/tsconfig.json delete mode 100644 packages/babel-plugin-component-annotate/types.tsconfig.json delete mode 100644 packages/bundler-plugin-core/.gitignore delete mode 100644 packages/bundler-plugin-core/LICENSE delete mode 100644 packages/bundler-plugin-core/README.md delete mode 100644 packages/bundler-plugin-core/package.json delete mode 100644 packages/bundler-plugin-core/rollup.config.mjs delete mode 100644 packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js delete mode 100644 packages/bundler-plugin-core/sentry-release-injection-file.js delete mode 100644 packages/bundler-plugin-core/src/index.ts delete mode 100644 packages/bundler-plugin-core/test/tsconfig.json delete mode 100644 packages/bundler-plugin-core/tsconfig.json delete mode 100644 packages/bundler-plugin-core/types.tsconfig.json delete mode 100644 packages/dev-utils/.gitignore delete mode 100644 packages/dev-utils/package.json delete mode 100644 packages/dev-utils/rollup.config.mjs delete mode 100644 packages/dev-utils/src/generate-documentation-table.ts delete mode 100644 packages/dev-utils/src/index.ts delete mode 100644 packages/dev-utils/tsconfig.json delete mode 100644 packages/esbuild-plugin/.gitignore delete mode 100644 packages/esbuild-plugin/LICENSE delete mode 100644 packages/esbuild-plugin/README_TEMPLATE.md delete mode 100644 packages/esbuild-plugin/package.json delete mode 100644 packages/esbuild-plugin/prepack.mjs delete mode 100644 packages/esbuild-plugin/rollup.config.mjs delete mode 100644 packages/esbuild-plugin/src/index.ts delete mode 100644 packages/esbuild-plugin/test/tsconfig.json delete mode 100644 packages/esbuild-plugin/tsconfig.json delete mode 100644 packages/esbuild-plugin/types.tsconfig.json delete mode 100644 packages/playground/.env.example delete mode 100644 packages/playground/.gitignore delete mode 100644 packages/playground/.sentryignore delete mode 100644 packages/playground/build-esbuild.js delete mode 100644 packages/playground/build-webpack.js delete mode 100644 packages/playground/package.json delete mode 100644 packages/playground/rollup.config.mjs delete mode 100644 packages/playground/scripts/request-logger-logs/.gitkeep delete mode 100644 packages/playground/scripts/request-logger-proxy.mjs delete mode 100644 packages/playground/src/entrypoint1.js delete mode 100644 packages/playground/src/entrypoint2.js delete mode 100644 packages/playground/src/get-global.js delete mode 100644 packages/playground/src/hello-world.js delete mode 100644 packages/playground/src/smallNodeApp.js delete mode 100644 packages/playground/vite.config.js delete mode 100644 packages/playground/vite.config.smallNodeApp.js delete mode 100644 packages/rollup-plugin/.gitignore delete mode 100644 packages/rollup-plugin/LICENSE delete mode 100644 packages/rollup-plugin/README_TEMPLATE.md delete mode 100644 packages/rollup-plugin/package.json delete mode 100644 packages/rollup-plugin/prepack.mjs delete mode 100644 packages/rollup-plugin/rollup.config.mjs delete mode 100644 packages/rollup-plugin/src/index.ts delete mode 100644 packages/rollup-plugin/test/tsconfig.json delete mode 100644 packages/rollup-plugin/tsconfig.json delete mode 100644 packages/rollup-plugin/types.tsconfig.json delete mode 100644 packages/vite-plugin/.gitignore delete mode 100644 packages/vite-plugin/LICENSE delete mode 100644 packages/vite-plugin/README_TEMPLATE.md delete mode 100644 packages/vite-plugin/package.json delete mode 100644 packages/vite-plugin/prepack.mjs delete mode 100644 packages/vite-plugin/rollup.config.mjs delete mode 100644 packages/vite-plugin/src/index.ts delete mode 100644 packages/vite-plugin/test/tsconfig.json delete mode 100644 packages/vite-plugin/tsconfig.json delete mode 100644 packages/vite-plugin/types.tsconfig.json delete mode 100644 packages/webpack-plugin/.gitignore delete mode 100644 packages/webpack-plugin/LICENSE delete mode 100644 packages/webpack-plugin/README_TEMPLATE.md delete mode 100644 packages/webpack-plugin/package.json delete mode 100644 packages/webpack-plugin/prepack.mjs delete mode 100644 packages/webpack-plugin/rollup.config.mjs delete mode 100644 packages/webpack-plugin/src/index.ts delete mode 100644 packages/webpack-plugin/src/webpack5.ts delete mode 100644 packages/webpack-plugin/test/tsconfig.json delete mode 100644 packages/webpack-plugin/tsconfig.json delete mode 100644 packages/webpack-plugin/types.tsconfig.json delete mode 100644 scripts/bump-version.js delete mode 100755 scripts/craft-pre-release.sh delete mode 100644 tsconfig.json delete mode 100644 yarn.lock diff --git a/.craft.yml b/.craft.yml deleted file mode 100644 index 2dc5fceedce4..000000000000 --- a/.craft.yml +++ /dev/null @@ -1,23 +0,0 @@ -github: - owner: getsentry - repo: sentry-javascript-bundler-plugins -minVersion: 2.26.3 -changelog: - policy: auto -versioning: - policy: auto -preReleaseCommand: bash scripts/craft-pre-release.sh -requireNames: - - /^sentry-bundler-plugin-core-.*\.tgz$/ - - /^sentry-esbuild-plugin-.*\.tgz$/ - - /^sentry-rollup-plugin-.*\.tgz$/ - - /^sentry-vite-plugin-.*\.tgz$/ - - /^sentry-webpack-plugin-.*\.tgz$/ - - /^sentry-babel-plugin-component-annotate-.*\.tgz$/ -targets: - - name: github - includeNames: /^sentry-.*.tgz$/ - - name: npm - workspaces: true - excludeWorkspaces: /^@sentry-internal\// - includeWorkspaces: /^@sentry\// diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 9c5afb39c8ce..000000000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/debian/.devcontainer/base.Dockerfile - -# [Choice] Debian version (use bullseye on local arm64/Apple Silicon): bullseye, buster -ARG VARIANT="buster" -FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT} - -# ** [Optional] Uncomment this section to install additional packages. ** -# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ -# && apt-get -y install --no-install-recommends - diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 4877718afbc0..000000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,36 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.1/containers/debian -{ - "name": "Debian", - "build": { - "dockerfile": "Dockerfile", - // Update 'VARIANT' to pick an Debian version: bullseye, buster - // Use bullseye on local arm64/Apple Silicon. - "args": { "VARIANT": "bullseye" } - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker. - // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], - - // Uncomment when using a ptrace-based debugger like C++, Go, and Rust - // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ], - "postCreateCommand": "yarn", - - // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode", - "features": { - "docker-in-docker": "20.10", - "git": "os-provided", - "github-cli": "latest", - "node": "18", - "java": "17" - }, - "customizations": { - "vscode": { - "extensions": ["oxc.oxc-vscode", "SonarSource.sonarlint-vscode"] - } - } -} diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 94f480de94e1..000000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto eol=lf \ No newline at end of file diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml deleted file mode 100644 index 1fd9ecb9e49c..000000000000 --- a/.github/dependency-review-config.yml +++ /dev/null @@ -1,4 +0,0 @@ -fail-on-severity: "critical" -allow-ghsas: - # If we support webpack v5.0.0, we need to use those types and test that version - - GHSA-hc6q-2mpp-qw7j diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index 54e8f6146f4c..000000000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,218 +0,0 @@ -name: Checks - -on: - push: - branches: - - main - - release/** - pull_request: - -jobs: - build: - name: Build packages - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - run: yarn build - - name: Upload build artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: | - packages/*/dist - packages/*/*.tgz - retention-days: 1 - - type-check: - needs: build - name: Typing check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - run: yarn check:types - - formatting-check: - name: Formatting check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - run: yarn check:formatting - - test-unit: - needs: build - name: Unit Tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: packages - - run: yarn test:unit - - test-integration: - needs: build - name: "Integration Tests (Node ${{ matrix.node-version }}, OS ${{ matrix.os }})" - strategy: - fail-fast: false - matrix: - node-version: [18, 20, 22, 24] - os: [ubuntu-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version: ${{ matrix.node-version }} - - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 - with: - version: 10 - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: | - node_modules - packages/*/node_modules - key: ${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: packages - - run: yarn test:integration - - lint: - needs: build - name: Linter check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Use dependency cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - id: dependency-cache - with: - path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - - name: Use build cache - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 - with: - path: .nxcache - key: build-cache-key-${{ runner.os }}-${{ github.run_id }} - restore-keys: | - build-cache-key-${{ runner.os }}- - - name: Install dependencies - run: yarn --frozen-lockfile --ignore-engines - if: steps.dependency-cache.outputs.cache-hit != 'true' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: dist-artifacts-${{ github.run_id }} - path: packages - - run: yarn lint - - artifacts: - needs: build - name: Upload Artifacts - runs-on: ubuntu-latest - # Build artifacts are only needed for releasing workflow. - if: startsWith(github.ref, 'refs/heads/release/') - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version-file: "package.json" - - name: Install dependencies - run: yarn --frozen-lockfile - - name: pack - run: yarn build:npm - - name: archive artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 - with: - name: ${{ github.sha }} - path: | - ${{ github.workspace }}/packages/*/dist/** - ${{ github.workspace }}/packages/**/*.tgz diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index fd0a4b1817ea..000000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,73 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [main] - pull_request: - # The branches below must be a subset of the branches above - branches: [main] - schedule: - - cron: "40 3 * * 0" - -# Cancel in progress workflows on pull_requests. -# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - language: ["javascript"] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more: - # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed - - steps: - - name: Checkout repository - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8dca8a82e2fa1a2c8908956f711300f9c4a4f4f6 # v2 diff --git a/.github/workflows/enforce-license-complience.yml b/.github/workflows/enforce-license-complience.yml deleted file mode 100644 index 1cbeefffec4f..000000000000 --- a/.github/workflows/enforce-license-complience.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Enforce License Compliance - -on: - push: - branches: [master, main, release/*] - pull_request: - branches: [master, main] - -jobs: - enforce-license-compliance: - runs-on: ubuntu-latest - steps: - - name: "Enforce License Compliance" - uses: getsentry/action-enforce-license-compliance@48236a773346cb6552a7bda1ee370d2797365d87 # main - with: - fossa_api_key: ${{ secrets.FOSSA_API_KEY }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index f14f5f484f94..000000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Prepare Release -on: - workflow_dispatch: - inputs: - version: - description: Version to release (or "auto") - required: false - force: - description: Force a release even when there are release-blockers (optional) - required: false - merge_target: - description: Target branch to merge into. Uses the default branch as a fallback (optional) - required: false -permissions: - contents: write - pull-requests: write - -jobs: - release: - runs-on: ubuntu-latest - name: "Release a new version" - steps: - - name: Get auth token - id: token - uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 - with: - app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }} - private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }} - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - with: - token: ${{ steps.token.outputs.token }} - fetch-depth: 0 - - name: Prepare release - uses: getsentry/craft@beea4aba589c66381258cbd131c5551ae8245b82 # v2.20.1 - env: - GITHUB_TOKEN: ${{ steps.token.outputs.token }} - with: - version: ${{ github.event.inputs.version }} - force: ${{ github.event.inputs.force }} - merge_target: ${{ github.event.inputs.merge_target }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1126d8eb0b30..000000000000 --- a/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -node_modules -yarn-error.log - -.vscode/settings.json -.idea - -*.tgz - -.nxcache -.nx -packages/**/yarn.lock - -.DS_Store -packages/bundler-plugins/src/core/version.ts -packages/integration-tests-next/fixtures/**/pnpm-lock.yaml diff --git a/.oxfmtrc.json b/.oxfmtrc.json deleted file mode 100644 index b34fe26467c3..000000000000 --- a/.oxfmtrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "./node_modules/oxfmt/configuration_schema.json", - "printWidth": 100, - "experimentalSortPackageJson": false, - "trailingComma": "es5", - "ignorePatterns": [ - "packages/bundler-plugin-core/test/fixtures", - "packages/bundler-plugins/test/core/fixtures", - ".nxcache" - ] -} diff --git a/.oxlintrc.base.json b/.oxlintrc.base.json deleted file mode 100644 index 599e134e95e4..000000000000 --- a/.oxlintrc.base.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["typescript", "import", "jsdoc", "vitest"], - "rules": { - "no-unused-vars": [ - "warn", - { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" } - ], - - // === Base rules from eslint-config-sdk/base.js === - "no-console": "error", - "no-alert": "error", - "no-param-reassign": "error", - "prefer-template": "error", - "no-bitwise": "error", - "complexity": ["error", { "max": 33 }], - "no-unused-expressions": ["error", { "allowShortCircuit": true }], - "guard-for-in": "error", - "array-callback-return": ["error", { "allowImplicit": true }], - "quotes": ["error", "single", { "avoidEscape": true }], - "no-return-await": "error", - "max-lines": ["error", { "max": 300, "skipComments": true, "skipBlankLines": true }], - - // === Import rules === - "import/namespace": "off", - "import/no-unresolved": "off", - - // === Rules turned off (not enforced in ESLint or causing false positives) === - "no-control-regex": "off", - "jsdoc/check-tag-names": "off", - "jsdoc/require-yields": "off", - "no-useless-rename": "off", - "no-constant-binary-expression": "off", - "vitest/hoisted-apis-on-top": "off", - "vitest/no-conditional-tests": "off", - "no-unsafe-optional-chaining": "off", - "no-eval": "off", - "no-import-assign": "off", - "typescript/no-duplicate-type-constituents": "off" - }, - "overrides": [ - { - "files": ["**/*.ts", "**/*.tsx", "**/*.d.ts"], - "rules": { - "typescript/ban-ts-comment": "error", - "typescript/consistent-type-imports": "error", - "typescript/no-unnecessary-type-assertion": "error", - "typescript/prefer-for-of": "error", - "typescript/no-floating-promises": ["error", { "ignoreVoid": true }], - "typescript/no-dynamic-delete": "error", - "typescript/no-unsafe-member-access": "error", - "typescript/unbound-method": "error", - "typescript/no-explicit-any": "error", - "typescript/no-empty-function": "off", - "typescript/prefer-optional-chain": ["error"], - "typescript/no-redundant-type-constituents": "off", - "typescript/restrict-template-expressions": "off", - "typescript/await-thenable": "warn", - "typescript/no-base-to-string": "off" - } - }, - { - "files": ["**/*.js", "**/*.mjs", "**/*.cjs"], - "rules": { - "typescript/ban-ts-comment": "off", - "typescript/consistent-type-imports": "off", - "typescript/prefer-optional-chain": "off", - "typescript/no-unnecessary-type-assertion": "off", - "typescript/prefer-for-of": "off", - "typescript/no-floating-promises": "off", - "typescript/no-dynamic-delete": "off", - "typescript/no-unsafe-member-access": "off", - "typescript/unbound-method": "off", - "typescript/no-explicit-any": "off" - } - }, - { - "files": [ - "**/*.test.ts", - "**/*.test.tsx", - "**/*.test.js", - "**/*.test.jsx", - "**/test/**", - "**/tests/**", - "**/suites/**", - "**/loader-suites/**" - ], - "rules": { - "typescript/explicit-function-return-type": "off", - "no-unused-expressions": "off", - "typescript/no-unused-expressions": "off", - "typescript/no-unnecessary-type-assertion": "off", - "typescript/no-unsafe-member-access": "off", - "typescript/no-explicit-any": "off", - "typescript/no-non-null-assertion": "off", - "typescript/no-floating-promises": "off", - "typescript/unbound-method": "off", - "max-lines": "off", - "complexity": "off", - "typescript/prefer-optional-chain": "off", - "typescript/no-misused-spread": "off", - "typescript/require-array-sort-compare": "off", - "typescript/no-base-to-string": "off", - "typescript/await-thenable": "off" - } - }, - { - "files": ["*.tsx"], - "rules": { - "jsdoc/require-jsdoc": "off" - } - }, - { - "files": ["*.config.js", "*.config.mjs", "*.config.ts", "vite.config.ts", ".size-limit.js"], - "rules": { - "no-console": "off", - "max-lines": "off" - } - }, - { - "files": ["**/integrations/node-fetch/vendored/**/*.ts"], - "rules": { - "typescript/consistent-type-imports": "off", - "typescript/no-unnecessary-type-assertion": "off", - "typescript/no-unsafe-member-access": "off", - "typescript/no-explicit-any": "off", - "typescript/prefer-for-of": "off", - "max-lines": "off", - "complexity": "off", - "no-param-reassign": "off" - } - }, - { - "files": ["**/integrations/tracing/redis/vendored/**/*.ts"], - "rules": { - "typescript/no-explicit-any": "off", - "typescript/no-unsafe-member-access": "off", - "typescript/no-this-alias": "off", - "max-lines": "off", - "no-bitwise": "off" - } - }, - { - "files": [ - "**/scenarios/**", - "**/fixtures/**", - "**/playground/**", - "**/rollup-utils/**", - "**/bundle-analyzer-scenarios/**", - "**/bundle-analyzer-scenarios/*.cjs", - "**/bundle-analyzer-scenarios/*.js" - ], - "rules": { - "no-console": "off" - } - }, - { - "files": ["**/src/**"], - "rules": { - "no-restricted-globals": ["error", "window", "document", "location", "navigator"] - } - } - ] -} diff --git a/.oxlintrc.json b/.oxlintrc.json deleted file mode 100644 index 83ff1674daf4..000000000000 --- a/.oxlintrc.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "extends": ["./.oxlintrc.base.json"], - "options": { - "typeAware": true - }, - "jsPlugins": [ - { - "name": "sdk", - "specifier": "@sentry-internal/eslint-plugin-sdk" - } - ], - "categories": {}, - "rules": { - "sdk/no-eq-empty": "error" - }, - "overrides": [ - { - "files": ["**/src/**"], - "rules": { - "sdk/no-class-field-initializers": "error", - "sdk/no-regexp-constructor": "error" - } - } - ], - "env": { - "es2017": true, - "node": true - }, - "globals": {}, - "ignorePatterns": [ - "coverage/**", - "build/**", - "dist/**", - "cjs/**", - "esm/**", - "examples/**", - "test/manual/**", - "types/**", - "scripts/*.js", - "node_modules/**" - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 31c8240d4708..000000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "editor.defaultFormatter": "oxc.oxc-vscode", - "js/ts.tsdk.path": "node_modules/typescript/lib" -} diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 19bac4f6d1a8..000000000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ -registry: https://registry.npmjs.org/ diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 6751d1afe8c4..000000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,743 +0,0 @@ -# Changelog - -## 5.3.0 - -### New Features ✨ - -- (babel) Auto-inject sentry-label from static text children by @antonis in [#925](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/925) - -### Bug Fixes 🐛 - -- (vite) Avoid version-specific plugin return type by @logaretm in [#928](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/928) - -### Internal Changes 🔧 - -- Fix craft config by @timfish in [#930](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/930) -- Update craft by @timfish in [#929](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/929) -- Use Rolldown v1 stable by @timfish in [#924](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/924) -- Remove old integration tests by @timfish in [#922](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/922) -- Ensure correct bundlers are resolved by @timfish in [#921](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/921) -- Fix telemetry tests to capture all envelopes by @timfish in [#920](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/920) - -## 5.2.1 - -### Bug Fixes 🐛 - -- (webpack) Await source map deletion before signaling build completion by @andreiborza in [#918](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/918) - -### Internal Changes 🔧 - -- (ci) Disable changelog preview by @chargome in [#917](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/917) -- Add additional integration tests by @timfish in [#914](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/914) -- Remove unused e2e tests by @timfish in [#915](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/915) - -## 5.2.0 - -### New Features ✨ - -- (core) Pass `mapDir` to `rewriteSourcesHook` by @chargome in [#908](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/908) -- Use `crypto.randomUUID` rather than `uuid` by @timfish in [#892](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/892) - -### Bug Fixes 🐛 - -- (core) Conditionally add tracing headers by @chargome in [#907](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/907) -- (e2e-tests) Pin axios to 1.13.5 to avoid compromised 1.14.1 by @andreiborza in [#906](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/906) -- (rollup) Make rollup an optional peer dependency by @andreiborza in [#913](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/913) -- Add missing webpack5 entrypoint in webpack-plugin by @brunodccarvalho in [#905](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/905) - -### Internal Changes 🔧 - -- (deps) Bump vulnerable webpack version by @chargome in [#909](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/909) -- (tests) Use deterministic debugids by @chargome in [#912](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/912) -- Add esbuild integration tests by @timfish in [#911](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/911) -- Vite integration tests by @timfish in [#899](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/899) -- Webpack integration tests by @timfish in [#904](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/904) -- Isolate integration test package installs by @timfish in [#902](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/902) -- Pin GitHub Actions to full-length commit SHAs by @joshuarli in [#900](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/900) -- Rollup integration tests by @timfish in [#897](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/897) -- New integration tests by @timfish in [#896](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/896) -- Remove lerna by @timfish in [#895](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/895) -- Migrate to Vitest by @timfish in [#894](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/894) - -## 5.1.1 - -### Bug Fixes 🐛 - -- Align `engines` with Node support by @timfish in [#893](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/893) - -### Internal Changes 🔧 - -- Use version range for magic-string by @JPeer264 in [#891](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/891) - -## 5.1.0 - -### New Features ✨ - -- Bump @sentry/cli from 2.57.0 to 2.58.5 by @andreiborza in [#890](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/890) - -## 5.0.0 - -### Breaking Changes 🛠 - -- Updating minimatch by @isaacs in [#885](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/885) -- Remove support for Node < v18 and webpack v4 by @timfish in [#886](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/886) - -### Bug Fixes 🐛 - -- (webpack) Deduplicate webpack deploys by @chargome in [#875](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/875) - -### Internal Changes 🔧 - -- Avoid direct usage of glob, extract into `globFiles` helper by @andreiborza in [#883](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/883) -- Migrate to oxfmt by @timfish in [#880](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/880) -- Build with Rolldown by @timfish in [#872](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/872) -- Remove unplugin by @timfish in [#876](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/876) -- Rollup/Vite no longer uses unplugin by @timfish in [#858](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/858) -- Esbuild no longer uses unplugin by @timfish in [#871](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/871) -- Webpack no longer uses unplugin by @timfish in [#870](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/870) - -## 4.9.1 - -### New Features ✨ - -- Track major version for Vite and Rollup by @timfish in [#867](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/867) - -### Internal Changes 🔧 - -- Bump craft for release workflow by @chargome in [#859](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/859) - -## 4.9.0 - -### New Features ✨ - -- (telemetry) Add `bundler-major-version` tag to webpack by @chargome in [#857](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/857) - -## 4.8.0 - -### New Features ✨ - -- Inject component annotations into HTML elements rather than React components by @timfish in [#851](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/851) -- Combine injection snippets by @timfish in [#853](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/853) -- Use Rolldown native `MagicString` by @timfish in [#846](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/846) - -## 4.7.0 - -- docs: Add RELEASE.md to document release process ([#834](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/834)) -- feat: Combine injection plugins ([#844](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/844)) -- fix(plugin-manager): Enable "rejectOnError" in debug ([#837](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/837)) -- fix(plugin-manager): Respect `sourcemap.ignore` values for injecting debugIDs ([#836](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/836)) -- fix(vite): Skip HTML injection for MPA but keep it for SPA ([#843](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/843)) - -
- Internal Changes - -- chore: Use pull_request_target for changelog preview ([#842](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/842)) -- ci(release): Switch from action-prepare-release to Craft ([#831](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/831)) -- test: Ensure Debug IDs match ([#840](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/840)) -
- -## 4.6.2 - -- fix(vite): Ensure sentryVitePlugin always returns an array of plugins ([#832](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/832)) -- fix(vite): Skip code injection for HTML facade chunks ([#830](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/830)) -- fix(rollup): Prevent double-injection of debug ID ([#827](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/827)) -- fix(esbuild): fix debug ID injection when moduleMetadata or applicationKey is set ([#828](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/828)) - -## 4.6.1 - -- chore(deps): Update glob to 10.5.0 ([#823](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/823)) - -
- Internal Changes - -- chore(core): Log release output ([#821](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/821)) -
- -## 4.6.0 - -- fix(core): Stop awaiting build start telemetry to avoid breaking module federation builds ([#818](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/818)) -- feat(core): Bump @sentry/cli from 2.51.0 to 2.57.0 ([#819](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/819)) - -## 4.5.0 - -- docs: added info on debug flag value precedence ([#811](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/811)) -- feat: add debug statements after sourcemap uploads ([#812](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/812)) -- feat(core): Allow multi-project sourcemaps upload ([#813](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/813)) -- fix: propagate the debug option to the cli ([#810](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/810)) - -## 4.4.0 - -- feat(core): Explicitly allow `undefined` as value for `authToken` option ([#805](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/805)) -- fix(core): Strip query strings from asset paths ([#806](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/806)) - -Work in this release was contributed by @aiktb. Thank you for your contribution! - -## 4.3.0 - -- feat(core): Extend deploy option to allow opting out of automatic deploy creation ([#801](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/801)) -- feat(core): No asset globbing for direct upload ([#800](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/800)) - -## 4.2.0 - -- feat(core): Add `prepareArtifacts` option for uploading sourcemaps ([#794](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/794)) -- perf: use premove for build clean ([#792](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/792)) -- fix(core): Forward headers option to sentry-cli ([#797](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/797)) - -Work in this release contributed by @liAmirali. Thank you for your contribution! - -## 4.1.1 - -- fix(react-native): Enhance fragment detection for indirect references ([#767](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/767)) - -## 4.1.0 - -- feat(deps): Bump @sentry/cli to 2.51.0 [#786](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/786) -- feat(core): Add flag for disabling sourcemaps upload [#785](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/785) -- fix(debugId): Add guards for injected code to avoid errors [#783](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/783) -- docs(options): Improve JSDoc for options [#781](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/781) -- feat(core): Expose method for injecting debug Ids from plugin manager [#784](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/784) - -## 4.0.2 - -- fix(core): Make `moduleMetadata` injection snippet ES5-compliant ([#774](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/774)) - -## 4.0.1 - -- fix(core): Make plugin inject ES5-friendly code ([#770](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/770)) -- fix(core): Use `renderChunk` for release injection for Rollup/Rolldown/Vite ([#761](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/761)) - -Work in this release was contributed by @grushetsky. Thank you for your contribution! - -## 4.0.0 - -### Breaking Changes - -- (Type change) Vite plugin now returns `VitePlugin` type instead of `any` -- Deprecated function `getBuildInformation` has been removed - -### List of Changes - -- feat(core)!: Remove `getBuildInformation` export ([#765](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/765)) -- feat(vite)!: Update return type of vite plugin ([#728](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/728)) - -## 3.6.1 - -- fix(core): Observe and handle Sentry CLI sourcemap upload failures ([#763](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/763)) - -## 3.6.0 - -- feat(core): Don't add `debugIdUploadPlugin` when sourcemaps option is disabled ([#753](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/753)) -- fix(core): Avoid showing success message if upload was disabled or nothing was uploaded ([#757](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/757)) - -## 3.5.0 - -- feat(core): Add hook to customize source map file resolution ([#732](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/732)) -- fix(core): Avoid console output and telemetry init when plugins are disabled ([#741](https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/741)) - -Work in this release was contributed by @thecodewarrior. Thank you for your contribution! - -## 3.4.0 - -- fix: Replace existing debug ID comments (#730) -- feat: Expose bundler plugin primitives via `createSentryBuildPluginManager` (#714) - -## 3.3.1 - -- fix(webpack5): All `esm` files must have `.mjs` postfix (#721) - -## 3.3.0 - -- feat(webpack): Add `@sentry/webpack-plugin/webpack5` export for webpack 5.1+ and compatible environments (#715) -- feat: Only do automatic commit association for Vercel production environments (#711) - -## 3.2.4 - -- Revert "feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700)" (#709) -- ref: Remove deprecated use of `useArtifacBundles` (#707) - -## 3.2.3 - -- feat(core): Use path instead of debug IDs as artifact names for debug ID upload (#700) -- feat(webpack): Primarily use `contentHash` for debug ID hash (#702) -- feat: Detect Vercel commits and env (#694) -- feat: Default to automatically setting commits on release (#692) - -## 3.2.2 - -- feat(annotation): Handle JSX member expressions (#690) -- fix(core): Don't crash on recoverable CLI command error (#682) -- chore: Suggest putting `SENTRY_AUTH_TOKEN`, `SENTRY_ORG` and `SENTRY_PROJECT` in `passThroughEnv` when using Turborepo (#675) - -## 3.2.1 - -- deps: Bump @sentry/cli to 2.42.2 (#685) - -## 3.2.0 - -- feat(core): Accept and await a promise in `sourcemaps.filesToDeleteAfterUpload` (#677) - -## 3.1.2 - -- deps: Bump `@sentry/cli` to `2.41.1` (#671) - -## 3.1.1 - -- fix(core): Disable release creation and source maps upload in dev mode (#666) - - This fix disables any external calls to the Sentry API for managing releases or uploading source maps, when detecting that the plugin is running in dev-mode. While this rarely actually happened, - it also polluted the dev server output with unnecessary logs about missing auth tokens, which shouldn't - be required in dev mode. - -## 3.1.0 - -- feat(webpack): Gate forced process exit behind experimental flag (#663) - -## 3.0.0 - -### Breaking Changes - -- Injected code will now use `let`, which was added in ES6 (ES2015). - This means that ES6 is the minimum JavaScript version that the Sentry bundler plugins support. - -- Deprecated options have been removed: - - `deleteFilesAfterUpload` - Use `filesToDeleteAfterUpload` instead - - `bundleSizeOptimizations.excludePerformanceMonitoring` - Use `bundleSizeOptimizations.excludeTracing` instead - - `_experiments.moduleMetadata` - Use `moduleMetadata` instead - - `cleanArtifacts` - Did not do anything - -### List of Changes - -- fix!: Wrap injected code in block-statement to contain scope (#646) -- chore!: Remove deprecated options (#654) -- feat(logger): Use console methods respective to log level (#652) -- fix(webpack): Ensure process exits when done (#653) -- fix: Use correct replacement matcher for `bundleSizeOptimizations.excludeTracing` (#644) - -Work in this release contributed by @jdelStrother. Thank you for your contribution! - -## 2.23.1 - -- fix(v2/core): Make `moduleMetadata` injection code ES5-compliant (#773) - -## 2.23.0 - -- chore(deps): bump nanoid from 3.3.6 to 3.3.8 (#641) -- feat(core): Detect Railway release name (#639) -- feat(core): Write module injections to `globalThis` (#636) -- feat(react-component-annotate): Allow skipping annotations on specified components (#617) -- ref(core): Rename release management plugin name (#647) - -Work in this release contributed by @conor-ob. Thank you for your contribution! - -## 2.22.7 - -- deps: Bump `@sentry/cli` to `2.39.1` and require specific version (#632) -- feat(telemetry): Record if plugin is run in CI (#627) - -## 2.22.6 - -- fix(core): Use sha256 instead of md5 to generate uuids from string (#619) - -## 2.22.5 - -- fix: Ignore stderr output from git command (#613) -- feat: Update Sentry telemetry to v8 (#604) -- deps: Update `@sentry/cli` to `2.36.1` (#609) - -## 2.22.4 - -- feat(react-component-annotate): Handle function body returning a ternary (#598) -- fix: Allow injection plugins to apply to files with query parameters and fragments in their name (#597) - -Work in this release contributed by @Thristhart. Thank you for your contribution! - -## 2.22.3 - -- fix(core): Always instantiate global `Error` class in injected code snippets (#594) - -## 2.22.2 - -- fix: Disable debug ID injection when `sourcemaps.disable` is set (#589) - -## 2.22.1 - -- fix: Use `sourcemaps.disable` to disable debug ID upload instead of legacy upload (#587) -- fix: Escape release string in injection snippet (#585) - -## 2.22.0 - -- deps: Bump `@sentry/cli` to `2.33.1` (#581) -- feat: Add `bundleSizeOptimizations.excludeTracing` option as alias to deprecated `bundleSizeOptimizations.excludePerformanceMonitoring` (#582) -- fix(vite-plugin): Ensure `post` order of `sentry-vite-release-injection-plugin` to avoid breaking `@rollup/plugin-commonjs` step (#578) - -## 2.21.1 - -- fix: Do not delete files before all upload tasks executed (#572) - -Work in this release contributed by @tyouzu1. Thank you for your contribution! - -## 2.21.0 - -- fix: Use `sequential` and `post` order for vite artifact deletion (#568) -- feat: Add option to disable sourcemaps (#561) - -Work in this release contributed by @tyouzu1. Thank you for your contribution! - -## 2.20.1 - -- feat(telemetry): Collect whether applicationKey is set (#559) -- fix: Wait for tasks depending on sourcemaps before deleting (#557) - -## 2.20.0 - -- feat: Export esbuild plugin as default (#555) - -## 2.19.0 - -- feat: Don't use word "error" in log message about telemetry (#548) -- feat(core): Detect releases from more providers (#549) -- fix: Always delete files when `sourcemaps.filesToDeleteAfterUpload` is set (#547) -- fix(vite): Fix environment variable loading issue for Windows (#545) - -Work in this release contributed by @Rassilion, and @mateusz-daniluk-xtb. Thank you for your contributions! - -## 2.18.0 - -- feat: Add `applicationKey` option to identify application code from within the SDK (#540) -- feat: Allow passing of meta-framework as telemetry data (#539) -- feat: Promote experimental `moduleMetadata` option to stable (#538) -- fix(esbuild): Invert warning about `bundle: true` (#542) - -## 2.17.0 - -- feat: Deprecate and noop `cleanArtifacts` (#525) -- feat: Support Heroku env vars when inferring release name (#517) -- fix(docs): Update pnpm install commands (#516) -- misc(esbuild): Log warning when attempting to inject debug IDs with esbuild `bundle` option active (#526) - -Work in this release contributed by @et84121, and @duailibe. Thank you for your contributions! - -## 2.16.1 - -- fix: Create word-based fidelity source mapping for code transformations (#513) -- fix: Also match `.cjs` and `.mjs` files when finding files to upload in rollup-based bundlers (#509) - -## 2.16.0 - -- feat(core): Add `loggerPrefixOverride` meta option (#506) - -## 2.15.0 - -- feat: Make options argument optional (#502) -- ref(annotate): Turn disabled message to debug log (#504) - -## 2.14.3 - -- deps(core): Unpin `@babel/core`, `find-up`, and `glob` (#496) - -Work in this release contributed by @allanlewis. Thank you for your contribution! - -## 2.14.2 - -- feat(core): Bundle in Sentry SDK deps (#487) - -## 2.14.1 - -- fix(core): Stop .env files from being picked up (#486) -- feat(core): Add telemetry for React component annotations (#482) - -## 2.14.0 - -- ref(component-annotate): Use default export (#478) - -## 2.13.0 - -- ref(component-annotate): Conform to Babel plugin naming conventions - -## 2.12.0 - -- ref(component-annotate): Prefix plugin name with `babel` - -## 2.11.0 - -- feat(core): Include component name annotation plugin with all bundler plugins except esbuild (#469) -- feat(component-annotate): Introduce new plugin to annotate frontend components at build-time (#468) - -## 2.10.3 - -- fix(core): Safely flush telemetry - -## 2.10.2 - -- deps(core): Bump `@sentry/cli` to `^2.22.3` (#451) - -## 2.10.1 - -- chore: bump @sentry/cli dependency to 2.21.4 (#440) - -## 2.10.0 - -- feat: deprecate `excludeReplayCanvas` config (#436) -- feat: Add `excludeReplayWorker` to `bundleSizeOptimizations` (#433) - -## 2.9.0 - -- feat: Allow to configure `bundleSizeOptimizations` (#428) -- fix(core): Don't abort source map location guessing when the reference is a URL (#424) -- fix(core): Widen detection of source maps with `.cjs.map` and `.mjs.map` (#422) - -## 2.8.0 - -- build(core): Bump Sentry CLI to v2.21.2 (#415) -- feat: Detect release name for Bitbucket pipelines (#404) -- feat: Detect release name for Flightcontrol (#411) -- fix(core): Move git revision to a separate function (#399) -- fix(esbuild): Don't inject debug IDs into injected modules (#417) - -Work in this release contributed by @hoslmelq, @mjomble, and @aquacash5. Thank you for your contributions! - -## 2.7.1 - -- docs: Point to org auth token page (#393) -- fix(webpack): Add `default` fallback to webpack import (#395) -- fix: Save results of `rewriteSourcesHook` (#390) - -Work in this release contributed by @adonskoy. Thank you for your contribution! - -## 2.7.0 - -- feat: Add module metadata injection for esbuild (#381) -- feat: Add module metadata injection for vite and rollup (#380) -- ref: Emit high resolution source-maps with `magic-string` (#383) -- ref: Run upload preparation with maximum concurrency (#379) - -## 2.6.2 - -- fix: Fix regex in source map locating heuristic via `sourceMappingURL` (#376) -- fix: Make sourceMappingURL heuristic more resilient (#378) - -Thanks to @tomyam1 for identifying and pinpointing a bug that was hard to spot! - -## 2.6.1 - -- fix: Don't crash on failed delete after upload (#373) - -## 2.6.0 - -- deps: Bump sentry-cli to 2.20.1 (#355) -- feat: Allow ommiting `org` when using organization auth token (#368) -- ref: Make asset detection more robust (#369) - -## 2.5.0 - -- deps: Bump and unpin Sentry SDK deps (#353) -- docs: Remove misleading documentation (#339) -- feat: Add experimental module metadata injection (#334) -- fix: Fix 'identifiy' typo in log messages (#341) - -Work in this release contributed by @chunfeilung. Thank you for your contribution! - -## 2.4.0 - -- docs: Update instructions to install Vite plugin via pnpm (#331) -- docs: Update minimum supported Node.js version to 14 (#327) -- feat: Add configuration via `.env.sentry-build-plugin` file (#333) -- ref: Use full git SHA for release name (#330) - -Work in this release contributed by @ffxsam and @emilsivervik. Thank you for your contributions! - -## 2.3.0 - -- feat(webpack): Generate deterministic debug IDs (#321) -- feat: Add `filesToDeleteAfterUpload` alias for `deleteFilesAfterUpload` (#313) -- feat: Sort globbed files to ensure deterministic bundle IDs (#318) -- fix(esbuild): Don't override user code with proxy module (#322) -- fix(esbuild): Fix debug ID generation (#325) -- fix: Use `SENTRY_RELEASE` environment variable to set `release.name` option (#317) - -Work in this release contributed by @smbroadley. Thank you for your contribution! - -## 2.2.2 - -- fix(esbuild): Don't use namespace for esbuild proxy resolving (#311) -- fix: Update commentUseStrictRegex to be lazy instead of greedy (#309) - -Work in this release contributed by @jdk2pq. Thank you for your contribution! - -## 2.2.1 - -- fix(esbuild): Inject different debug IDs into different output bundles (#301) -- fix(webpack): Set minimum webpack 4 peer dep to `4.40.0` (#290) -- fix: Use magic-string `appendLeft` instead of `replace` (#303) -- ref: Improve log message when sourcemap cannot be found (#287) - -## 2.2.0 - -- ref(core): Make better use of Sentry (#246) -- ref(webpack): Use webpack peer dependency (#273) - -Work in this release was made possible with help from @wojtekmaj and @dobladov. Thank you for your contributions! - -## 2.1.0 - -- docs: Add removal of `configFile` option to migration guide (#266) -- feat: Auto detect build artifacts (#257) -- fix(core): Ignore query and hash in filepaths for release injection (#272) -- fix(esbuild): Use absolute path for virtual file resolving (#269) -- fix: Don't show log message if telemetry is disabled (#267) -- fix: Use automatic release name detection for release injection (#271) - -## 2.0.0 - -Version 2.0.0 marks the official release of the `@sentry/vite-plugin`, `@sentry/esbuild-plugin` and `@sentry/rollup-plugin` packages. -They are now considered stable. - -For the `@sentry/webpack-plugin` this is a major release with breaking changes. -Please refer to the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md) for instructions on how to upgrade. - -- feat(core): Add `deleteFilesAfterUpload` option (#244) -- feat(core): Implements rewrite sources for debug ID upload (#243) -- fix(core): Account for undefined release name values (#251) -- fix(webpack): Inject different debug IDs for different bundles (#242) -- ref(core): Add new options type for future use (#216) -- ref(core): Extract debug ID injection into separate plugins (#230) -- ref(core): Extract debug ID sourcemap upload into a separate plugin (#231) -- ref(core): Extract release injection into separate plugins (#218) -- ref(core): Extract release management into a separate plugin (#232) -- ref(core): Extract telemetry into a separate plugin (#234) -- ref(core): Switch to v2 options (#237) -- ref(core): Use debug ID as filename for upload (#247) -- ref(core): Use factory function to create individual plugins (#229) -- ref: Remove `injectReleasesMap` option (#236) - -## 0.7.2 - -- fix(core): Use createRequire to not use built-in require in ESM (#212) - -## 0.7.1 - -- fix(core): Fix vite complaining about CJS import of webpack-sources (#210) - -## 0.7.0 - -This release introduces the `sourcemaps` option. This option switches to a new system of handling source maps in Sentry. - -While the old system is still available via the `include` option, the recommended way forward is the `sourcemaps` option. - -You can configure the `sourcemaps` option as follows: - -```js -plugin({ - org: "Your organization", - project: "Your project", - authToken: "Your auth token", - - sourcemaps: { - // Specify the directory containing build artifacts - assets: "./dist/**", - }, -}); -``` - -- feat(esbuild): Add debug ID injection for esbuild (#202) -- feat: Promote debug ID uploading to stable via `sourcemaps` option (#204) -- fix(core): Also do debug ID injection for `.cjs` files (#203) -- fix: Add typing exports to packages (#208) - -## 0.6.1 - -- ref: Run upload preparation with maximum concurrency (#382) - -## 0.6.0 - -- feat(webpack): Add debug ID injection to the webpack plugin (#198) -- fix(core): Don't exclude release injection module (#200) -- ref(core): Don't interact with Sentry in watch-mode (#199) - -Work in this release contributed by @hakubo. Thank you for your contribution! - -## 0.5.1 - -- fix(core): Skip all transformations for 3rd party modules - -## 0.5.0 - -- feat(core): Add `injectRelease` and `uploadSourceMaps` options (#190) -- feat(core): Add experimental debug ID based source map upload to Rollup and Vite plugins (#192) -- feat(core): Import release injection code from each module (#188) -- feat: Add `_experiments.injectBuildInformation` option (#176) -- feat: Add `sentryCliBinaryExists` function (#171) - -Work in this release contributed by @alexandresoro and @dcyou. Thank you for your contributions! - -## 0.4.0 - -This release contains breaking changes. Please refer to the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md) on how to update from version `0.3.x` to `0.4.x`. - -- deps(core): Bump unplugin version (#164) -- ref(core): Only inject release into entrypoints per default (#166) (BREAKING) -- ref: Remove `customHeader` option (#167) (BREAKING) -- ref: Turn default exports into named exports (#165) (BREAKING) - -Work in this release contributed by @manniL. Thank you for your contribution! - -## 0.3.0 - -Note: This release bumps the [`@sentry/cli`](https://www.npmjs.com/package/@sentry/cli) dependency from version `1.x` to version `2.x`. - -- feat(core): Add headers option (#153) - -Work in this release contributed by @robertcepa. Thank you for your contribution! - -## 0.2.4 - -- build(core): Update magic-string due to deprecated dependency (#146) -- ref(core): Send project as `dist` in telemetry (#148) - -Work in this release contributed by @jperelli. Thank you for your contribution! - -## 0.2.3 - -- fix: Exclude `node_modules` from release injection (#143) - -## 0.2.2 - -- feat(core): Remove `server_name` from telemetry events (#135) -- fix: Add definitions in package.json for ESM resolution (#141) -- fix(core): Finish spans when CLI commands fail (#136) -- ref(core): Decouple breadcrumb usage from logger (#138) -- ref(core): Don't record stack traces for telemetry (#137) - -## 0.2.1 - -- fix(core): Fix telemetry option logic (#128) -- fix(core): Normalize `id` and `releaseInjectionTargets` in `transformInclude` (#132) - -## 0.2.0 - -This release replaces the `entries` option with `releaseInjectionTargets` which is a breaking change from previous versions. -For more information, take a look at the [migration guide](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/MIGRATION.md#replacing-entries-option-with-releaseinjectiontargets). - -- feat: Replace `entries` option with `releaseInjectionTargets` (#123) - -## 0.1.0 - -With this release, the Sentry bundler plugins support all features of the standalone Sentry Webpack plugin. -Please note that breaking changes might still be introduced. - -- Re-added Sentry CLI to the project (#85). - The bundler plugins use Sentry CLI to create releases and upload sourcemaps -- Added missing Release creation steps - - feat(core): Add `setCommits` (#96) - - feat(core): Add `deploy` command (#97) -- Added validation of plugin options (#104) -- Refined `telemetry` option to only send events to Sentry for projects uploading source maps to Sentry's SaaS instance (#99). For self-hosted Sentry servers, nothing will be sent to Sentry. -- Updated `README.md` files with examples and option descriptions for each bundler plugin (#117) - -Link to [Full Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/compare/0.0.1-alpha.0...main) - -## 0.0.1-alpha.0 - -This release marks the first release of the Sentry bundler blugins. This is still a heavy work in progress and a lot of things are still missing and subject to change - -- Initial release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 8c49965a361e..000000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,79 +0,0 @@ -

- - Sentry - -

- -# Contributing - -We welcome suggested improvements and bug fixes to the `@sentry/*` family of packages, in the form of pull requests on [`GitHub`](https://github.com/getsentry/sentry-javascript-bundler-plugins). The guide below will help you get started, but if you have further questions, please feel free to reach out on [Discord](https://discord.gg/Ww9hbqr). - -## Setting up an Environment - -To run the test suite and our code linter, node.js and yarn are required. - -[`node` download](https://nodejs.org/download) -[`yarn` download](https://yarnpkg.com/en/docs/install) - -`sentry-javascript-bundler-plugins` is a monorepo containing several packages, and we use `nx` to manage them. To get started, install all dependencies and then perform an initial build. - -``` -$ yarn -$ yarn build -``` - -With that, the repo is fully set up and you are ready to run all commands. - -## Building Packages - -Since we are using [`TypeScript`](https://www.typescriptlang.org/), you need to transpile the code to JavaScript to be able to use it. From the top level of the repo, there are three commands available: - -- `yarn build`, which runs a one-time build (transpiling and type generation) of every package -- `yarn build:watch`, which runs the command listed above in watch mode, meaning the command is re-executed after every file change - -## Adding Tests - -**Any nontrivial fixes/features should include tests.** You'll find a `test` folder in each package. - -## Running Tests - -Running tests works the same way as building - running `yarn test` at the project root will run tests for all packages, and running `yarn test` in a specific package will run tests for that package. There are also commands to run subsets of the tests in each location. Check out the `scripts` entry of the corresponding `package.json` for details. - -## Linting - -Similar to building and testing, linting can be done in the project root or in individual packages by calling `yarn lint`. - -## Considerations Before Sending Your First PR - -When contributing to the codebase, please note: - -- Non-trivial PRs will not be accepted without tests (see above). - If you need assistance in writing tests, feel free to reach out to us. -- Please do not bump version numbers yourself. - -## PR reviews - -For feedback in PRs, we use the [LOGAF scale](https://blog.danlew.net/2020/04/15/the-logaf-scale/) to specify how important a comment is: - -- `l`: low - nitpick. You may address this comment, but you don't have to. -- `m`: medium - normal comment. Worth addressing and fixing. -- `h`: high - Very important. We must not merge this PR without addressing this issue. - -You only need one approval from a maintainer to be able to merge. For some PRs, asking specific or multiple people for review might be adequate. - -Our different types of reviews: - -1. **LGTM without any comments.** You can merge immediately. -2. **LGTM with low and medium comments.** The reviewer trusts you to resolve these comments yourself, and you don't need to wait for another approval. -3. **Only comments.** You must address all the comments and need another review until you merge. -4. **Request changes.** Only use if something critical is in the PR that absolutely must be addressed. We usually use `h` comments for that. When someone requests changes, the same person must approve the changes to allow merging. Use this sparingly. - -## Publishing a Release - -_These steps are only relevant to Sentry employees when preparing and publishing a new SDK release._ - -1. Determine what version will be released (we use [semver](https://semver.org)). -2. Run the [Prepare Release](https://github.com/getsentry/sentry-javascript-bundler-plugins/actions/workflows/release.yml) workflow. -3. A new issue should appear in https://github.com/getsentry/publish/issues. -4. At this point, you can review the new changelog entry on the `relase/` branch and make adjustments if necessary. -5. Start the release by adding the approval label on the publish issue diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 293314012679..000000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Functional Software, Inc. dba Sentry - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/MIGRATION.md b/MIGRATION.md deleted file mode 100644 index 2bd279985e8f..000000000000 --- a/MIGRATION.md +++ /dev/null @@ -1,118 +0,0 @@ -# Migration Guide - -This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins. - -## Upgrading to 2.x - -- Removed `injectReleasesMap` option. If you need to inject values based on the build, please use your bundler's way of injecting values ([rollup](https://www.npmjs.com/package/@rollup/plugin-replace), [vite](https://vitejs.dev/config/shared-options.html#define), [webpack](https://webpack.js.org/plugins/define-plugin/), [esbuild](https://esbuild.github.io/api/#define)). -- The minimum compatible version of rollup is version `3.2.0`. -- Removed functionality for the `releaseInjectionTargets` option. -- `@sentry/bundler-plugin-core` will no longer export the individual plugins but a factory function to create them. -- Removed `customHeader` option in favor of `headers` option which allows for multiple headers to be attached to outgoing requests. -- The `cliBinaryExists` function was renamed to `sentryCliBinaryExists` -- Removed the `configFile` option. Options should now be set explicitly or via environment variables. - This also means that `.sentryclirc` files will no longer work as a means of configuration. - Please manually pass in options, or use a configuration file ([Webpack plugin docs](https://www.npmjs.com/package/@sentry/webpack-plugin#configuration-file), [Vite plugin docs](https://www.npmjs.com/package/@sentry/vite-plugin#configuration-file), [esbuild plugin docs](https://www.npmjs.com/package/@sentry/esbuild-plugin#configuration-file), [Rollup plugin docs](https://www.npmjs.com/package/@sentry/rollup-plugin#configuration-file)). -- The minimum supported Node.js version is now 14 and newer. -- Removed `dryRun` option. - -## Upgrading from 1.x to 2.x (Webpack Plugin Only) - -Version 2 of `@sentry/webpack-plugin` is a complete rewrite of version 1, relying on bundler-agnostic code (based on [unjs/unplugin](https://github.com/unjs/unplugin)). While we tried to keep changes to v1 of the webpack plugin minimal, a adjustments are nevertheless necessary: - -### Initialization and Required Values - -Previously, to use the plugin, you had to create a new class of the `SentryCLIPlugin` class. -In version 2, you simply need to call a function and pass the initialization options to it: - -```js -// old initialization: -import SentryCliPlugin from "@sentry/webpack-plugin"; -new SentryCliPlugin({ - // ... options -}); - -// new initialization: -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -sentryWebpackPlugin({ - // ... options -}); -``` - -### Removal of `include` for `sourcemap` option - -The `include` option was removed in favour of the new `sourcemaps` option. If you cannot migrate to the `sourcemaps`, `include` is still avaliable as the `uploadLegacySourcemaps` option. - -Use the `sourcemaps.assets` and `sourcemaps.ignore` options to indicate to the plugin which sourcemaps should be uploaded to Sentry. The plugin now also exposes `sourcemaps.deleteAfterUpload` to delete your sourcemaps after they have been uploaded to Sentry. With the `sourcemaps` options, you no longer need to set filename transforms like `urlPrefix` because the plugin uses a new debug IDs system to associate sourcemaps to your bundles. - -```js -// old initialization: -import SentryWebpackPlugin from "@sentry/webpack-plugin"; -new SentryWebpackPlugin({ - include: { - paths: ["./path1", "./path2"], - ignore: ["./path2/ignore"], - urlPrefix: "~/static/js", - }, -}); - -// new initialization: -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -sentryWebpackPlugin({ - sourcemaps: { - assets: ["./path1/**", "./path2/**"], - ignore: ["./path2/ignore/**"], - deleteFilesAfterUpload: ["./path1/**/*.map", "./path2/**/*.map"], - }, -}); -``` - -## Upgrading from 0.3.x to 0.4.x - -### Replacing default exports with named exports - -Previously all the plugins were exported as default exports. -Moving forward, with version `0.4.x` of the plugins, all exports become named exports: - -```ts -import sentryVitePlugin from "@sentry/vite-plugin"; -// becomes -import { sentryVitePlugin } from "@sentry/vite-plugin"; - -import sentryEsbuildPlugin from "@sentry/esbuild-plugin"; -// becomes -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; - -import sentryRollupPlugin from "@sentry/rollup-plugin"; -// becomes -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -``` - -### Renaming of `Options` type export - -The `Options` type was a bit too generic for our taste so we renamed it: - -```ts -import type { Options } from "@sentry/vite-plugin"; -// becomes -import type { SentryVitePluginOptions } from "@sentry/vite-plugin"; - -import type { Options } from "@sentry/esbuild-plugin"; -// becomes -import type { SentryEsbuildPluginOptions } from "@sentry/esbuild-plugin"; - -import type { Options } from "@sentry/rollup-plugin"; -// becomes -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; -``` - -### Behavioral change of `releaseInjectionTargets` - -Previously the plugins injected a Sentry release value into every module that was processed. -This approach caused problems in some cases so moving forward, they will only inject the release value into entrypoints by default. - -In case you need more fine grained control over which modules should have a release value, you can use the `releaseInjectionTargets` option. - -### Removal of `customHeader` option - -We removed the `customHeader` option in favor of the `headers` option. diff --git a/README.md b/README.md deleted file mode 100644 index 5c3cb7f499c5..000000000000 --- a/README.md +++ /dev/null @@ -1,40 +0,0 @@ -

- - Sentry - -

- -# Sentry Bundler Plugins - -Sentry plugins for various JavaScript bundlers. Currently supporting Rollup, Vite, esbuild, Webpack 5. - -Check out the individual packages for more information and examples: - -- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) -- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) -- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) -- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) - -### Features - -The Sentry Bundler Plugins take care of Sentry-related tasks at build time of your JavaScript projects. It supports the following features: - -- Sourcemap upload -- Release creation in Sentry -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically associate errors with releases (Release injection) -- [Show React component display names for breadcrumbs and Session Replays](https://docs.sentry.io/platforms/javascript/guides/react/features/component-names/) - -### More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) - -## Contributors - -Thanks to everyone who contributed to the Sentry JavaScript Bundler Plugins! - - - - diff --git a/packages/integration-tests-next/.gitignore b/dev-packages/bundler-plugin-integration-tests/.gitignore similarity index 100% rename from packages/integration-tests-next/.gitignore rename to dev-packages/bundler-plugin-integration-tests/.gitignore diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/after-upload-deletion-promise.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.js diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/after-upload-deletion.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.js diff --git a/packages/integration-tests-next/fixtures/configs/application-key.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/application-key.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/application-key.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.js diff --git a/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic-release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic-sourcemaps.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.js diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.cjs diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/basic.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.js diff --git a/packages/integration-tests-next/fixtures/configs/build-info.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/build-info.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/build-info.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.js diff --git a/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/bundle-size-optimizations.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.js diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation-next.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation-next.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.js diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/component-annotation.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.js diff --git a/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/debugid-disabled.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/debugid-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/debugids-already-injected.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.js diff --git a/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/dont-mess-up-user-code.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.js diff --git a/packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/errorhandling.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/errorhandling.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.js diff --git a/packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/module-metadata.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/module-metadata.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.js diff --git a/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/multiple-entry-points.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.js diff --git a/packages/integration-tests-next/fixtures/configs/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/configs/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/package.json diff --git a/packages/integration-tests-next/fixtures/configs/query-param.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/query-param.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/query-param.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/query-param.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.js diff --git a/packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/release-disabled.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/release-value-with-quotes.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.js diff --git a/packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/telemetry.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/telemetry.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.js diff --git a/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts similarity index 100% rename from packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.d.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts diff --git a/packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/configs/vite-mpa-extra-modules.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/application-key.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/build-info.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/debugid-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/errorhandling.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/esbuild-inject-compat.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/module-metadata.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json diff --git a/packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/esbuild/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/basic.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/common.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/esbuild/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/import.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/index.js diff --git a/packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/inject-compat-index.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/inject-compat-index.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/inject-compat-index.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/src/inject.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/inject.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/inject.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/inject.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/telemetry.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js diff --git a/packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/esbuild/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/esbuild/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/utils.ts diff --git a/packages/integration-tests-next/fixtures/patches/@sentry__cli.patch b/dev-packages/bundler-plugin-integration-tests/fixtures/patches/@sentry__cli.patch similarity index 100% rename from packages/integration-tests-next/fixtures/patches/@sentry__cli.patch rename to dev-packages/bundler-plugin-integration-tests/fixtures/patches/@sentry__cli.patch diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/application-key.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/build-info.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation-next.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/debugid-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/debugids-already-injected.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/errorhandling.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/module-metadata.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/query-param.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/rolldown/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/basic.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/common.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/rolldown/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/import.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/index.js diff --git a/packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/telemetry.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/rolldown/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rolldown/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/application-key.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/build-info.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation-next.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/debugid-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/errorhandling.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/module-metadata.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json diff --git a/packages/integration-tests-next/fixtures/rollup3/query-param.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/query-param.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/rollup3/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/basic.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/common.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/rollup3/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/import.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/index.js diff --git a/packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/telemetry.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js diff --git a/packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup3/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup3/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/utils.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/application-key.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/build-info.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation-next.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/debugid-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/debugids-already-injected.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/errorhandling.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/module-metadata.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json diff --git a/packages/integration-tests-next/fixtures/rollup4/query-param.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/query-param.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/rollup4/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/basic.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/common.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/rollup4/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/import.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/index.js diff --git a/packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/telemetry.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js diff --git a/packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/rollup4/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/rollup4/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/utils.ts diff --git a/packages/integration-tests-next/fixtures/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/utils.ts diff --git a/packages/integration-tests-next/fixtures/vite-type-compat.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite-type-compat.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/after-upload-deletion.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/application-key.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/build-info.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation-next.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/debugid-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/errorhandling.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/module-metadata.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/multiple-entry-points.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/query-param.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/vite4/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/basic.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/common.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/vite4/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/import.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/index.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/shared-module.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/shared-module.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/shared-module.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/shared-module.js diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-index.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/vite-mpa-index.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-index.html diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-page1.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page1.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-page1.html diff --git a/packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-page2.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/src/vite-mpa-page2.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/src/vite-mpa-page2.html diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/telemetry.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/vite4/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/utils.ts diff --git a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts diff --git a/packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite4/vite-mpa-extra-modules.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.test.ts diff --git a/packages/integration-tests-next/fixtures/vite6/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/vite6/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/after-upload-deletion.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/application-key.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/build-info.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation-next.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/debugid-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/debugids-already-injected.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/debugids-already-injected.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/errorhandling.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/module-metadata.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/multiple-entry-points.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json diff --git a/packages/integration-tests-next/fixtures/vite7/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/query-param.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/vite7/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/basic.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/common.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/vite7/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/import.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/index.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/shared-module.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/shared-module.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/shared-module.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/shared-module.js diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-index.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/vite-mpa-index.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-index.html diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-page1.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page1.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-page1.html diff --git a/packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-page2.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/src/vite-mpa-page2.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/src/vite-mpa-page2.html diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/telemetry.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/vite7/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/utils.ts diff --git a/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts diff --git a/packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite7/vite-mpa-extra-modules.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/after-upload-deletion.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/application-key.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/build-info.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation-next.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/debugid-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/debugids-already-injected.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/debugids-already-injected.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/dont-mess-up-user-code.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/errorhandling.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/module-metadata.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/multiple-entry-points.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/query-param.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/query-param.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/query-param.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/release-disabled.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/vite8/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/basic.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/common.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/vite8/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/import.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/import.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/import.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/import.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/index.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/index.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/index.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/index.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/shared-module.js b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/shared-module.js similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/shared-module.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/shared-module.js diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-index.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/vite-mpa-index.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-index.html diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-page1.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page1.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-page1.html diff --git a/packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-page2.html similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/src/vite-mpa-page2.html rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/src/vite-mpa-page2.html diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/telemetry.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/vite8/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/utils.ts diff --git a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.config.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts diff --git a/packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/vite8/vite-mpa-extra-modules.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/after-upload-deletion-promise.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/after-upload-deletion.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/application-key.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/application-key.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/application-key.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-cjs.config.cjs rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-cjs.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic-sourcemaps.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/basic.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/basic.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/build-info.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/build-info.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/bundle-size-optimizations.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation-next.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation-next.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/component-annotation.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/debugid-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/debugid-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/debugids-already-injected.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/errorhandling.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/errorhandling.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/module-metadata.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/module-metadata.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/multiple-entry-points.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/package.json rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json diff --git a/packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/release-disabled.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/release-disabled.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/release-value-with-quotes.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/src/app.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/app.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/app.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/app.jsx diff --git a/packages/integration-tests-next/fixtures/webpack5/src/basic.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/basic.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/basic.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/basic.js diff --git a/packages/integration-tests-next/fixtures/webpack5/src/bundle.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/bundle.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/bundle.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/bundle.js diff --git a/packages/integration-tests-next/fixtures/webpack5/src/common.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/common.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/common.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/common.js diff --git a/packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/component-a.jsx similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/component-a.jsx rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/component-a.jsx diff --git a/packages/integration-tests-next/fixtures/webpack5/src/entry1.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/entry1.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/entry1.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/entry1.js diff --git a/packages/integration-tests-next/fixtures/webpack5/src/entry2.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/entry2.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/entry2.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/entry2.js diff --git a/packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/release-value-with-quotes.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/src/release-value-with-quotes.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/src/release-value-with-quotes.js diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/telemetry.config.js rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js diff --git a/packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.test.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/telemetry.test.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.test.ts diff --git a/packages/integration-tests-next/fixtures/webpack5/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/utils.ts similarity index 100% rename from packages/integration-tests-next/fixtures/webpack5/utils.ts rename to dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/utils.ts diff --git a/packages/integration-tests-next/package.json b/dev-packages/bundler-plugin-integration-tests/package.json similarity index 100% rename from packages/integration-tests-next/package.json rename to dev-packages/bundler-plugin-integration-tests/package.json diff --git a/packages/integration-tests-next/setup.mjs b/dev-packages/bundler-plugin-integration-tests/setup.mjs similarity index 100% rename from packages/integration-tests-next/setup.mjs rename to dev-packages/bundler-plugin-integration-tests/setup.mjs diff --git a/packages/integration-tests-next/tsconfig.json b/dev-packages/bundler-plugin-integration-tests/tsconfig.json similarity index 100% rename from packages/integration-tests-next/tsconfig.json rename to dev-packages/bundler-plugin-integration-tests/tsconfig.json diff --git a/nx.json b/nx.json deleted file mode 100644 index 3370dbfae283..000000000000 --- a/nx.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$schema": "./node_modules/nx/schemas/nx-schema.json", - "namedInputs": { - "default": ["{projectRoot}/**/*", "sharedGlobals"], - "sharedGlobals": ["{workspaceRoot}/*.js", "{workspaceRoot}/*.json", "{workspaceRoot}/yarn.lock"] - }, - "targetDefaults": { - "build": { - "inputs": ["default"], - "dependsOn": ["^build"], - "outputs": ["{projectRoot}/dist"], - "cache": true - }, - "lint": { - "inputs": ["default"], - "dependsOn": ["^build", "build"], - "cache": true - }, - "test": { - "inputs": ["default"], - "cache": false - }, - "check:types": { - "inputs": ["default"], - "dependsOn": ["^build"] - }, - "build:npm": { - "dependsOn": ["build", "^build"] - } - }, - "cacheDirectory": ".nxcache", - "tui": { - "autoExit": true - }, - "nxCloudOptions": { - "detectFlakyTasks": false - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 8d03e5241654..000000000000 --- a/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "@sentry/sentry-javascript-bundler-plugins", - "version": "0.0.0", - "description": "Sentry Bundler Plugins Monorepo.", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins", - "private": true, - "workspaces": [ - "packages/babel-plugin-component-annotate", - "packages/bundler-plugin-core", - "packages/bundler-plugins", - "packages/dev-utils", - "packages/esbuild-plugin", - "packages/playground", - "packages/rollup-plugin", - "packages/vite-plugin", - "packages/webpack-plugin", - "packages/integration-tests-next" - ], - "scripts": { - "build": "nx run-many --target=build --all", - "build:watch": "nx run-many --target=build:watch --all", - "build:graph": "nx graph", - "build:npm": "nx run-many --target=build:npm --all", - "check:types": "nx run-many --target=check:types --all", - "clean": "nx run-many --target=clean --all", - "clean:all": "nx run-many --target=clean:all --all && yarn", - "test": "nx run-many --target=test --all", - "test:unit": "nx run-many --target=test --all --exclude=@sentry-internal/integration-tests-next", - "test:integration": "nx run @sentry-internal/integration-tests-next:test", - "lint": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint .", - "lint:fix": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint . --fix", - "check:formatting": "oxfmt --check .", - "fix:formatting": "oxfmt ." - }, - "devDependencies": { - "@types/node": "^18.6.3", - "@sentry-internal/eslint-plugin-sdk": "^10.53.1", - "@sentry-internal/typescript": "^10.53.1", - "minimatch": "^10.2.2", - "npm-run-all": "^4.1.5", - "nx": "22.5.2", - "oxfmt": "^0.33.0", - "oxlint": "1.53.0", - "oxlint-tsgolint": "0.16.0", - "typescript": "~5.8.0" - }, - "volta": { - "node": "22.22.0", - "yarn": "1.22.22" - } -} diff --git a/packages/babel-plugin-component-annotate/.gitignore b/packages/babel-plugin-component-annotate/.gitignore deleted file mode 100644 index 36d3a9c3ae4b..000000000000 --- a/packages/babel-plugin-component-annotate/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -.DS_Store diff --git a/packages/babel-plugin-component-annotate/LICENSE b/packages/babel-plugin-component-annotate/LICENSE deleted file mode 100644 index 042360affa02..000000000000 --- a/packages/babel-plugin-component-annotate/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2024, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/babel-plugin-component-annotate/README.md b/packages/babel-plugin-component-annotate/README.md deleted file mode 100644 index 7783c75859d0..000000000000 --- a/packages/babel-plugin-component-annotate/README.md +++ /dev/null @@ -1,95 +0,0 @@ -

- - Sentry - -

- -# Sentry Babel Component Annotate Plugin - -[![npm version](https://img.shields.io/npm/v/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) -[![npm dm](https://img.shields.io/npm/dm/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@sentry/babel-plugin-component-annotate) -[![npm dt](https://img.shields.io/npm/dt/@sentry/babel-plugin-component-annotate.svg)](https://www.npmjs.com/package/@babel-plugin-component-annotate) - -A Babel plugin that automatically annotates your output DOM with their respective frontend component names. -This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring. -Please note that your Sentry JavaScript SDK version must be at least `7.91.0` to take advantage of these features. -Currently, this plugin only works with React, and will exclusively parse `.jsx` and `.tsx` files. - -### Note - -This plugin comes included in Sentry's bundler plugins, alongside many other features to improve your Sentry workflow. -It can be downloaded individually, but it is recommended that you install the bundler plugins for your respective bundler, and enable this feature through the config object. - -Check out the supported bundler plugin packages for installation instructions: - -- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) -- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) -- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) -- esbuild: Not currently supported - -## Installation - -Using npm: - -```bash -npm install @sentry/babel-plugin-component-annotate --save-dev -``` - -Using yarn: - -```bash -yarn add @sentry/babel-plugin-component-annotate --dev -``` - -Using pnpm: - -```bash -pnpm add @sentry/babel-plugin-component-annotate --save-dev -``` - -## Options - -### `ignoredComponents` - -Type: `string[]` - -A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components. - -## Example - -```js -// babel.config.js - -{ - // ... other config above ... - - plugins: [ - // Put this plugin before any other plugins you have that transform JSX code - // The options are set by providing an object as the second element in the array, but not required - ['@sentry/babel-plugin-component-annotate', {ignoredComponents: ['Foo', 'Bar']}] - ], -} -``` - -Or alternatively, configure the plugin by directly importing it: - -```js -// babel.config.js - -import componentNameAnnotatePlugin from '@sentry/babel-plugin-component-annotate'; - -{ - // ... other config above ... - - plugins: [ - // Put this plugin before any other plugins you have that transform JSX code - [componentNameAnnotatePlugin] - ], -} -``` - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json deleted file mode 100644 index 6506229f8ed4..000000000000 --- a/packages/babel-plugin-component-annotate/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "@sentry/babel-plugin-component-annotate", - "version": "5.3.0", - "description": "A Babel plugin that annotates frontend components with additional data to enrich the experience in Sentry", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/babel-plugin-component-annotate", - "author": "Sentry", - "license": "MIT", - "keywords": [ - "Sentry", - "React", - "bundler", - "plugin", - "babel", - "component", - "annotate" - ], - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "devDependencies": { - "@types/node": "^18.6.3", - "premove": "^4.0.0", - "rolldown": "^1.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/packages/babel-plugin-component-annotate/rollup.config.mjs b/packages/babel-plugin-component-annotate/rollup.config.mjs deleted file mode 100644 index 4e04614e760f..000000000000 --- a/packages/babel-plugin-component-annotate/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -const deps = Object.keys(packageJson.dependencies ?? {}); - -export default { - platform: "node", - input: ["src/index.ts"], - external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/babel-plugin-component-annotate/src/index.ts b/packages/babel-plugin-component-annotate/src/index.ts deleted file mode 100644 index e39709851587..000000000000 --- a/packages/babel-plugin-component-annotate/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - experimentalComponentNameAnnotatePlugin, -} from "@sentry/bundler-plugins/babel-plugin"; diff --git a/packages/babel-plugin-component-annotate/test/tsconfig.json b/packages/babel-plugin-component-annotate/test/tsconfig.json deleted file mode 100644 index 76d0c9cff6f2..000000000000 --- a/packages/babel-plugin-component-annotate/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/babel-plugin-component-annotate/tsconfig.json b/packages/babel-plugin-component-annotate/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/babel-plugin-component-annotate/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/babel-plugin-component-annotate/types.tsconfig.json b/packages/babel-plugin-component-annotate/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/babel-plugin-component-annotate/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/bundler-plugin-core/.gitignore b/packages/bundler-plugin-core/.gitignore deleted file mode 100644 index 1521c8b7652b..000000000000 --- a/packages/bundler-plugin-core/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/packages/bundler-plugin-core/LICENSE b/packages/bundler-plugin-core/LICENSE deleted file mode 100644 index 4acee9a39ecb..000000000000 --- a/packages/bundler-plugin-core/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2022, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/bundler-plugin-core/README.md b/packages/bundler-plugin-core/README.md deleted file mode 100644 index 31222587690a..000000000000 --- a/packages/bundler-plugin-core/README.md +++ /dev/null @@ -1,31 +0,0 @@ -

- - Sentry - -

- -# Sentry Bundler Plugin Core - -Core package containing the bundler-agnostic functionality used by the bundler plugins. - -Check out the individual packages for more information and examples: - -- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) -- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) -- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) -- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) - -### Features - -The Sentry bundler plugin core package contains the following functionality: - -- Sourcemap upload -- Release creation in Sentry -- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA) -- Automatically associate errors with releases (Release injection) - -### More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json deleted file mode 100644 index a71fa7d9bc60..000000000000 --- a/packages/bundler-plugin-core/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "@sentry/bundler-plugin-core", - "version": "5.3.0", - "description": "Sentry Bundler Plugin Core", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/bundler-plugin-core", - "author": "Sentry", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "files": [ - "dist", - "sentry-release-injection-file.js", - "sentry-esbuild-debugid-injection-file.js" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - }, - "./sentry-release-injection-file": { - "import": "./sentry-release-injection-file.js", - "require": "./sentry-release-injection-file.js" - }, - "./sentry-esbuild-debugid-injection-file": { - "import": "./sentry-esbuild-debugid-injection-file.js", - "require": "./sentry-esbuild-debugid-injection-file.js" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "devDependencies": { - "@types/node": "^18.6.3", - "premove": "^4.0.0", - "rolldown": "^1.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - }, - "sideEffects": [ - "./sentry-release-injection-file.js", - "./sentry-esbuild-debugid-injection-file.js" - ] -} diff --git a/packages/bundler-plugin-core/rollup.config.mjs b/packages/bundler-plugin-core/rollup.config.mjs deleted file mode 100644 index 4e04614e760f..000000000000 --- a/packages/bundler-plugin-core/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -const deps = Object.keys(packageJson.dependencies ?? {}); - -export default { - platform: "node", - input: ["src/index.ts"], - external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js deleted file mode 100644 index 06ad5071d0cc..000000000000 --- a/packages/bundler-plugin-core/sentry-esbuild-debugid-injection-file.js +++ /dev/null @@ -1,20 +0,0 @@ -try { - let globalObject = - "undefined" != typeof window - ? window - : "undefined" != typeof global - ? global - : "undefined" != typeof globalThis - ? global - : "undefined" != typeof self - ? self - : {}; - - let stack = new globalObject.Error().stack; - - if (stack) { - globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; - globalObject._sentryDebugIds[stack] = "__SENTRY_DEBUG_ID__"; - globalObject._sentryDebugIdIdentifier = "sentry-dbid-__SENTRY_DEBUG_ID__"; - } -} catch {} diff --git a/packages/bundler-plugin-core/sentry-release-injection-file.js b/packages/bundler-plugin-core/sentry-release-injection-file.js deleted file mode 100644 index 51de6958a7c0..000000000000 --- a/packages/bundler-plugin-core/sentry-release-injection-file.js +++ /dev/null @@ -1,4 +0,0 @@ -// This const is used for nothing except to make this file identifiable via its content. -// 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. - -// _sentry_release_injection_file diff --git a/packages/bundler-plugin-core/src/index.ts b/packages/bundler-plugin-core/src/index.ts deleted file mode 100644 index cec33da94049..000000000000 --- a/packages/bundler-plugin-core/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@sentry/bundler-plugins/core"; diff --git a/packages/bundler-plugin-core/test/tsconfig.json b/packages/bundler-plugin-core/test/tsconfig.json deleted file mode 100644 index fd99592a2ba7..000000000000 --- a/packages/bundler-plugin-core/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./*.ts", "./sentry/**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/bundler-plugin-core/tsconfig.json b/packages/bundler-plugin-core/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/bundler-plugin-core/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/bundler-plugin-core/types.tsconfig.json b/packages/bundler-plugin-core/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/bundler-plugin-core/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/dev-utils/.gitignore b/packages/dev-utils/.gitignore deleted file mode 100644 index 047fe5c8ec31..000000000000 --- a/packages/dev-utils/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -out -README.md diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json deleted file mode 100644 index a9e988f5c8ab..000000000000 --- a/packages/dev-utils/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@sentry-internal/dev-utils", - "version": "5.3.0", - "license": "MIT", - "private": true, - "type": "module", - "main": "./out/index.mjs", - "module": "./out/index.mjs", - "scripts": { - "build": "rolldown --config rollup.config.mjs" - }, - "volta": { - "extends": "../../package.json" - } -} diff --git a/packages/dev-utils/rollup.config.mjs b/packages/dev-utils/rollup.config.mjs deleted file mode 100644 index f35ae2e2a91b..000000000000 --- a/packages/dev-utils/rollup.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -export default { - platform: "node", - input: ["src/index.ts"], - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/dev-utils/src/generate-documentation-table.ts b/packages/dev-utils/src/generate-documentation-table.ts deleted file mode 100644 index 96440c127c55..000000000000 --- a/packages/dev-utils/src/generate-documentation-table.ts +++ /dev/null @@ -1,520 +0,0 @@ -/* oxlint-disable max-lines */ -type Bundler = "webpack" | "vite" | "rollup" | "esbuild"; - -type OptionDocumentation = { - name: string; - fullDescription: string; - type?: string; - children?: OptionDocumentation[]; - supportedBundlers?: Bundler[]; -}; - -const options: OptionDocumentation[] = [ - { - name: "org", - type: "string", - fullDescription: - "The slug of the Sentry organization associated with the app.\n\nThis value can also be specified via the `SENTRY_ORG` environment variable.", - }, - { - name: "project", - type: "string | string[]", - fullDescription: - "The slug of the Sentry project associated with the app. You can also provide an array of project slugs to upload source maps to multiple projects with the same release.\n\nThis value can also be specified via the `SENTRY_PROJECT` environment variable. To specify multiple projects via the environment variable, separate them with commas: `SENTRY_PROJECT=project1,project2,project3`.", - }, - { - name: "authToken", - type: "string", - fullDescription: - "The authentication token to use for all communication with Sentry.\nCan be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/.\n\nThis value can also be specified via the `SENTRY_AUTH_TOKEN` environment variable.\n\nCheck out the docs on organization tokens: https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens", - }, - { - name: "url", - type: "string", - fullDescription: - "The base URL of your Sentry instance. Use this if you are using a self-hosted or Sentry instance other than sentry.io.\n\nThis value can also be set via the SENTRY_URL environment variable.\n\nDefaults to https://sentry.io/, which is the correct value for SaaS customers.", - }, - { - name: "headers", - type: "Record", - fullDescription: "Additional headers to send with every outgoing request to Sentry.", - }, - { - name: "debug", - type: "boolean", - fullDescription: - 'Enable debug information logs during build-time. Enabling this will give you, for example, logs about source maps. This option also propagates the debug flag to the Sentry CLI by setting the `SENTRY_LOG_LEVEL` environment variable to `"debug"` if it\'s not already set. If you have explicitly set `SENTRY_LOG_LEVEL`, this option will be ignored. Defaults to `false`.', - }, - { - name: "silent", - type: "boolean", - fullDescription: - "Suppresses all build logs (all log levels, including errors). Defaults to `false`.", - }, - { - name: "errorHandler", - type: "(err: Error) => void", - fullDescription: `When an error occurs during release creation or sourcemaps upload, the plugin will call this function. - -By default, the plugin will simply throw an error, thereby stopping the bundling process. If an \`errorHandler\` callback is provided, compilation will continue, unless an error is thrown in the provided callback. - -To allow compilation to continue but still emit a warning, set this option to the following: - -\`\`\` -errorHandler: (err) => { - console.warn(err); -} -\`\`\` -`, - }, - { - name: "telemetry", - type: "boolean", - fullDescription: - "If this flag is `true`, internal plugin errors and performance data will be sent to Sentry. It will not collect any sensitive or user-specific data.\n\nAt Sentry, we like to use Sentry ourselves to deliver faster and more stable products. We're very careful of what we're sending. We won't collect anything other than error and high-level performance data. We will never collect your code or any details of the projects in which you're using this plugin.\n\nDefaults to `true`.", - }, - { - name: "disable", - type: "boolean", - fullDescription: "Completely disables all functionality of the plugin. Defaults to `false`.", - }, - { - name: "sourcemaps", - fullDescription: "Options related to source maps upload and processing.", - children: [ - { - name: "assets", - type: "string | string[]", - fullDescription: - "A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry.\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nIf this option is not specified, the plugin will try to upload all JavaScript files and source map files that are created during build.\n\nUse the `debug` option to print information about which files end up being uploaded.", - }, - { - name: "ignore", - type: "string | string[]", - fullDescription: - "A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry.\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nUse the `debug` option to print information about which files end up being uploaded.\n\nDefault: `[]`", - }, - { - name: "rewriteSources", - type: "(source: string, map: any, context?: { mapDir: string }) => string", - fullDescription: - "Hook to rewrite the `sources` field inside the source map before being uploaded to Sentry. Does not modify the actual source map. Effectively, this modifies how files inside the stacktrace will show up in Sentry.\n\nThe `context.mapDir` parameter provides the directory path of the source map file, which is useful for resolving relative source paths (e.g. `path.resolve(context.mapDir, source)`).\n\nDefaults to making all sources relative to `process.cwd()` while building.", - }, - { - name: "resolveSourceMap", - type: "(artifactPath: string, sourceMappingUrl: string | undefined) => string | undefined | Promise", - fullDescription: `Hook to customize source map file resolution. - -The hook is called with the absolute path of the build artifact and the value of the \`//# sourceMappingURL=\` -comment, if present. The hook should then return an absolute path (or a promise that resolves to one) indicating -where to find the artifact's corresponding source map file. If no path is returned or the returned path doesn't -exist, the standard source map resolution process will be used. - -The standard process first tries to resolve based on the \`//# sourceMappingURL=\` value (it supports \`file://\` -urls and absolute/relative paths). If that path doesn't exist, it then looks for a file named -\`\${artifactName}.map\` in the same directory as the artifact. - -Note: This is mostly helpful for complex builds with custom source map generation. For example, if you put source -maps into a separate directory and rewrite the \`//# sourceMappingURL=\` comment to something other than a relative -directory, sentry will be unable to locate the source maps for a given build artifact. This hook allows you to -implement the resolution process yourself. - -Use the \`debug\` option to print information about source map resolution. -`, - }, - { - name: "filesToDeleteAfterUpload", - type: "string | string[] | Promise", - fullDescription: - "A glob, an array of globs or a promise resolving a glob or array of globs that specifies the build artifacts that should be deleted after the artifact upload to Sentry has been completed.\n\nNote: If you pass in a Promise that resolves to a string or array, the plugin will await the Promise and use the resolved value globs. This is useful if you need to dynamically determine the files to delete. Some higher-level Sentry SDKs or options use this feature (e.g., SvelteKit).\n\nThe globbing patterns must follow the implementation of the `glob` package: https://www.npmjs.com/package/glob#glob-primer\n\nUse the `debug` option to print information about which files end up being deleted.", - }, - { - name: "disable", - type: "boolean", - fullDescription: - "If this flag is `true`, any functionality related to source maps will be disabled.\n\nDefaults to `false`.", - }, - ], - }, - - { - name: "release", - fullDescription: - "Options related to managing the Sentry releases for a build.\n\nMore info: https://docs.sentry.io/product/releases/", - children: [ - { - name: "name", - type: "string", - fullDescription: - "Unique identifier for the release you want to create.\n\nThis value can also be specified via the `SENTRY_RELEASE` environment variable.\n\nDefaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git `HEAD`'s commit SHA (the latter requires access to git CLI and for the root directory to be a valid repository).\n\nIf no `name` is provided and the plugin can't automatically detect one, no release will be created.", - }, - { - name: "inject", - type: "boolean", - fullDescription: - "Whether the plugin should inject release information into the build for the SDK to pick it up when sending events. (recommended)\n\nDefaults to `true`.", - }, - { - name: "create", - type: "boolean", - fullDescription: - "Whether the plugin should create a release on Sentry during the build.\n\nNote that a release may still appear in Sentry even if this is value is `false` because any Sentry event that has a release value attached will automatically create a release. (for example via the `inject` option)\n\nDefaults to `true`.", - }, - { - name: "finalize", - type: "boolean", - fullDescription: - "Whether to automatically finalize the release. The release is finalized by adding an end timestamp after the build ends.\n\nDefaults to `true`.", - }, - { - name: "dist", - type: "string", - fullDescription: - "Unique distribution identifier for the release. Used to further segment the release.\n\nUsually your build number.", - }, - { - name: "vcsRemote", - type: "string", - fullDescription: - "Version control system (VCS) remote name.\n\nThis value can also be specified via the `SENTRY_VSC_REMOTE` environment variable.\n\nDefaults to 'origin'.", - }, - { - name: "setCommits", - fullDescription: - "Configuration for associating the release with its commits in Sentry.\n\nSet to `false` to disable commit association.\n\nDefaults to `{ auto: true }`.", - children: [ - { - name: "previousCommit", - type: "string", - fullDescription: - "The commit before the beginning of this release (in other words, the last commit of the previous release).\n\nDefaults to the last commit of the previous release in Sentry.\n\nIf there was no previous release, the last 10 commits will be used.", - }, - { - name: "ignoreMissing", - type: "boolean", - fullDescription: - "If the flag is to `true` and the previous release commit was not found in the repository, the plugin creates a release with the default commits count instead of failing the command.\n\nDefaults to `false`.", - }, - { - name: "ignoreEmpty", - type: "boolean", - fullDescription: - "If this flag is set, the setCommits step will not fail and just exit silently if no new commits for a given release have been found.\n\nDefaults to `false`.", - }, - { - name: "auto", - type: "boolean", - fullDescription: - "Automatically sets `commit` and `previousCommit`. Sets `commit` to `HEAD` and `previousCommit` as described in the option's documentation.\n\nIf you set this to `true`, manually specified `commit` and `previousCommit` options will be overridden. It is best to not specify them at all if you set this option to `true`.", - }, - { - name: "repo", - type: "string", - fullDescription: - "The full repo name as defined in Sentry.\n\nRequired if the `auto` option is not set to `true`.", - }, - { - name: "commit", - type: "string", - fullDescription: - "The current (last) commit in the release.\n\nRequired if the `auto` option is not set to `true`.", - }, - ], - }, - { - name: "deploy", - type: "DeployOptions | false", - fullDescription: - "Configuration for adding deployment information to the release in Sentry.\n\nSet to `false` to disable automatic deployment detection and creation (e.g., when deploying on Vercel).", - children: [ - { - name: "env", - type: "string", - fullDescription: - "Environment for this release. Values that make sense here would be `production` or `staging`.", - }, - { - name: "started", - type: "number | string", - fullDescription: - "Deployment start time in Unix timestamp (in seconds) or ISO 8601 format.", - }, - { - name: "finished", - type: "number | string", - fullDescription: - "Deployment finish time in Unix timestamp (in seconds) or ISO 8601 format.", - }, - { - name: "time", - type: "number", - fullDescription: - "Deployment duration (in seconds). Can be used instead of started and finished.", - }, - { - name: "name", - type: "string", - fullDescription: "Human readable name for the deployment.", - }, - { - name: "url", - type: "string", - fullDescription: "URL that points to the deployment.", - }, - ], - }, - { - name: "cleanArtifacts", - type: "boolean", - fullDescription: - "Remove all previously uploaded artifacts for this release on Sentry before the upload.\n\nDefaults to `false`.\n\n**Deprecation Notice:** `cleanArtifacts` is deprecated and will does currently not do anything. Historically it was needed since uploading the same artifacts twice was not allowed. Nowadays, when uploading artifacts with the same name more than once to the same release on Sentry, Sentry will prefer the most recent artifact for source mapping.", - }, - { - name: "uploadLegacySourcemaps", - type: "string | IncludeEntry | Array", - fullDescription: `Legacy method of uploading source maps. (not recommended unless necessary) -One or more paths that should be scanned recursively for sources. - -Each path can be given as a string or an object with more specific options. - -The modern version of doing source maps upload is more robust and way easier to get working but has to inject a very small snippet of JavaScript into your output bundles. -In situations where this leads to problems (e.g subresource integrity) you can use this option as a fallback. - -Please note that this option will not interact with any settings provided in the \`sourcemaps\` option. Using \`uploadLegacySourcemaps\` is a completely separate upload mechanism we provide for backwards-compatibility. - -The \`IncludeEntry\` type looks as follows: - -\`\`\`ts -type IncludeEntry = { - /** - * One or more paths to scan for files to upload. - */ - paths: string[]; - - /** - * One or more paths to ignore during upload. - * Overrides entries in ignoreFile file. - * - * Defaults to \`['node_modules']\` if neither \`ignoreFile\` nor \`ignore\` is set. - */ - ignore?: string | string[]; - - /** - * Path to a file containing list of files/directories to ignore. - * - * Can point to \`.gitignore\` or anything with the same format. - */ - ignoreFile?: string; - - /** - * Array of file extensions of files to be collected for the file upload. - * - * By default the following file extensions are processed: js, map, jsbundle and bundle. - */ - ext?: string[]; - - /** - * URL prefix to add to the beginning of all filenames. - * Defaults to '~/' but you might want to set this to the full URL. - * - * This is also useful if your files are stored in a sub folder. eg: url-prefix '~/static/js'. - */ - urlPrefix?: string; - - /** - * URL suffix to add to the end of all filenames. - * Useful for appending query parameters. - */ - urlSuffix?: string; - - /** - * When paired with the \`rewrite\` option, this will remove a prefix from filename references inside of - * sourcemaps. For instance you can use this to remove a path that is build machine specific. - * Note that this will NOT change the names of uploaded files. - */ - stripPrefix?: string[]; - - /** - * When paired with the \`rewrite\` option, this will add \`~\` to the \`stripPrefix\` array. - * - * Defaults to \`false\`. - */ - stripCommonPrefix?: boolean; - - /** - * Determines whether sentry-cli should attempt to link minified files with their corresponding maps. - * By default, it will match files and maps based on name, and add a Sourcemap header to each minified file - * for which it finds a map. Can be disabled if all minified files contain sourceMappingURL. - * - * Defaults to true. - */ - sourceMapReference?: boolean; - - /** - * Enables rewriting of matching source maps so that indexed maps are flattened and missing sources - * are inlined if possible. - * - * Defaults to true - */ - rewrite?: boolean; - - /** - * When \`true\`, attempts source map validation before upload if rewriting is not enabled. - * It will spot a variety of issues with source maps and cancel the upload if any are found. - * - * Defaults to \`false\` as this can cause false positives. - */ - validate?: boolean; -}; -\`\`\` - -`, - }, - ], - }, - { - name: "bundleSizeOptimizations", - fullDescription: `Options for bundle size optimizations by excluding certain features.`, - children: [ - { - name: "excludeDebugStatements", - type: "boolean", - fullDescription: `Exclude debug statements from the bundle, thus disabling features like the SDK's \`debug\` option.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) any debugging code within the Sentry SDK during the build.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nDefaults to \`false\`.`, - }, - { - name: "excludeTracing", - type: "boolean", - fullDescription: `Exclude tracing functionality from the bundle, thus disabling features like performance monitoring.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code within the Sentry SDK that is related to tracing and performance monitoring.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\n**Notice:** Do not enable this when you're using any performance monitoring-related SDK features (e.g. \`Sentry.startTransaction()\`).\n\nDefaults to \`false\`.`, - }, - { - name: "excludeReplayShadowDom", - type: "boolean", - fullDescription: `Exclude Replay Shadow DOM functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay Shadow DOM recording functionality.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nThis option is safe to be used when you do not want to capture any Shadow DOM activity via Sentry Session Replay.\n\nDefaults to \`false\`.`, - }, - { - name: "excludeReplayIframe", - type: "boolean", - fullDescription: `Exclude Replay iFrame functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay \`iframe\` recording functionality.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\nYou can safely do this when you do not want to capture any \`iframe\` activity via Sentry Session Replay.\n\nDefaults to \`false\`.`, - }, - { - name: "excludeReplayWorker", - type: "boolean", - fullDescription: `Exclude Replay worker functionality from the bundle.\n\nIf set to \`true\`, the plugin will attempt to tree-shake (remove) code related to the Sentry SDK's Session Replay's Compression Web Worker.\nNote that the success of this depends on tree-shaking being enabled in your build tooling.\n\n**Notice:** You should only use this option if you manually host a compression worker and configure it in your Sentry Session Replay integration config via the \`workerUrl\` option.\n\nDefaults to \`false\`.`, - }, - ], - }, - { - name: "reactComponentAnnotation", - fullDescription: `(NOTICE: Use the react component annotation feature with caution. The option will pass additional properties to your React components which may lead to errors if libraries or your own code iterate through component props without checking for the additional Sentry props.)\n\nOptions related to react component name annotations. - Disabled by default, unless a value is set for this option.\nWhen enabled, your app's DOM will automatically be annotated during build-time with their respective component names.\nThis will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring.`, - supportedBundlers: ["webpack", "vite", "rollup"], - children: [ - { - name: "enabled", - type: "boolean", - fullDescription: "Whether the component name annotate plugin should be enabled or not.", - supportedBundlers: ["webpack", "vite", "rollup"], - }, - { - name: "ignoredComponents", - type: "string[]", - fullDescription: - "A list of strings representing the names of components to ignore. The plugin will not perform apply `data-sentry` annotations on the DOM element for these components.", - supportedBundlers: ["webpack", "vite", "rollup"], - }, - { - name: "_experimentalInjectIntoHtml", - type: "boolean", - fullDescription: - "An experimental component annotation injection mode that injects annotations into HTML rather than React components.", - supportedBundlers: ["webpack", "vite", "rollup"], - }, - ], - }, - { - name: "moduleMetadata", - type: "Record | (args: { org?: string; project?: string; release?: string; }) => Record", - fullDescription: - "Metadata that should be associated with the built application.\n\nThe metadata is serialized and can be looked up at runtime from within the SDK (for example in the `beforeSend`, event processors, or the transport), allowing for custom event filtering logic or routing of events.\n\nMetadata can either be passed directly or alternatively a callback can be provided that will be called with the following parameters:\n\n- `org`: The organization slug.\n- `project`: The project slug.\n- `release`: The release name.", - }, - { - name: "applicationKey", - type: "string", - fullDescription: - "A key which will embedded in all the bundled files. The SDK will be able to use the key to apply filtering rules, for example using the `thirdPartyErrorFilterIntegration`.", - }, - { - name: "_experiments", - type: "string", - fullDescription: - "Options that are considered experimental and subject to change. This option does not follow semantic versioning and may change in any release.", - children: [ - { - name: "injectBuildInformation", - type: "boolean", - fullDescription: - "If set to true, the plugin will inject an additional `SENTRY_BUILD_INFO` variable. This contains information about the build, e.g. dependencies, node version and other useful data.\n\nDefaults to `false`.", - }, - ], - }, -]; - -function generateTableOfContents( - depth: number, - parentId: string, - nodes: OptionDocumentation[], - bundler: Bundler -): string { - return nodes - .map((node) => { - if (node.supportedBundlers && !node.supportedBundlers?.includes(bundler)) { - return ""; - } - - const id = `${parentId}-${node.name.toLowerCase()}`; - let output = `${" ".repeat(depth)}- [\`${node.name}\`](#${id - .replace(/-/g, "") - .toLowerCase()})`; - if (node.children && depth <= 0) { - output += "\n"; - output += generateTableOfContents(depth + 1, id, node.children, bundler); - } - return output; - }) - .join("\n"); -} - -function generateDescriptions( - parentName: string | undefined, - nodes: OptionDocumentation[], - bundler: Bundler -): string { - return nodes - .map((node) => { - if (node.supportedBundlers && !node.supportedBundlers?.includes(bundler)) { - return ""; - } - - const name = parentName === undefined ? node.name : `${parentName}.${node.name}`; - let output = `### \`${name}\` - -${node.type === undefined ? "" : `Type: \`${node.type}\``} - -${node.fullDescription} -`; - if (node.children) { - output += generateDescriptions(name, node.children, bundler); - } - return output; - }) - .join("\n"); -} - -export function generateOptionsDocumentation(bundler: Bundler): string { - return `## Options - -${generateTableOfContents(0, "", options, bundler)} - -${generateDescriptions(undefined, options, bundler)} -`; -} diff --git a/packages/dev-utils/src/index.ts b/packages/dev-utils/src/index.ts deleted file mode 100644 index 42a1cb11c175..000000000000 --- a/packages/dev-utils/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./generate-documentation-table"; diff --git a/packages/dev-utils/tsconfig.json b/packages/dev-utils/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/dev-utils/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/esbuild-plugin/.gitignore b/packages/esbuild-plugin/.gitignore deleted file mode 100644 index cf09378b5770..000000000000 --- a/packages/esbuild-plugin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -README.md diff --git a/packages/esbuild-plugin/LICENSE b/packages/esbuild-plugin/LICENSE deleted file mode 100644 index 4acee9a39ecb..000000000000 --- a/packages/esbuild-plugin/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2022, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/esbuild-plugin/README_TEMPLATE.md b/packages/esbuild-plugin/README_TEMPLATE.md deleted file mode 100644 index 5e1e3e0c3beb..000000000000 --- a/packages/esbuild-plugin/README_TEMPLATE.md +++ /dev/null @@ -1,92 +0,0 @@ -

- - Sentry - -

- -# Sentry Esbuild Plugin - -[![npm version](https://img.shields.io/npm/v/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/esbuild-plugin.svg)](https://www.npmjs.com/package/@sentry/esbuild-plugin) - -> An esbuild plugin that provides source map and release management support for Sentry. - -## Installation - -Using npm: - -```bash -npm install @sentry/esbuild-plugin --save-dev -``` - -Using yarn: - -```bash -yarn add @sentry/esbuild-plugin --dev -``` - -Using pnpm: - -```bash -pnpm add @sentry/esbuild-plugin --save-dev -``` - -## Example - -```js -// esbuild.config.js -const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); - -require("esbuild").build({ - sourcemap: true, // Source map generation must be turned on - plugins: [ - // Put the Sentry esbuild plugin after all other plugins - sentryEsbuildPlugin({ - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - - // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}); -``` - -### Multi-Project Configuration - -If you want to upload the same source maps to multiple Sentry projects: - -```js -// esbuild.config.js -const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); - -require("esbuild").build({ - sourcemap: true, - plugins: [ - sentryEsbuildPlugin({ - org: process.env.SENTRY_ORG, - project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}); -``` - -Or via environment variable: - -```bash -SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c -``` - -#OPTIONS_SECTION_INSERT# - -### Configuration File - -As an additional configuration method, the Sentry esbuild plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json deleted file mode 100644 index 153bdb3709a7..000000000000 --- a/packages/esbuild-plugin/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@sentry/esbuild-plugin", - "version": "5.3.0", - "description": "Official Sentry esbuild plugin", - "repository": "git@github.com:getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin", - "author": "Sentry", - "license": "MIT", - "keywords": [ - "Sentry", - "esbuild", - "bundler", - "plugin" - ], - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "prepack": "node ./prepack.mjs" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "devDependencies": { - "@sentry-internal/dev-utils": "5.3.0", - "@types/node": "^18.6.3", - "premove": "^4.0.0", - "rolldown": "^1.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/packages/esbuild-plugin/prepack.mjs b/packages/esbuild-plugin/prepack.mjs deleted file mode 100644 index 66de0066cd45..000000000000 --- a/packages/esbuild-plugin/prepack.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; -import * as fs from "fs"; -import * as path from "path"; - -const __dirname = path.dirname(new URL(import.meta.url).pathname); - -const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace( - /#OPTIONS_SECTION_INSERT#/, - generateOptionsDocumentation("esbuild") -); -fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/esbuild-plugin/rollup.config.mjs b/packages/esbuild-plugin/rollup.config.mjs deleted file mode 100644 index 4e04614e760f..000000000000 --- a/packages/esbuild-plugin/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -const deps = Object.keys(packageJson.dependencies ?? {}); - -export default { - platform: "node", - input: ["src/index.ts"], - external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/esbuild-plugin/src/index.ts b/packages/esbuild-plugin/src/index.ts deleted file mode 100644 index 80e70f701e51..000000000000 --- a/packages/esbuild-plugin/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "@sentry/bundler-plugins/esbuild"; -export { default } from "@sentry/bundler-plugins/esbuild"; diff --git a/packages/esbuild-plugin/test/tsconfig.json b/packages/esbuild-plugin/test/tsconfig.json deleted file mode 100644 index 76d0c9cff6f2..000000000000 --- a/packages/esbuild-plugin/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/esbuild-plugin/tsconfig.json b/packages/esbuild-plugin/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/esbuild-plugin/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/esbuild-plugin/types.tsconfig.json b/packages/esbuild-plugin/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/esbuild-plugin/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/playground/.env.example b/packages/playground/.env.example deleted file mode 100644 index 7a822b458d79..000000000000 --- a/packages/playground/.env.example +++ /dev/null @@ -1,5 +0,0 @@ -SENTRY_AUTH_TOKEN= -SENTRY_DSN= -SENTRY_ORG= -SENTRY_PROJECT= -SENTRY_URL=https://sentry.io diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore deleted file mode 100644 index 4e8ee24b497a..000000000000 --- a/packages/playground/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -out/ -.env -.env.sentry-build-plugin -scripts/request-logger-logs/*.txt diff --git a/packages/playground/.sentryignore b/packages/playground/.sentryignore deleted file mode 100644 index 236ac487ddc9..000000000000 --- a/packages/playground/.sentryignore +++ /dev/null @@ -1,5 +0,0 @@ -#out/vite-smallNodeApp/\*\* - -# some comment - -!out/vite-smallNodeApp/index.js diff --git a/packages/playground/build-esbuild.js b/packages/playground/build-esbuild.js deleted file mode 100644 index dabb9fea96ee..000000000000 --- a/packages/playground/build-esbuild.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); -const { build } = require("esbuild"); - -build({ - entryPoints: ["./src/entrypoint1.js"], - outdir: "./out/esbuild", - plugins: [ - sentryEsbuildPlugin({ - debug: true, - }), - ], - minify: true, - bundle: true, - format: "cjs", - sourcemap: true, -}); diff --git a/packages/playground/build-webpack.js b/packages/playground/build-webpack.js deleted file mode 100644 index d201d95997f8..000000000000 --- a/packages/playground/build-webpack.js +++ /dev/null @@ -1,31 +0,0 @@ -// @ts-check -const path = require("path"); -const webpack = require("webpack"); -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); - -webpack( - { - cache: false, - entry: "./src/entrypoint1.js", - output: { - filename: "index.js", - path: path.resolve(__dirname, "out", "webpack"), - library: { - type: "commonjs", - name: "ExampleBundle", - }, - }, - mode: "production", - plugins: [ - sentryWebpackPlugin({ - debug: true, - }), - ], - devtool: "source-map", - }, - (err) => { - if (err) { - throw err; - } - } -); diff --git a/packages/playground/package.json b/packages/playground/package.json deleted file mode 100644 index 4e8133701c17..000000000000 --- a/packages/playground/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "@sentry-internal/bundler-plugin-playground", - "version": "5.3.0", - "license": "MIT", - "private": true, - "scripts": { - "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: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", - "clean:all": "run-p clean:deps", - "clean:build": "premove ./out", - "clean:deps": "premove node_modules", - "start:proxyLogger": "node scripts/request-logger-proxy.mjs" - }, - "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0", - "@sentry/integrations": "7.50", - "@sentry/node": "7.50", - "@types/express": "^4.17.13", - "@types/http-proxy": "^1.17.9", - "esbuild": "0.17.19", - "express": "^4.18.1", - "http-proxy": "^1.18.1", - "rollup": "3.2.0", - "vite": "3.0.0", - "webpack": "5.76.0" - }, - "devDependencies": { - "premove": "^4.0.0" - }, - "volta": { - "extends": "../../package.json" - } -} diff --git a/packages/playground/rollup.config.mjs b/packages/playground/rollup.config.mjs deleted file mode 100644 index eb2423a14ff9..000000000000 --- a/packages/playground/rollup.config.mjs +++ /dev/null @@ -1,19 +0,0 @@ -// @ts-check -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; - -const input = ["src/entrypoint1.js"]; - -export default { - input, - plugins: [ - sentryRollupPlugin({ - debug: true, - }), - ], - output: { - dir: "./out/rollup", - format: "cjs", - exports: "named", - sourcemap: true, - }, -}; diff --git a/packages/playground/scripts/request-logger-logs/.gitkeep b/packages/playground/scripts/request-logger-logs/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/playground/scripts/request-logger-proxy.mjs b/packages/playground/scripts/request-logger-proxy.mjs deleted file mode 100644 index 157d4c44959f..000000000000 --- a/packages/playground/scripts/request-logger-proxy.mjs +++ /dev/null @@ -1,75 +0,0 @@ -import express from "express"; -import httpProxy from "http-proxy"; -import fs from "fs"; -import path from "path"; - -const now = Date.now(); - -var app = express(); - -var proxy = httpProxy.createProxyServer(); - -app.use(function (req, res, next) { - let reqBody = []; - let resBody = []; - let reqLog; - - req - .on("data", (chunk) => { - reqBody.push(chunk); - }) - .on("end", () => { - reqLog = `Path: ${req.method} ${req.path}\nRequest headers: ${JSON.stringify( - req.headers, - null, - 2 - )}\nRequest body:\n${Buffer.concat(reqBody).toString()}`; - }); - - var oldWrite = res.write, - oldEnd = res.end; - - res.write = function (chunk) { - resBody.push(chunk); - - return oldWrite.apply(res, arguments); - }; - - res.end = function (chunk) { - if (chunk) resBody.push(chunk); - - const resLog = `Response status: ${res.statusCode}\nResponse headers: ${JSON.stringify( - res.getHeaders(), - null, - 2 - )}\nResponse body:\n${Buffer.concat(resBody).toString()}`; - - fs.appendFileSync( - path.join(__dirname, "request-logger-logs", `${now}.txt`), - `>>>>>>>>>\n\n${reqLog}\n\n-----------\n\n${resLog}\n\n<<<<<<<<<\n\n`, - { - encoding: "utf-8", - } - ); - - oldEnd.apply(res, arguments); - }; - - next(); -}); - -app.use(function (req, res, next) { - proxy.web( - req, - res, - { - target: "https://sentry.io", // change this if you want to proxy to another target - changeOrigin: true, - }, - next - ); -}); - -app.listen(8005, function () { - console.log("Listening!"); -}); diff --git a/packages/playground/src/entrypoint1.js b/packages/playground/src/entrypoint1.js deleted file mode 100644 index 108d933192b2..000000000000 --- a/packages/playground/src/entrypoint1.js +++ /dev/null @@ -1,12 +0,0 @@ -import { getGlobal } from "./get-global"; -import { helloWorld } from "./hello-world"; -export { getGlobal } from "./get-global"; - -console.log("entrypoint1.js loaded"); - -export function main() { - console.log("called main (entrypoint1.js)"); - helloWorld(); -} - -console.log("global:", getGlobal()); diff --git a/packages/playground/src/entrypoint2.js b/packages/playground/src/entrypoint2.js deleted file mode 100644 index daab1c5e4b28..000000000000 --- a/packages/playground/src/entrypoint2.js +++ /dev/null @@ -1,16 +0,0 @@ -import { main as main1 } from "./entrypoint1"; -export { getGlobal } from "./get-global"; - -console.log("entrypoint2.js loaded"); - -export function main() { - console.log("called main (entrypoint2.js)"); - main1(); -} - -const asdf = () => { - console.log("defualt called (entrypoint2.js)"); -}; - -console.log("global:", getGlobal()); -export { asdf as default }; diff --git a/packages/playground/src/get-global.js b/packages/playground/src/get-global.js deleted file mode 100644 index 59cb11384f1a..000000000000 --- a/packages/playground/src/get-global.js +++ /dev/null @@ -1,3 +0,0 @@ -export function getGlobal() { - return global.SENTRY_RELEASE; -} diff --git a/packages/playground/src/hello-world.js b/packages/playground/src/hello-world.js deleted file mode 100644 index 5117dc2bf1b1..000000000000 --- a/packages/playground/src/hello-world.js +++ /dev/null @@ -1,3 +0,0 @@ -export function helloWorld() { - console.log("Hello world!"); -} diff --git a/packages/playground/src/smallNodeApp.js b/packages/playground/src/smallNodeApp.js deleted file mode 100644 index 4f7c565f6e67..000000000000 --- a/packages/playground/src/smallNodeApp.js +++ /dev/null @@ -1,24 +0,0 @@ -const Sentry = require("@sentry/node"); -const { RewriteFrames } = require("@sentry/integrations"); - -Sentry.init({ - dsn: process.env.SENTRY_DSN, - debug: true, - enabled: true, - sampleRate: 1.0, - integrations: [new RewriteFrames()], -}); - -const fibonacci = (n) => { - if (n === 3) { - Sentry.captureException(new Error("Test error")); - } - if (n <= 1) { - return n; - } - return fibonacci(n - 1) + fibonacci(n - 2); -}; - -console.log("Hi, I'm a small sample node app"); - -fibonacci(10); diff --git a/packages/playground/vite.config.js b/packages/playground/vite.config.js deleted file mode 100644 index 3efe02832c72..000000000000 --- a/packages/playground/vite.config.js +++ /dev/null @@ -1,22 +0,0 @@ -// @ts-check -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import { defineConfig } from "vite"; -import * as path from "path"; - -export default defineConfig({ - build: { - outDir: "./out/vite", - lib: { - entry: path.resolve(__dirname, "src", "entrypoint1.js"), - name: "ExampleBundle", - fileName: "index", - formats: ["cjs"], - }, - sourcemap: true, - }, - plugins: [ - sentryVitePlugin({ - debug: true, - }), - ], -}); diff --git a/packages/playground/vite.config.smallNodeApp.js b/packages/playground/vite.config.smallNodeApp.js deleted file mode 100644 index a038686a296b..000000000000 --- a/packages/playground/vite.config.smallNodeApp.js +++ /dev/null @@ -1,40 +0,0 @@ -// @ts-check -import { sentryVitePlugin } from "@sentry/vite-plugin"; -import { defineConfig } from "vite"; -import * as path from "path"; - -export default defineConfig({ - build: { - outDir: "./out/vite-smallNodeApp", - lib: { - entry: path.resolve(__dirname, "src", "smallNodeApp.js"), - name: "ExampleBundle", - fileName: "index", - formats: ["cjs"], - }, - sourcemap: true, - minify: true, - }, - plugins: [ - sentryVitePlugin({ - authToken: process.env.SENTRY_AUTH_TOKEN || "", - org: process.env.SENTRY_ORG || "", - project: process.env.SENTRY_PROJECT || "", - debug: true, - release: "0.0.14", - include: "out/vite-smallNodeApp", - // ignore: ["out/*", "!out/vite-smallNodeApp/index.js.map"], - ignore: ["!out/vite-smallNodeApp/index.js.map"], - ignoreFile: ".sentryignore", - setCommits: { - repo: "someRepo", - commit: "someCommit", - ignoreMissing: true, - }, - deploy: { - env: "myEnv", - time: 10, - }, - }), - ], -}); diff --git a/packages/rollup-plugin/.gitignore b/packages/rollup-plugin/.gitignore deleted file mode 100644 index cf09378b5770..000000000000 --- a/packages/rollup-plugin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -README.md diff --git a/packages/rollup-plugin/LICENSE b/packages/rollup-plugin/LICENSE deleted file mode 100644 index 4acee9a39ecb..000000000000 --- a/packages/rollup-plugin/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2022, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/rollup-plugin/README_TEMPLATE.md b/packages/rollup-plugin/README_TEMPLATE.md deleted file mode 100644 index 05e88416852b..000000000000 --- a/packages/rollup-plugin/README_TEMPLATE.md +++ /dev/null @@ -1,96 +0,0 @@ -

- - Sentry - -

- -# Sentry Rollup Plugin - -[![npm version](https://img.shields.io/npm/v/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/rollup-plugin.svg)](https://www.npmjs.com/package/@sentry/rollup-plugin) - -> A Rollup plugin that provides source map and release management support for Sentry. - -## Installation - -Using npm: - -```bash -npm install @sentry/rollup-plugin --save-dev -``` - -Using yarn: - -```bash -yarn add @sentry/rollup-plugin --dev -``` - -Using pnpm: - -```bash -pnpm add @sentry/rollup-plugin --save-dev -``` - -## Example - -```js -// rollup.config.js -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; - -export default { - plugins: [ - // Put the Sentry rollup plugin after all other plugins - sentryRollupPlugin({ - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - - // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], - output: { - sourcemap: true, // Source map generation must be turned on - }, -}; -``` - -### Multi-Project Configuration - -If you want to upload the same source maps to multiple Sentry projects: - -```js -// rollup.config.js -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; - -export default { - plugins: [ - sentryRollupPlugin({ - org: process.env.SENTRY_ORG, - project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], - output: { - sourcemap: true, - }, -}; -``` - -Or via environment variable: - -```bash -SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c -``` - -#OPTIONS_SECTION_INSERT# - -### Configuration File - -As an additional configuration method, the Sentry Rollup plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json deleted file mode 100644 index 8bfa911a5afb..000000000000 --- a/packages/rollup-plugin/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "@sentry/rollup-plugin", - "version": "5.3.0", - "description": "Official Sentry Rollup plugin", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/rollup-plugin", - "author": "Sentry", - "license": "MIT", - "keywords": [ - "Sentry", - "rollup-plugin", - "Rollup", - "bundler", - "plugin" - ], - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "prepack": "node ./prepack.mjs" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "peerDependencies": { - "rollup": ">=3.2.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - }, - "devDependencies": { - "@sentry-internal/dev-utils": "5.3.0", - "@types/node": "^18.6.3", - "premove": "^4.0.0", - "rolldown": "^1.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/packages/rollup-plugin/prepack.mjs b/packages/rollup-plugin/prepack.mjs deleted file mode 100644 index e382ec430410..000000000000 --- a/packages/rollup-plugin/prepack.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; -import * as fs from "fs"; -import * as path from "path"; - -const __dirname = path.dirname(new URL(import.meta.url).pathname); - -const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace( - /#OPTIONS_SECTION_INSERT#/, - generateOptionsDocumentation("rollup") -); -fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/rollup-plugin/rollup.config.mjs b/packages/rollup-plugin/rollup.config.mjs deleted file mode 100644 index 4e04614e760f..000000000000 --- a/packages/rollup-plugin/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -const deps = Object.keys(packageJson.dependencies ?? {}); - -export default { - platform: "node", - input: ["src/index.ts"], - external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/rollup-plugin/src/index.ts b/packages/rollup-plugin/src/index.ts deleted file mode 100644 index bd60cf6ca876..000000000000 --- a/packages/rollup-plugin/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@sentry/bundler-plugins/rollup"; diff --git a/packages/rollup-plugin/test/tsconfig.json b/packages/rollup-plugin/test/tsconfig.json deleted file mode 100644 index 76d0c9cff6f2..000000000000 --- a/packages/rollup-plugin/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/rollup-plugin/tsconfig.json b/packages/rollup-plugin/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/rollup-plugin/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/rollup-plugin/types.tsconfig.json b/packages/rollup-plugin/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/rollup-plugin/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/vite-plugin/.gitignore b/packages/vite-plugin/.gitignore deleted file mode 100644 index cf09378b5770..000000000000 --- a/packages/vite-plugin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -README.md diff --git a/packages/vite-plugin/LICENSE b/packages/vite-plugin/LICENSE deleted file mode 100644 index 4acee9a39ecb..000000000000 --- a/packages/vite-plugin/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2022, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/vite-plugin/README_TEMPLATE.md b/packages/vite-plugin/README_TEMPLATE.md deleted file mode 100644 index 0f34d0176cd5..000000000000 --- a/packages/vite-plugin/README_TEMPLATE.md +++ /dev/null @@ -1,102 +0,0 @@ -

- - Sentry - -

- -# Sentry Vite Plugin - -[![npm version](https://img.shields.io/npm/v/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/vite-plugin.svg)](https://www.npmjs.com/package/@sentry/vite-plugin) - -> A Vite plugin that provides source map and release management support for Sentry. - -## Installation - -Using npm: - -```bash -npm install @sentry/vite-plugin --save-dev -``` - -Using yarn: - -```bash -yarn add @sentry/vite-plugin --dev -``` - -Using pnpm: - -```bash -pnpm add @sentry/vite-plugin --save-dev -``` - -## Example - -```ts -// vite.config.ts -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; - -// https://vitejs.dev/config/ -export default defineConfig({ - build: { - sourcemap: true, // Source map generation must be turned on - }, - plugins: [ - vue(), - - // Put the Sentry vite plugin after all other plugins - sentryVitePlugin({ - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - - // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}); -``` - -### Multi-Project Configuration - -If you want to upload the same source maps to multiple Sentry projects: - -```ts -// vite.config.ts -import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; - -export default defineConfig({ - build: { - sourcemap: true, - }, - plugins: [ - sentryVitePlugin({ - org: process.env.SENTRY_ORG, - project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}); -``` - -Or via environment variable: - -```bash -SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c -``` - -#OPTIONS_SECTION_INSERT# - -### Configuration File - -As an additional configuration method, the Sentry Vite plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json deleted file mode 100644 index 16075874465f..000000000000 --- a/packages/vite-plugin/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@sentry/vite-plugin", - "version": "5.3.0", - "description": "Official Sentry Vite plugin", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin", - "author": "Sentry", - "license": "MIT", - "keywords": [ - "Sentry", - "Vite", - "bundler", - "plugin" - ], - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./out && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "prepack": "node ./prepack.mjs" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "devDependencies": { - "@sentry-internal/dev-utils": "5.3.0", - "@types/node": "^18.6.3", - "premove": "^4.0.0", - "rolldown": "^1.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/packages/vite-plugin/prepack.mjs b/packages/vite-plugin/prepack.mjs deleted file mode 100644 index bf25ce4b5e80..000000000000 --- a/packages/vite-plugin/prepack.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; -import * as fs from "fs"; -import * as path from "path"; - -const __dirname = path.dirname(new URL(import.meta.url).pathname); - -const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace( - /#OPTIONS_SECTION_INSERT#/, - generateOptionsDocumentation("vite") -); -fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/vite-plugin/rollup.config.mjs b/packages/vite-plugin/rollup.config.mjs deleted file mode 100644 index 4e04614e760f..000000000000 --- a/packages/vite-plugin/rollup.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; - -const deps = Object.keys(packageJson.dependencies ?? {}); - -export default { - platform: "node", - input: ["src/index.ts"], - external: (id) => deps.some((dep) => id === dep || id.startsWith(`${dep}/`)), - output: [ - { - file: packageJson.module, - format: "esm", - exports: "named", - sourcemap: true, - }, - { - file: packageJson.main, - format: "cjs", - exports: "named", - sourcemap: true, - }, - ], -}; diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts deleted file mode 100644 index d8ab78aac088..000000000000 --- a/packages/vite-plugin/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@sentry/bundler-plugins/vite"; diff --git a/packages/vite-plugin/test/tsconfig.json b/packages/vite-plugin/test/tsconfig.json deleted file mode 100644 index 76d0c9cff6f2..000000000000 --- a/packages/vite-plugin/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/vite-plugin/tsconfig.json b/packages/vite-plugin/tsconfig.json deleted file mode 100644 index 2044e12308ea..000000000000 --- a/packages/vite-plugin/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"] -} diff --git a/packages/vite-plugin/types.tsconfig.json b/packages/vite-plugin/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/vite-plugin/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/packages/webpack-plugin/.gitignore b/packages/webpack-plugin/.gitignore deleted file mode 100644 index cf09378b5770..000000000000 --- a/packages/webpack-plugin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -README.md diff --git a/packages/webpack-plugin/LICENSE b/packages/webpack-plugin/LICENSE deleted file mode 100644 index 4acee9a39ecb..000000000000 --- a/packages/webpack-plugin/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -# MIT License - -Copyright (c) 2022, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/webpack-plugin/README_TEMPLATE.md b/packages/webpack-plugin/README_TEMPLATE.md deleted file mode 100644 index c02dc89783a4..000000000000 --- a/packages/webpack-plugin/README_TEMPLATE.md +++ /dev/null @@ -1,97 +0,0 @@ -

- - Sentry - -

- -# Sentry Webpack Plugin - -[![npm version](https://img.shields.io/npm/v/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) -[![npm dm](https://img.shields.io/npm/dm/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) -[![npm dt](https://img.shields.io/npm/dt/@sentry/webpack-plugin.svg)](https://www.npmjs.com/package/@sentry/webpack-plugin) - -> A Webpack plugin that provides source map and release management support for Sentry. - -## Installation - -Using npm: - -```bash -npm install @sentry/webpack-plugin --save-dev -``` - -Using yarn: - -```bash -yarn add @sentry/webpack-plugin --dev -``` - -Using pnpm: - -```bash -pnpm add @sentry/webpack-plugin --save-dev -``` - -## Example - -```js -// webpack.config.js -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); -// for webpack 5.1 and webpack compatible environments -// const { sentryWebpackPlugin } = require("@sentry/webpack-plugin/webpack5"); - -module.exports = { - // ... other config above ... - - devtool: "source-map", // Source map generation must be turned on - plugins: [ - sentryWebpackPlugin({ - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - - // Auth tokens can be obtained from https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/ - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}; -``` - -### Multi-Project Configuration - -If you want to upload the same source maps to multiple Sentry projects: - -```js -// webpack.config.js -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); - -module.exports = { - // ... other config above ... - - devtool: "source-map", - plugins: [ - sentryWebpackPlugin({ - org: process.env.SENTRY_ORG, - project: ["frontend-team-a", "frontend-team-b", "frontend-team-c"], - authToken: process.env.SENTRY_AUTH_TOKEN, - }), - ], -}; -``` - -Or via environment variable: - -```bash -SENTRY_PROJECT=frontend-team-a,frontend-team-b,frontend-team-c -``` - -#OPTIONS_SECTION_INSERT# - -### Configuration File - -As an additional configuration method, the Sentry Webpack plugin will pick up environment variables configured inside a `.env.sentry-build-plugin` file located in the current working directory when building your app. - -## More information - -- [Sentry Documentation](https://docs.sentry.io/quickstart/) -- [Sentry Discord](https://discord.gg/Ww9hbqr) -- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry) diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json deleted file mode 100644 index d3677ac38302..000000000000 --- a/packages/webpack-plugin/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "@sentry/webpack-plugin", - "version": "5.3.0", - "description": "Official Sentry Webpack plugin", - "repository": "git://github.com/getsentry/sentry-javascript-bundler-plugins.git", - "homepage": "https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin", - "author": "Sentry", - "license": "MIT", - "keywords": [ - "Sentry", - "Webpack", - "bundler", - "plugin" - ], - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" - }, - "./webpack5": { - "import": "./dist/esm/webpack5.mjs", - "require": "./dist/cjs/webpack5.js", - "types": "./dist/types/webpack5.d.ts" - } - }, - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "types": "dist/types/index.d.ts", - "scripts": { - "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", - "build:watch": "run-p build:rollup:watch build:types:watch", - "build:rollup": "rolldown --config rollup.config.mjs", - "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", - "build:types": "tsc --project types.tsconfig.json", - "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "check:types": "run-p check:types:src check:types:test", - "check:types:src": "tsc --project ./tsconfig.json --noEmit", - "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", - "build:npm": "npm pack", - "clean": "run-s clean:build", - "clean:all": "run-p clean clean:deps", - "clean:build": "premove ./dist *.tgz", - "clean:deps": "premove node_modules", - "prepack": "node ./prepack.mjs" - }, - "dependencies": { - "@sentry/bundler-plugins": "5.3.0" - }, - "devDependencies": { - "@sentry-internal/dev-utils": "5.3.0", - "@types/node": "^18.6.3", - "@types/webpack": "npm:@types/webpack@^4", - "premove": "^4.0.0", - "rolldown": "^1.0.0", - "webpack": "5.76.0" - }, - "peerDependencies": { - "webpack": ">=5.0.0" - }, - "volta": { - "extends": "../../package.json" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/packages/webpack-plugin/prepack.mjs b/packages/webpack-plugin/prepack.mjs deleted file mode 100644 index 9e83b98be9f8..000000000000 --- a/packages/webpack-plugin/prepack.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { generateOptionsDocumentation } from "@sentry-internal/dev-utils"; -import * as fs from "fs"; -import * as path from "path"; - -const __dirname = path.dirname(new URL(import.meta.url).pathname); - -const readmeTemplate = fs.readFileSync(path.join(__dirname, "README_TEMPLATE.md"), "utf-8"); -const readme = readmeTemplate.replace( - /#OPTIONS_SECTION_INSERT#/, - generateOptionsDocumentation("webpack") -); -fs.writeFileSync(path.join(__dirname, "README.md"), readme, "utf-8"); diff --git a/packages/webpack-plugin/rollup.config.mjs b/packages/webpack-plugin/rollup.config.mjs deleted file mode 100644 index 0b39609fd8b0..000000000000 --- a/packages/webpack-plugin/rollup.config.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; - -export default { - platform: "node", - input: ["src/index.ts", "src/webpack5.ts"], - external: (id) => - [...Object.keys(packageJson.dependencies), ...modulePackage.builtinModules].some( - (dep) => id === dep || id.startsWith(`${dep}/`) - ), - output: [ - { - dir: "./dist/esm", - format: "esm", - exports: "named", - sourcemap: true, - entryFileNames: "[name].mjs", - chunkFileNames: "[name].mjs", - }, - { - dir: "./dist/cjs", - format: "cjs", - exports: "named", - sourcemap: true, - entryFileNames: "[name].js", - chunkFileNames: "[name].js", - }, - ], -}; diff --git a/packages/webpack-plugin/src/index.ts b/packages/webpack-plugin/src/index.ts deleted file mode 100644 index 8319369de49e..000000000000 --- a/packages/webpack-plugin/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@sentry/bundler-plugins/webpack"; diff --git a/packages/webpack-plugin/src/webpack5.ts b/packages/webpack-plugin/src/webpack5.ts deleted file mode 100644 index 86e5b39d3e6c..000000000000 --- a/packages/webpack-plugin/src/webpack5.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@sentry/bundler-plugins/webpack5"; diff --git a/packages/webpack-plugin/test/tsconfig.json b/packages/webpack-plugin/test/tsconfig.json deleted file mode 100644 index 76d0c9cff6f2..000000000000 --- a/packages/webpack-plugin/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", - "include": ["../src/**/*", "./**/*"], - "compilerOptions": { - "types": ["node"] - } -} diff --git a/packages/webpack-plugin/tsconfig.json b/packages/webpack-plugin/tsconfig.json deleted file mode 100644 index 088fbb9b9bab..000000000000 --- a/packages/webpack-plugin/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../../tsconfig.json", - "include": ["./src/**/*.ts", "./package.json"], - "compilerOptions": { - "esModuleInterop": true - } -} diff --git a/packages/webpack-plugin/types.tsconfig.json b/packages/webpack-plugin/types.tsconfig.json deleted file mode 100644 index e427dd968049..000000000000 --- a/packages/webpack-plugin/types.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "include": ["./src/**/*"], - "compilerOptions": { - "rootDir": "./src", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "./dist/types" - } -} diff --git a/scripts/bump-version.js b/scripts/bump-version.js deleted file mode 100644 index ba0683ecb197..000000000000 --- a/scripts/bump-version.js +++ /dev/null @@ -1,136 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -function readJson(filePath) { - return JSON.parse(fs.readFileSync(filePath, "utf-8")); -} - -/** - * Bumps the version of all workspace packages and their internal dependencies. - * This replicates the behavior of: - * lerna version --force-publish --exact --no-git-tag-version --no-push --include-merged-tags --yes - * - * Specifically: - * - Updates `version` in every workspace package.json to newVersion - * - Updates all internal workspace dependency references (dependencies, devDependencies, peerDependencies) - * to the new exact version (no ^ or ~ prefix), matching lerna's --exact flag - * - --force-publish: all packages are updated regardless of whether they changed - * - No git tags, commits, or pushes are made - */ -function bumpVersions(rootDir, newVersion) { - const rootPkgPath = path.join(rootDir, "package.json"); - const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, "utf-8")); - const workspaces = rootPkg.workspaces; - - if (!workspaces || !Array.isArray(workspaces)) { - throw new Error("Could not find workspaces in root package.json"); - } - - // Read all workspace package.json files upfront. - // This ensures we fail early if any workspace is unreadable, - // before writing any changes (no partial updates). - const workspacePackages = []; - const workspaceNames = new Set(); - for (const workspace of workspaces) { - const pkgPath = path.join(rootDir, workspace, "package.json"); - const pkg = readJson(pkgPath); - workspaceNames.add(pkg.name); - workspacePackages.push({ pkgPath, pkg }); - } - - // Apply version bumps - for (const { pkgPath, pkg } of workspacePackages) { - pkg.version = newVersion; - - // Update internal workspace dependency versions (exact, no ^) - // This covers dependencies, devDependencies, and peerDependencies - for (const depType of ["dependencies", "devDependencies", "peerDependencies"]) { - if (!pkg[depType]) { - continue; - } - - for (const [dep, ver] of Object.entries(pkg[depType])) { - // Update all workspace dependencies to the new exact version, - // matching lerna's --force-publish --exact behavior - if (workspaceNames.has(dep) && !ver.startsWith("workspace:")) { - pkg[depType][dep] = newVersion; - } - } - } - - fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n"); - } - - return workspacePackages.length; -} - -/** - * The test fixtures have their own pnpm installs with overrides that point to the local tarballs. - * We need to update those overrides to point to the correct version's tarball. - */ -function bumpTestFixtureVersions(rootDir, newVersion) { - const fixturesDir = path.join(rootDir, "packages", "integration-tests-next", "fixtures"); - const entries = fs.readdirSync(fixturesDir, { withFileTypes: true }); - - for (const entry of entries) { - if (!entry.isDirectory()) { - continue; - } - - const pkgPath = path.join(fixturesDir, entry.name, "package.json"); - if (!fs.existsSync(pkgPath)) { - continue; - } - - const pkg = readJson(pkgPath); - if (!pkg.dependencies) { - continue; - } - - for (const dep of Object.keys(pkg.dependencies)) { - if (dep.startsWith("@sentry/")) { - pkg.dependencies[dep] = newVersion; - } - } - - if (pkg?.pnpm?.overrides) { - for (const dep of Object.keys(pkg.pnpm.overrides)) { - if (dep.startsWith("@sentry/")) { - const orig = pkg.pnpm.overrides[dep]; - pkg.pnpm.overrides[dep] = orig.replace(/-\d*\.\d*\..+?\.tgz/, `-${newVersion}.tgz`); - } - } - } - - fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n"); - } -} - -// CLI entry point -if (require.main === module) { - const newVersion = process.argv[2]; - - if (!newVersion) { - console.error("Usage: node scripts/bump-version.js "); - process.exit(1); - } - - const rootDir = path.join(__dirname, ".."); - const updatedCount = bumpVersions(rootDir, newVersion); - bumpTestFixtureVersions(rootDir, newVersion); - - // Write a .version file used by the gitflow sync workflow to detect version bumps - const versionFile = { - _comment: - "Auto-generated by scripts/bump-version.js. Used by the gitflow sync workflow to detect version bumps. Do not edit manually.", - version: newVersion, - }; - fs.writeFileSync( - path.join(rootDir, ".version.json"), - JSON.stringify(versionFile, null, 2) + "\n" - ); - - console.log(`Updated ${updatedCount} packages to version ${newVersion}`); -} - -module.exports = { bumpVersions }; diff --git a/scripts/craft-pre-release.sh b/scripts/craft-pre-release.sh deleted file mode 100755 index e3f4c740a181..000000000000 --- a/scripts/craft-pre-release.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -set -eux - -# Move to the project root -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -cd $SCRIPT_DIR/.. -OLD_VERSION="${1}" -NEW_VERSION="${2}" - -# Do not tag and commit changes made by "npm version" -export npm_config_git_tag_version=false - -yarn install --frozen-lockfile -# Bump version in all workspace packages (exact versions, no git tags or commits) -node scripts/bump-version.js "${NEW_VERSION}" diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index ecd9e36ef5fa..000000000000 --- a/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@sentry-internal/typescript/tsconfig.json", - "include": ["./**/*.ts"], - "exclude": ["node_modules"], - "compilerOptions": { - "module": "ESNext", - "moduleResolution": "bundler", - "types": ["node"], - "skipLibCheck": true - } -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fab98a7089ed..000000000000 --- a/yarn.lock +++ /dev/null @@ -1,4588 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.18.5": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" - integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.0" - "@babel/parser" "^7.24.0" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" - "@babel/types" "^7.24.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" - integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" - integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== - -"@babel/plugin-syntax-jsx@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-display-name@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" - integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" - integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-react@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" - integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.23.3" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.23.3" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" - integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@emnapi/core@1.10.0", "@emnapi/core@^1.1.0": - version "1.10.0" - resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" - integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== - dependencies: - "@emnapi/wasi-threads" "1.2.1" - tslib "^2.4.0" - -"@emnapi/runtime@1.10.0", "@emnapi/runtime@^1.1.0": - version "1.10.0" - resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" - integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" - integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== - 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" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@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" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@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" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@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" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@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" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@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" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@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" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@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" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@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" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@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" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@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" - integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@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" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@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" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@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" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@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" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@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" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@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" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@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" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@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" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@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" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@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" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@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" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@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== - -"@isaacs/balanced-match@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" - integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== - -"@isaacs/brace-expansion@^5.0.0": - version "5.0.1" - resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#0ef5a92d91f2fff2a37646ce54da9e5f599f6eff" - integrity sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ== - dependencies: - "@isaacs/balanced-match" "^4.0.1" - -"@jest/diff-sequences@30.0.1": - version "30.0.1" - resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" - integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== - -"@jest/get-type@30.1.0": - version "30.1.0" - resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz#4fcb4dc2ebcf0811be1c04fd1cb79c2dba431cbc" - integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== - -"@jest/schemas@30.0.5": - version "30.0.5" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" - integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== - dependencies: - "@sinclair/typebox" "^0.34.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" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@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" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@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" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@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" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@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.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== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@napi-rs/wasm-runtime@0.2.4": - version "0.2.4" - resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" - integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== - dependencies: - "@emnapi/core" "^1.1.0" - "@emnapi/runtime" "^1.1.0" - "@tybys/wasm-util" "^0.9.0" - -"@napi-rs/wasm-runtime@^1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" - integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== - dependencies: - "@tybys/wasm-util" "^0.10.1" - -"@nx/nx-darwin-arm64@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz#beff47093c7d95bfb98631db85a3f680ceda8522" - integrity sha512-CPtgK/s4FQ0Y/6WmHpJccOTANve5UjlFajLp+S8Z538zHdc5a5MjJBcXo9oRzKNvhTHoGijr/fCMU2erMrYYtg== - -"@nx/nx-darwin-x64@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.2.tgz#301d7ddd106af5485a1c86778bfeee3bf1d06f7d" - integrity sha512-YuFGIpmtMPbMM3QchJttlLFE5oNenE+3mRCWcMNrXPOixsw28flvYWhFcHE3CPV8q/E+Yg0FsOG+8u1p7eEgWg== - -"@nx/nx-freebsd-x64@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.2.tgz#b603f93b8e95b357b9c58bfb976c8c41badd535b" - integrity sha512-Oy3jejPB7lszxAf4rdTpJfOBVgAUtkUZJCLTdGdnpveF/m3s9MN9DaeEXgUs0mMp1qV3Y0KE3KcVHqII54AoBQ== - -"@nx/nx-linux-arm-gnueabihf@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.2.tgz#276e86ddcdb02a1b8a8454befc81184f97dc9537" - integrity sha512-38bZGStG6bZ+R7ZbGxvnDVjVrV6bRTsiX8rr3fmM/AkEfvgyhWgE3R+xqUHoJVM4PK0I2YlYoSjIny4gFeOBxQ== - -"@nx/nx-linux-arm64-gnu@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.2.tgz#2dbf04bf2a23fdcd2894e55c36ac1fd1308f23f0" - integrity sha512-D+tPXB0tkSuDPsuXvyQIsF3f3PBWfAwIe9FkBWtVoDVYqE+jbz+tVGsjQMNWGafLE4sC8ZQdjhsxyT8I53Anbw== - -"@nx/nx-linux-arm64-musl@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.2.tgz#23d0ed24b16b9d3d3832a3c4482c92e60aa972c9" - integrity sha512-UbO527qqa8KLBi13uXto5SmxcZv1Smer7sPexJonshDlmrJsyvx5m8nm6tcSv04W5yQEL90vPlTux8dNvEDWrw== - -"@nx/nx-linux-x64-gnu@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.2.tgz#cc30fff1e986c6d3f58de6957b1bdbaeaa5acee6" - integrity sha512-wR6596Vr/Z+blUAmjLHG2TCQMs4O1oi9JXK1J/PoPeO9UqdHwStCJBAd61zDFSUYJe0x+dkeRQu96fE5BW8Kcg== - -"@nx/nx-linux-x64-musl@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.2.tgz#5bb3ebcda315fb1d97dc2c1e3ac24d9ea2f21200" - integrity sha512-MBXOw4AH4FWl4orwVykj/e75awTNDePogrl3pXNX9NcQLdj6JzS4e2jaALQeRBQLxQzeFvFQV/W4PBzoPV6/NA== - -"@nx/nx-win32-arm64-msvc@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.2.tgz#a671ea98b107670930c7cf59164460d45f8c4f20" - integrity sha512-SaWSZkRH5uV8vP2lj6RRv+kw2IzaIDXkutReOXpooshIWZl9KjrQELNTCZTYyhLDsMlcyhSvLFlTiA4NkZ8udw== - -"@nx/nx-win32-x64-msvc@22.5.2": - version "22.5.2" - resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz#0b3867776cd7fdb86068b2dd733e6621ded5165a" - integrity sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw== - -"@oxc-project/types@=0.129.0": - version "0.129.0" - resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz#8e6362388ce6092feafd14f3a73ae6407b1285d9" - integrity sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg== - -"@oxfmt/binding-android-arm-eabi@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.33.0.tgz#916a010c5d5cb89926da9288dcc078b00910e3c3" - integrity sha512-ML6qRW8/HiBANteqfyFAR1Zu0VrJu+6o4gkPLsssq74hQ7wDMkufBYJXI16PGSERxEYNwKxO5fesCuMssgTv9w== - -"@oxfmt/binding-android-arm64@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.33.0.tgz#606e35d0dfafc2ce18bd6b60769a892fe0c8ddc6" - integrity sha512-WimmcyrGpTOntj7F7CO9RMssncOKYall93nBnzJbI2ZZDhVRuCkvFwTpwz80cZqwYm5udXRXfF40ZXcCxjp9jg== - -"@oxfmt/binding-darwin-arm64@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.33.0.tgz#022e34ff2429b4bee1ecc4d9a3e639089836ad30" - integrity sha512-PorspsX9O5ISstVaq34OK4esN0LVcuU4DVg+XuSqJsfJ//gn6z6WH2Tt7s0rTQaqEcp76g7+QdWQOmnJDZsEVg== - -"@oxfmt/binding-darwin-x64@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.33.0.tgz#2e370a9d6d65e1b99080e92a57a8965cd47cde68" - integrity sha512-8278bqQtOcHRPhhzcqwN9KIideut+cftBjF8d2TOsSQrlsJSFx41wCCJ38mFmH9NOmU1M+x9jpeobHnbRP1okw== - -"@oxfmt/binding-freebsd-x64@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.33.0.tgz#e2fd3aed8ffd7674b029e3e62fd3ee9fa13f6688" - integrity sha512-BiqYVwWFHLf5dkfg0aCKsXa9rpi//vH1+xePCpd7Ulz9yp9pJKP4DWgS5g+OW8MaqOtt7iyAszhxtk/j1nDKHQ== - -"@oxfmt/binding-linux-arm-gnueabihf@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.33.0.tgz#240d6309203feb48b39479eb7a1d1cd43147258d" - integrity sha512-oAVmmurXx0OKbNOVv71oK92LsF1LwYWpnhDnX0VaAy/NLsCKf4B7Zo7lxkJh80nfhU20TibcdwYfoHVaqlStPQ== - -"@oxfmt/binding-linux-arm-musleabihf@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.33.0.tgz#c1eec538c5e14f9ba2217b787b418e1cd260f7ab" - integrity sha512-YB6S8CiRol59oRxnuclJiWoV6l+l8ru/NsuQNYjXZnnPXfSTXKtMLWHCnL/figpCFYA1E7JyjrBbar1qxe2aZg== - -"@oxfmt/binding-linux-arm64-gnu@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.33.0.tgz#59ca12cf1d535754853ee4d57d6d4f06118e6440" - integrity sha512-hrYy+FpWoB6N24E9oGRimhVkqlls9yeqcRmQakEPUHoAbij6rYxsHHYIp3+FHRiQZFAOUxWKn/CCQoy/Mv3Dgw== - -"@oxfmt/binding-linux-arm64-musl@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.33.0.tgz#c76d1e098d3184db04e5a144e2be7986404410ae" - integrity sha512-O1YIzymGRdWj9cG5iVTjkP7zk9/hSaVN8ZEbqMnWZjLC1phXlv54cUvANGGXndgJp2JS4W9XENn7eo5I4jZueg== - -"@oxfmt/binding-linux-ppc64-gnu@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.33.0.tgz#53037342bded42f36bee74725d2886158cc8c1dd" - integrity sha512-2lrkNe+B0w1tCgQTaozfUNQCYMbqKKCGcnTDATmWCZzO77W2sh+3n04r1lk9Q1CK3bI+C3fPwhFPUR2X2BvlyQ== - -"@oxfmt/binding-linux-riscv64-gnu@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.33.0.tgz#cfe21dee920934c0779b6a07df166f13a278d4d4" - integrity sha512-8DSG1q0M6097vowHAkEyHnKed75/BWr1IBtgCJfytnWQg+Jn1X4DryhfjqonKZOZiv74oFQl5J8TCbdDuXXdtQ== - -"@oxfmt/binding-linux-riscv64-musl@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.33.0.tgz#902784bbbed87c3eb9490c4b130ec4a930c5ecab" - integrity sha512-eWaxnpPz7+p0QGUnw7GGviVBDOXabr6Cd0w7S/vnWTqQo9z1VroT7XXFnJEZ3dBwxMB9lphyuuYi/GLTCxqxlg== - -"@oxfmt/binding-linux-s390x-gnu@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.33.0.tgz#2f30f4833f5cdee1055a777c71364c125fed08a5" - integrity sha512-+mH8cQTqq+Tu2CdoB2/Wmk9CqotXResi+gPvXpb+AAUt/LiwpicTQqSolMheQKogkDTYHPuUiSN23QYmy7IXNQ== - -"@oxfmt/binding-linux-x64-gnu@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.33.0.tgz#4999dff1eac46e574cdef36277189a479ae3aaf3" - integrity sha512-fjyslAYAPE2+B6Ckrs5LuDQ6lB1re5MumPnzefAXsen3JGwiRilra6XdjUmszTNoExJKbewoxxd6bcLSTpkAJQ== - -"@oxfmt/binding-linux-x64-musl@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.33.0.tgz#2c6c39e71aaaa46b87bba9d63ada27ba3555b41d" - integrity sha512-ve/jGBlTt35Jl/I0A0SfCQX3wKnadzPDdyOFEwe2ZgHHIT9uhqhAv1PaVXTenSBpauICEWYH8mWy+ittzlVE/A== - -"@oxfmt/binding-openharmony-arm64@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.33.0.tgz#0021245d4515a396b998d158d58caa124787365f" - integrity sha512-lsWRgY9e+uPvwXnuDiJkmJ2Zs3XwwaQkaALJ3/SXU9kjZP0Qh8/tGW8Tk/Z6WL32sDxx+aOK5HuU7qFY9dHJhg== - -"@oxfmt/binding-win32-arm64-msvc@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.33.0.tgz#7b6a03bc0748bb466b18f552b7bb7ff80f3dc9f3" - integrity sha512-w8AQHyGDRZutxtQ7IURdBEddwFrtHQiG6+yIFpNJ4HiMyYEqeAWzwBQBfwSAxtSNh6Y9qqbbc1OM2mHN6AB3Uw== - -"@oxfmt/binding-win32-ia32-msvc@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.33.0.tgz#0ec1faf5ca8896fd12d238dd6ae72c5e81aff2cc" - integrity sha512-j2X4iumKVwDzQtUx3JBDkaydx6eLuncgUZPl2ybZ8llxJMFbZIniws70FzUQePMfMtzLozIm7vo4bjkvQFsOzw== - -"@oxfmt/binding-win32-x64-msvc@0.33.0": - version "0.33.0" - resolved "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.33.0.tgz#b5d6d19b7889755e6ed43c3dc528e3263856ddf1" - integrity sha512-lsBQxbepASwOBUh3chcKAjU+jVAQhLElbPYiagIq26cU8vA9Bttj6t20bMvCQCw31m440IRlNhrK7NpnUI8mzA== - -"@oxlint-tsgolint/darwin-arm64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-0.16.0.tgz#d03363cdf89bf50faac558a7768e05cd2ab2d507" - integrity sha512-WQt5lGwRPJBw7q2KNR0mSPDAaMmZmVvDlEEti96xLO7ONhyomQc6fBZxxwZ4qTFedjJnrHX94sFelZ4OKzS7UQ== - -"@oxlint-tsgolint/darwin-x64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-0.16.0.tgz#c921618ae28905316c2cc59c3e829ae1a0950655" - integrity sha512-VJo29XOzdkalvCTiE2v6FU3qZlgHaM8x8hUEVJGPU2i5W+FlocPpmn00+Ld2n7Q0pqIjyD5EyvZ5UmoIEJMfqg== - -"@oxlint-tsgolint/linux-arm64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-0.16.0.tgz#9fc38d94e27380a515aa24e1119d696318a8b6aa" - integrity sha512-MPfqRt1+XRHv9oHomcBMQ3KpTE+CSkZz14wUxDQoqTNdUlV0HWdzwIE9q65I3D9YyxEnqpM7j4qtDQ3apqVvbQ== - -"@oxlint-tsgolint/linux-x64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-0.16.0.tgz#366088e3a85b6c295fc5b95d2098ee51a2b67b7f" - integrity sha512-XQSwVUsnwLokMhe1TD6IjgvW5WMTPzOGGkdFDtXWQmlN2YeTw94s/NN0KgDrn2agM1WIgAenEkvnm0u7NgwEyw== - -"@oxlint-tsgolint/win32-arm64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-0.16.0.tgz#9ec46fa4ae6a6b90bdd708af64740812172b8ec8" - integrity sha512-EWdlspQiiFGsP2AiCYdhg5dTYyAlj6y1nRyNI2dQWq4Q/LITFHiSRVPe+7m7K7lcsZCEz2icN/bCeSkZaORqIg== - -"@oxlint-tsgolint/win32-x64@0.16.0": - version "0.16.0" - resolved "https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-0.16.0.tgz#861e5c7df0108212e4b61ef6ae38df22104028a1" - integrity sha512-1ufk8cgktXJuJZHKF63zCHAkaLMwZrEXnZ89H2y6NO85PtOXqu4zbdNl0VBpPP3fCUuUBu9RvNqMFiv0VsbXWA== - -"@oxlint/binding-android-arm-eabi@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.53.0.tgz#c42286b0a96d31fedc7b37183518c9e4054f6330" - integrity sha512-JC89/jAx4d2zhDIbK8MC4L659FN1WiMXMBkNg7b33KXSkYpUgcbf+0nz7+EPRg+VwWiZVfaoFkNHJ7RXYb5Neg== - -"@oxlint/binding-android-arm64@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.53.0.tgz#b3b0906247450cd8a3840ee330e5b7cc97626db2" - integrity sha512-CY+pZfi+uyeU7AwFrEnjsNT+VfxYmKLMuk7bVxArd8f+09hQbJb8f7C7EpvTfNqrCK1J8zZlaYI4LltmEctgbQ== - -"@oxlint/binding-darwin-arm64@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.53.0.tgz#b261b5f5a452dc477c1c576b9c0bc23a305da17d" - integrity sha512-0aqsC4HDQ94oI6kMz64iaOJ1f3bCVArxvaHJGOScBvFz6CcQedXi5b70Xg09CYjKNaHA56dW0QJfoZ/111kz1A== - -"@oxlint/binding-darwin-x64@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.53.0.tgz#3daf9e22dd2e35a24c982ff42fcb701d513075be" - integrity sha512-e+KvuaWtnisyWojO/t5qKDbp2dvVpg+1dl4MGnTb21QpY4+4+9Y1XmZPaztcA2XNvy4BIaXFW+9JH9tMpSBqUg== - -"@oxlint/binding-freebsd-x64@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.53.0.tgz#eee6be65be588fc91a785a099b53275f52f7fd7e" - integrity sha512-hpU0ZHVeblFjmZDfgi9BxhhCpURh0KjoFy5V+Tvp9sg/fRcnMUEfaJrgz+jQfOX4jctlVWrAs1ANs91+5iV+zA== - -"@oxlint/binding-linux-arm-gnueabihf@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.53.0.tgz#0751ed24c4a370a9cbdbfcd5583293f13e79d008" - integrity sha512-ccKxOpw+X4xa2pO+qbTOpxQ2x1+Ag3ViRQMnWt3gHp1LcpNgS1xd6GYc3OvehmHtrXqEV3YGczZ0I1qpBB4/2A== - -"@oxlint/binding-linux-arm-musleabihf@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.53.0.tgz#a795b821695d7af090b9ce036d99d0ce7b43e645" - integrity sha512-UBkBvmzSmlyH2ZObQMDKW/TuyTmUtP/XClPUyU2YLwj0qLopZTZxnDz4VG5d3wz1HQuZXO0o1QqsnQUW1v4a6Q== - -"@oxlint/binding-linux-arm64-gnu@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.53.0.tgz#805fb2ae2d480687a12c942f78069d6ccf9399bc" - integrity sha512-PQJJ1izoH9p61las6rZ0BWOznAhTDMmdUPL2IEBLuXFwhy2mSloYHvRkk39PSYJ1DyG+trqU5Z9ZbtHSGH6plg== - -"@oxlint/binding-linux-arm64-musl@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.53.0.tgz#3664aad7e24841a68525a6220e64a43de1d441c3" - integrity sha512-GXI1o4Thn/rtnRIL38BwrDMwVcUbIHKCsOixIWf/CkU3fCG3MXFzFTtDMt+34ik0Qk452d8kcpksL0w/hUkMZA== - -"@oxlint/binding-linux-ppc64-gnu@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.53.0.tgz#7ffa2e40aae448ee3728f158612f02428489e98c" - integrity sha512-Uahk7IVs2yBamCgeJ3XKpKT9Vh+de0pDKISFKnjEcI3c/w2CFHk1+W6Q6G3KI56HGwE9PWCp6ayhA9whXWkNIQ== - -"@oxlint/binding-linux-riscv64-gnu@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.53.0.tgz#016b145e0abd4a24149558873525b43609edb080" - integrity sha512-sWtcU9UkrKMWsGKdFy8R6jkm9Q0VVG1VCpxVuh0HzRQQi3ENI1Nh5CkpsdfUs2MKRcOoHKbXqTscunuXjhxoxQ== - -"@oxlint/binding-linux-riscv64-musl@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.53.0.tgz#16d7a1cc60f6d85aab3eea1efff84ea1450789f6" - integrity sha512-aXew1+HDvCdExijX/8NBVC854zJwxhKP3l9AHFSHQNo4EanlHtzDMIlIvP3raUkL0vXtFCkTFYezzU5HjstB8A== - -"@oxlint/binding-linux-s390x-gnu@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.53.0.tgz#edbf548da82d4c9ae023a031839425912ac99e81" - integrity sha512-rVpyBSqPGou9sITcsoXqUoGBUH74bxYLYOAGUqN599Zu6BQBlBU9hh3bJQ/20D1xrhhrsbiCpVPvXpLPM5nL1w== - -"@oxlint/binding-linux-x64-gnu@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.53.0.tgz#fa239fe242fd76b45d9a771096215abb82ebd325" - integrity sha512-eOyeQ8qFQ2geXmlWJuXAOaek0hFhbMLlYsU457NMLKDRoC43Xf+eDPZ9Yk0n9jDaGJ5zBl/3Dy8wo41cnIXuLA== - -"@oxlint/binding-linux-x64-musl@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.53.0.tgz#c9f88972e043463ec7fa8f855d6c92a66bc263c0" - integrity sha512-S6rBArW/zD1tob8M9PwKYrRmz+j1ss1+wjbRAJCWKd7TC3JB6noDiA95pIj9zOZVVp04MIzy5qymnYusrEyXzg== - -"@oxlint/binding-openharmony-arm64@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.53.0.tgz#d0df48d35bba716145dbed7529a34ce1829be49e" - integrity sha512-sd/A0Ny5sN0D/MJtlk7w2jGY4bJQou7gToa9WZF7Sj6HTyVzvlzKJWiOHfr4SulVk4ndiFQ8rKmF9rXP0EcF3A== - -"@oxlint/binding-win32-arm64-msvc@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.53.0.tgz#f0a5f856e911112820adbb16240add6adbe28bff" - integrity sha512-QC3q7b51Er/ZurEFcFzc7RpQ/YEoEBLJuCp3WoOzhSHHH/nkUKFy+igOxlj1z3LayhEZPDQQ7sXvv2PM2cdG3Q== - -"@oxlint/binding-win32-ia32-msvc@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.53.0.tgz#f43b0fc12f68620defb373684de91dbca7fbff49" - integrity sha512-3OvLgOqwd705hWHV2i8ni80pilvg6BUgpC2+xtVu++e/q28LKVohGh5J5QYJOrRMfWmxK0M/AUu43vUw62LAKQ== - -"@oxlint/binding-win32-x64-msvc@1.53.0": - version "1.53.0" - resolved "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.53.0.tgz#0e0cc062024a7a58cdaa17a3fa0cefb4a3963a25" - integrity sha512-xTiOkntexCdJytZ7ArIIgl3vGW5ujMM3sJNM7/+iqGAVJagCqjFFWn68HRWRLeyT66c95uR+CeFmQFI6mLQqDw== - -"@rolldown/binding-android-arm64@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz#aefa7afdcabc1269b1933d50cad31013cb697143" - integrity sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA== - -"@rolldown/binding-darwin-arm64@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz#83e708d97f9f8f3791e79ef8c24d5fcc5e8f29df" - integrity sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew== - -"@rolldown/binding-darwin-x64@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz#4649bb4db634850f6de2b2f1ec37fc39a18adcf8" - integrity sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ== - -"@rolldown/binding-freebsd-x64@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz#2b0e50fdc926fa9680dca9d6acc4c3729b7df899" - integrity sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz#8fd160371f4c160a2fa52de8f9ede51fbd43fc5b" - integrity sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A== - -"@rolldown/binding-linux-arm64-gnu@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz#9915488c96cb0fc49a70bd27c030def3cbbc8cbb" - integrity sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ== - -"@rolldown/binding-linux-arm64-musl@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz#74bb160f2747404eed2f917bea01b0548c783848" - integrity sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA== - -"@rolldown/binding-linux-ppc64-gnu@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz#fdc876160b6738ff34a7d719c4ea42edb38a70bc" - integrity sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg== - -"@rolldown/binding-linux-s390x-gnu@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz#39668ce16e8c2ac16308fdb7116ebd5b44acab65" - integrity sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA== - -"@rolldown/binding-linux-x64-gnu@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz#02a7e4a0fa3af90bf4e937ecd1f4c0dc07ab2397" - integrity sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA== - -"@rolldown/binding-linux-x64-musl@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz#610a08a3055d21f287c550e16a5541501883f2b1" - integrity sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw== - -"@rolldown/binding-openharmony-arm64@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz#62e5da4d623b446a57c9f472b598fedaf5289a3d" - integrity sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig== - -"@rolldown/binding-wasm32-wasi@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz#57191a2986e7f43a920fc618da92f29b0b8123c9" - integrity sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg== - dependencies: - "@emnapi/core" "1.10.0" - "@emnapi/runtime" "1.10.0" - "@napi-rs/wasm-runtime" "^1.1.4" - -"@rolldown/binding-win32-arm64-msvc@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz#77faf1e28521411bd0be6f4e55f3c4c5f17cd619" - integrity sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow== - -"@rolldown/binding-win32-x64-msvc@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz#980a8f9983b0bd3d35ee867ade85cb020eca27ba" - integrity sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg== - -"@rolldown/pluginutils@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz#d660b953fd500d552fc17213f279e29037f08c2d" - integrity sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ== - -"@rollup/rollup-android-arm-eabi@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz#a6742c74c7d9d6d604ef8a48f99326b4ecda3d82" - integrity sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg== - -"@rollup/rollup-android-arm64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz#97247be098de4df0c11971089fd2edf80a5da8cf" - integrity sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q== - -"@rollup/rollup-darwin-arm64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz#674852cf14cf11b8056e0b1a2f4e872b523576cf" - integrity sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg== - -"@rollup/rollup-darwin-x64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz#36dfd7ed0aaf4d9d89d9ef983af72632455b0246" - integrity sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w== - -"@rollup/rollup-freebsd-arm64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz#2f87c2074b4220260fdb52a9996246edfc633c22" - integrity sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA== - -"@rollup/rollup-freebsd-x64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz#9b5a26522a38a95dc06616d1939d4d9a76937803" - integrity sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg== - -"@rollup/rollup-linux-arm-gnueabihf@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz#86aa4859385a8734235b5e40a48e52d770758c3a" - integrity sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw== - -"@rollup/rollup-linux-arm-musleabihf@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz#cbe70e56e6ece8dac83eb773b624fc9e5a460976" - integrity sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA== - -"@rollup/rollup-linux-arm64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz#d14992a2e653bc3263d284bc6579b7a2890e1c45" - integrity sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA== - -"@rollup/rollup-linux-arm64-musl@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz#2fdd1ddc434ea90aeaa0851d2044789b4d07f6da" - integrity sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA== - -"@rollup/rollup-linux-loong64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz#8a181e6f89f969f21666a743cd411416c80099e7" - integrity sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg== - -"@rollup/rollup-linux-loong64-musl@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz#904125af2babc395f8061daa27b5af1f4e3f2f78" - integrity sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q== - -"@rollup/rollup-linux-ppc64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz#a57970ac6864c9a3447411a658224bdcf948be22" - integrity sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA== - -"@rollup/rollup-linux-ppc64-musl@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz#bb84de5b26870567a4267666e08891e80bb56a63" - integrity sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA== - -"@rollup/rollup-linux-riscv64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz#72d00d2c7fb375ce3564e759db33f17a35bffab9" - integrity sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg== - -"@rollup/rollup-linux-riscv64-musl@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz#4c166ef58e718f9245bd31873384ba15a5c1a883" - integrity sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg== - -"@rollup/rollup-linux-s390x-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz#bb5025cde9a61db478c2ca7215808ad3bce73a09" - integrity sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w== - -"@rollup/rollup-linux-x64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz#9b66b1f9cd95c6624c788f021c756269ffed1552" - integrity sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg== - -"@rollup/rollup-linux-x64-musl@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz#b007ca255dc7166017d57d7d2451963f0bd23fd9" - integrity sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg== - -"@rollup/rollup-openbsd-x64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz#e8b357b2d1aa2c8d76a98f5f0d889eabe93f4ef9" - integrity sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ== - -"@rollup/rollup-openharmony-arm64@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz#96c2e3f4aacd3d921981329831ff8dde492204dc" - integrity sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA== - -"@rollup/rollup-win32-arm64-msvc@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz#2d865149d706d938df8b4b8f117e69a77646d581" - integrity sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A== - -"@rollup/rollup-win32-ia32-msvc@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz#abe1593be0fa92325e9971c8da429c5e05b92c36" - integrity sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA== - -"@rollup/rollup-win32-x64-gnu@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz#c4af3e9518c9a5cd4b1c163dc81d0ad4d82e7eab" - integrity sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA== - -"@rollup/rollup-win32-x64-msvc@4.59.0": - version "4.59.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz#4584a8a87b29188a4c1fe987a9fcf701e256d86c" - integrity sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA== - -"@sentry-internal/eslint-plugin-sdk@^10.53.1": - version "10.53.1" - resolved "https://registry.npmjs.org/@sentry-internal/eslint-plugin-sdk/-/eslint-plugin-sdk-10.53.1.tgz#50829ad86d668ca4bb502e6e7f5960aa5cb6a5b0" - integrity sha512-L0XfWq7wxw0PBubGsUq9cC+CvmMFGlmAOHxJM1y9I+UVqnZSc2UggJ1hoPZc4J2zx5OxB92uN/c+cD2N65COKA== - -"@sentry-internal/tracing@7.50.0": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" - integrity sha512-4TQ4vN0aMBWsUXfJWk2xbe4x7fKfwCXgXKTtHC/ocwwKM+0EefV5Iw9YFG8IrIQN4vMtuRzktqcs9q0/Sbv7tg== - dependencies: - "@sentry/core" "7.50.0" - "@sentry/types" "7.50.0" - "@sentry/utils" "7.50.0" - tslib "^1.9.3" - -"@sentry-internal/typescript@^10.53.1": - version "10.53.1" - resolved "https://registry.npmjs.org/@sentry-internal/typescript/-/typescript-10.53.1.tgz#216b3e3ec0d5aa7ef3e7055ea50d6371d9786cce" - integrity sha512-7ncY4Ww9MsTf5lsX9qAUaiNeQdKNBeZm7rtFze0UeU8fTLxOKx9ink4jCFa1xB/sztIR1pq/rGmnBs7evvn+aw== - -"@sentry/cli-darwin@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.6.tgz#38fd82751014b287e58e99ef948d01ca1e09f41d" - integrity sha512-udAVvcyfNa0R+95GvPz/+43/N3TC0TYKdkQ7D7jhPSzbcMc7l2fxRNN5yB3UpCA5fWFnW4toeaqwDBhb/Wh3LA== - -"@sentry/cli-linux-arm64@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.6.tgz#6e660e457af7928c1be8191c77646801fe3fa6a0" - integrity sha512-q8mEcNNmeXMy5i+jWT30TVpH7LcP4HD21CD5XRSPAd/a912HF6EpK0ybf/1USO14WOhoXbAGi9txwaWabSe33g== - -"@sentry/cli-linux-arm@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.6.tgz#41256912d636193d2a67985b6c9b3efbbe6a47c9" - integrity sha512-pD0LAt5PcUzAinBwvDqc66x9+2CabHEv486yP0gRjWO7SakbaxmfVq/EXd8VLq/Tzi39LAu422UYK1lpW3MILw== - -"@sentry/cli-linux-i686@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.6.tgz#278e7696d82e51dfbfd7d82ec125dda65d249a43" - integrity sha512-q8vNJi1eOV/4vxAFWBsEwLHoSYapaZHIf4j76KJGJXFKTkEbsjCOOsKbwUIBTQQhRgV4DFWh3ryfsPS/que4Kg== - -"@sentry/cli-linux-x64@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.6.tgz#57860d46ac3397c33bbcc6224ac19b7de2502c18" - integrity sha512-DZu956Mhi3ZRjTBe1WdbGV46ldVbA8d2rgp/fh51GsI25zjBHah4wZnPTSzpc+YqxU6pJpg579B/r3jrIK530Q== - -"@sentry/cli-win32-arm64@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.6.tgz#9335a5d2411381dca1d6b11fdd71a4342b375fc3" - integrity sha512-nj0Ff/kmAB73EPDhR8B4O9r+NUHK5GkPCkGWC+kXVemqAJWL5jcJ5KdxG0l/S0z6RoEoltID8/43/B+TaMlT7A== - -"@sentry/cli-win32-i686@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.6.tgz#2afd19536ef111af43538ccc5f9c8c0b179d930e" - integrity sha512-WNZiDzPbgsEMQWq4avsQ391v/xWKJDIWWWo9GYl+N/w5qcYKkoDW7wQG7T9FasI6ENn68phChTOAPXXxbfAdOg== - -"@sentry/cli-win32-x64@2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.6.tgz#8d0e70b5660cc82a7763a4bbe9346cf18e49e07e" - integrity sha512-R35WJ17oF4D2eqI1DR2sQQqr0fjRTt5xoP16WrTu91XM2lndRMFsnjh+/GttbxapLCBNlrjzia99MJ0PZHZpgA== - -"@sentry/cli@^2.58.6": - version "2.58.6" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.6.tgz#72edb4977d822757511b279e006b00f139e24945" - integrity sha512-baBcNPLLfUi9WuL+Tpri9BFaAdvugZIKelC5X0tt0Zdy+K0K+PCVSrnNmwMWU/HyaF/SEv6b6UHnXIdqanBlcg== - dependencies: - https-proxy-agent "^5.0.0" - node-fetch "^2.6.7" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - optionalDependencies: - "@sentry/cli-darwin" "2.58.6" - "@sentry/cli-linux-arm" "2.58.6" - "@sentry/cli-linux-arm64" "2.58.6" - "@sentry/cli-linux-i686" "2.58.6" - "@sentry/cli-linux-x64" "2.58.6" - "@sentry/cli-win32-arm64" "2.58.6" - "@sentry/cli-win32-i686" "2.58.6" - "@sentry/cli-win32-x64" "2.58.6" - -"@sentry/core@10.56.0": - version "10.56.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-10.56.0.tgz#61159a5879d7937b6509cf4e6a680b991ef82001" - integrity sha512-L+u1dIz5SANrmST5jhIwETtt4apILgKrylv12X4hKJU0PvZl+NorjeV/ty3MwzpKQPg6b6q6qMOSLc1rLpy3iQ== - -"@sentry/core@7.50.0": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-7.50.0.tgz#88bc9cbfc0cb429a28489ece6f0be7a7006436c4" - integrity sha512-6oD1a3fYs4aiNK7tuJSd88LHjYJAetd7ZK/AfJniU7zWKj4jxIYfO8nhm0qdnhEDs81RcweVDmPhWm3Kwrzzsg== - dependencies: - "@sentry/types" "7.50.0" - "@sentry/utils" "7.50.0" - tslib "^1.9.3" - -"@sentry/integrations@7.50": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.50.0.tgz#82616f34ddba3c1f3e17b54900dfa7d8e0a0c537" - integrity sha512-HUmPN2sHNx37m+lOWIoCILHimILdI0Df9nGmWA13fIhny8mxJ6Dbazyis11AW4/lrZ1a6F1SQ2epLEq7ZesiRw== - dependencies: - "@sentry/types" "7.50.0" - "@sentry/utils" "7.50.0" - localforage "^1.8.1" - tslib "^1.9.3" - -"@sentry/node@7.50": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-7.50.0.tgz#d6adab136d87f7dca614ea0d77944f902fa45626" - integrity sha512-11UJBKoQFMp7f8sbzeO2gENsKIUkVCNBTzuPRib7l2K1HMjSfacXmwwma7ZEs0mc3ofIZ1UYuyONAXmI1lK9cQ== - dependencies: - "@sentry-internal/tracing" "7.50.0" - "@sentry/core" "7.50.0" - "@sentry/types" "7.50.0" - "@sentry/utils" "7.50.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/types@10.56.0": - version "10.56.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-10.56.0.tgz#4add2d3cfcb294e291e6a63bd18a1f26d216cf1b" - integrity sha512-I9JtS/EtzpV5o9MwLNOKBCTmGU61HRT3E9MS9k68cKxAwexNH2zFW0E9EnQYLDhANXsvHA6moGA+nqt2rbD92Q== - dependencies: - "@sentry/core" "10.56.0" - -"@sentry/types@7.50.0": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-7.50.0.tgz#52a035cad83a80ca26fa53c09eb1241250c3df3e" - integrity sha512-Zo9vyI98QNeYT0K0y57Rb4JRWDaPEgmp+QkQ4CRQZFUTWetO5fvPZ4Gb/R7TW16LajuHZlbJBHmvmNj2pkL2kw== - -"@sentry/utils@7.50.0": - version "7.50.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.50.0.tgz#2b93a48024651436e95b7c8e2066aee7c2234d57" - integrity sha512-iyPwwC6fwJsiPhH27ZbIiSsY5RaccHBqADS2zEjgKYhmP4P9WGgHRDrvLEnkOjqQyKNb6c0yfmv83n0uxYnolw== - dependencies: - "@sentry/types" "7.50.0" - tslib "^1.9.3" - -"@sinclair/typebox@^0.34.0": - version "0.34.48" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz#75b0ead87e59e1adbd6dccdc42bad4fddee73b59" - integrity sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA== - -"@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== - -"@tybys/wasm-util@^0.10.1": - version "0.10.1" - resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" - integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== - dependencies: - tslib "^2.4.0" - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== - dependencies: - tslib "^2.4.0" - -"@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.18.5" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" - integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== - dependencies: - "@babel/types" "^7.3.0" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@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" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - 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" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.40.0" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" - integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": - 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" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.17.13": - version "4.17.17" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/http-proxy@^1.17.9": - version "1.17.11" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== - dependencies: - "@types/node" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.8": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/node@*": - version "22.19.11" - resolved "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz#7e1feaad24e4e36c52fa5558d5864bb4b272603e" - integrity sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w== - dependencies: - undici-types "~6.21.0" - -"@types/node@^18.6.3": - version "18.19.130" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" - integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== - dependencies: - undici-types "~5.26.4" - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/send@*": - version "0.17.1" - resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.1" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== - -"@types/uglify-js@*": - version "3.17.1" - resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" - integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== - dependencies: - source-map "^0.6.1" - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@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" - -"@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" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - 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/helper-api-error@1.11.1": - version "1.11.1" - 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-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@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-section@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@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" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@yarnpkg/parsers@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" - integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - -"@zkochan/js-yaml@0.0.7": - version "0.0.7" - resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" - integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== - dependencies: - argparse "^2.0.1" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.7.6: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn@^8.5.0, acorn@^8.7.1: - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -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== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -axios@^1.12.0: - version "1.15.0" - resolved "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f" - integrity sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q== - dependencies: - follow-redirects "^1.15.11" - form-data "^4.0.5" - proxy-from-env "^2.1.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -balanced-match@^4.0.2: - version "4.0.4" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" - integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -brace-expansion@^5.0.2: - version "5.0.3" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz#6a9c6c268f85b53959ec527aeafe0f7300258eef" - integrity sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA== - dependencies: - balanced-match "^4.0.2" - -browserslist@^4.14.5, browserslist@^4.22.2: - version "4.22.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" - integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== - dependencies: - caniuse-lite "^1.0.30001580" - electron-to-chromium "^1.4.648" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caniuse-lite@^1.0.30001580: - version "1.0.30001581" - 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@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -cli-cursor@3.1.0, cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -dotenv-expand@~11.0.6: - version "11.0.7" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" - integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== - dependencies: - dotenv "^16.4.5" - -dotenv@^16.3.1, dotenv@^16.4.5: - version "16.6.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - -dotenv@~16.4.5: - version "16.4.7" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.7: - version "3.1.9" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.648: - version "1.4.653" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz#832ab25e80ad698ac09c1ca547bd9ee6cce7df10" - integrity sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.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== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== - dependencies: - array-buffer-byte-length "^1.0.0" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.3" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -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-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild-android-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" - integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== - -esbuild-android-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" - integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== - -esbuild-darwin-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" - integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== - -esbuild-darwin-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" - integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== - -esbuild-freebsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" - integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== - -esbuild-freebsd-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" - integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== - -esbuild-linux-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" - integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== - -esbuild-linux-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" - integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== - -esbuild-linux-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" - integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== - -esbuild-linux-arm@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" - integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== - -esbuild-linux-mips64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" - integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== - -esbuild-linux-ppc64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" - integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== - -esbuild-linux-riscv64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" - integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== - -esbuild-linux-s390x@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" - integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== - -esbuild-netbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" - integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== - -esbuild-openbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" - integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== - -esbuild-sunos-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" - integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== - -esbuild-windows-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" - integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== - -esbuild-windows-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" - integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== - -esbuild-windows-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" - integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== - -esbuild@0.17.19: - version "0.17.19" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@^0.14.47: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" - integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== - optionalDependencies: - "@esbuild/linux-loong64" "0.14.54" - esbuild-android-64 "0.14.54" - esbuild-android-arm64 "0.14.54" - esbuild-darwin-64 "0.14.54" - esbuild-darwin-arm64 "0.14.54" - esbuild-freebsd-64 "0.14.54" - esbuild-freebsd-arm64 "0.14.54" - esbuild-linux-32 "0.14.54" - esbuild-linux-64 "0.14.54" - esbuild-linux-arm "0.14.54" - esbuild-linux-arm64 "0.14.54" - esbuild-linux-mips64le "0.14.54" - esbuild-linux-ppc64le "0.14.54" - esbuild-linux-riscv64 "0.14.54" - esbuild-linux-s390x "0.14.54" - esbuild-netbsd-64 "0.14.54" - esbuild-openbsd-64 "0.14.54" - esbuild-sunos-64 "0.14.54" - esbuild-windows-32 "0.14.54" - 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" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -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== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -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" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -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== - -express@^4.18.1: - version "4.18.2" - resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -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== - -figures@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -follow-redirects@^1.0.0, follow-redirects@^1.15.11: - version "1.15.11" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -form-data@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -front-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" - integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== - dependencies: - js-yaml "^3.13.1" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2, 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, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2, functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.6: - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^13.0.6: - version "13.0.6" - resolved "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" - integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== - dependencies: - minimatch "^10.2.2" - minipass "^7.1.3" - path-scurry "^2.0.2" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jake@^10.8.5: - version "10.8.6" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.6.tgz#227a96786a1e035214e0ba84b482d6223d41ef04" - integrity sha512-G43Ub9IYEFfu72sua6rzooi8V8Gz2lkfk48rW20vEWCGizeaEPlKB1Kh8JIA84yQbiAEfqlPmSpGgCKKxH3rDA== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-diff@^30.0.2: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825" - integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== - dependencies: - "@jest/diff-sequences" "30.0.1" - "@jest/get-type" "30.1.0" - chalk "^4.1.2" - pretty-format "30.2.0" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.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" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -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== - -lie@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== - dependencies: - immediate "~3.0.5" - -lines-and-columns@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" - integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -localforage@^1.8.1: - version "1.10.0" - resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" - integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== - dependencies: - lie "3.1.1" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -lru-cache@^11.0.0: - version "11.2.6" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58" - integrity sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -magic-string@^0.30.21, magic-string@~0.30.8: - 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" - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@10.1.1: - version "10.1.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" - integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== - dependencies: - "@isaacs/brace-expansion" "^5.0.0" - -minimatch@^10.2.2: - version "10.2.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#361603ee323cfb83496fea2ae17cc44ea4e1f99f" - integrity sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== - dependencies: - brace-expansion "^5.0.2" - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624" - integrity sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.7" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz#9bce540b26998f278d34784a3dd25d96f5054d6d" - integrity sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^7.1.2, minipass@^7.1.3: - version "7.1.3" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" - integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -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== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-fetch@^2.6.7: - version "2.6.11" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" - integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== - dependencies: - whatwg-url "^5.0.0" - -node-machine-id@1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nx@22.5.2: - version "22.5.2" - resolved "https://registry.npmjs.org/nx/-/nx-22.5.2.tgz#277c1dd3c94fab69039425f182a66da9397f1ce9" - integrity sha512-s7dd2BZQOremv1AYhxwBY6NzJV9ETa6/OJ/zau/ulbLnHu8E5UAv+EjMC80m3qP3nob5OXnWiITKM9CcOHy6qw== - dependencies: - "@napi-rs/wasm-runtime" "0.2.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "3.0.2" - "@zkochan/js-yaml" "0.0.7" - axios "^1.12.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.4.5" - dotenv-expand "~11.0.6" - ejs "^3.1.7" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - front-matter "^4.0.2" - ignore "^7.0.5" - jest-diff "^30.0.2" - jsonc-parser "3.2.0" - lines-and-columns "2.0.3" - minimatch "10.1.1" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - ora "5.3.0" - picocolors "^1.1.0" - resolve.exports "2.0.3" - semver "^7.6.3" - string-width "^4.2.3" - tar-stream "~2.2.0" - tmp "~0.2.1" - tree-kill "^1.2.2" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - yaml "^2.6.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "22.5.2" - "@nx/nx-darwin-x64" "22.5.2" - "@nx/nx-freebsd-x64" "22.5.2" - "@nx/nx-linux-arm-gnueabihf" "22.5.2" - "@nx/nx-linux-arm64-gnu" "22.5.2" - "@nx/nx-linux-arm64-musl" "22.5.2" - "@nx/nx-linux-x64-gnu" "22.5.2" - "@nx/nx-linux-x64-musl" "22.5.2" - "@nx/nx-win32-arm64-msvc" "22.5.2" - "@nx/nx-win32-x64-msvc" "22.5.2" - -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -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" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -ora@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -oxfmt@^0.33.0: - version "0.33.0" - resolved "https://registry.npmjs.org/oxfmt/-/oxfmt-0.33.0.tgz#6712d25c10d78b2313bf92d4a38a3a34952f7f5f" - integrity sha512-ogxBXA9R4BFeo8F1HeMIIxHr5kGnQwKTYZ5k131AEGOq1zLxInNhvYSpyRQ+xIXVMYfCN7yZHKff/lb5lp4auQ== - dependencies: - tinypool "2.1.0" - optionalDependencies: - "@oxfmt/binding-android-arm-eabi" "0.33.0" - "@oxfmt/binding-android-arm64" "0.33.0" - "@oxfmt/binding-darwin-arm64" "0.33.0" - "@oxfmt/binding-darwin-x64" "0.33.0" - "@oxfmt/binding-freebsd-x64" "0.33.0" - "@oxfmt/binding-linux-arm-gnueabihf" "0.33.0" - "@oxfmt/binding-linux-arm-musleabihf" "0.33.0" - "@oxfmt/binding-linux-arm64-gnu" "0.33.0" - "@oxfmt/binding-linux-arm64-musl" "0.33.0" - "@oxfmt/binding-linux-ppc64-gnu" "0.33.0" - "@oxfmt/binding-linux-riscv64-gnu" "0.33.0" - "@oxfmt/binding-linux-riscv64-musl" "0.33.0" - "@oxfmt/binding-linux-s390x-gnu" "0.33.0" - "@oxfmt/binding-linux-x64-gnu" "0.33.0" - "@oxfmt/binding-linux-x64-musl" "0.33.0" - "@oxfmt/binding-openharmony-arm64" "0.33.0" - "@oxfmt/binding-win32-arm64-msvc" "0.33.0" - "@oxfmt/binding-win32-ia32-msvc" "0.33.0" - "@oxfmt/binding-win32-x64-msvc" "0.33.0" - -oxlint-tsgolint@0.16.0: - version "0.16.0" - resolved "https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-0.16.0.tgz#f17cb4cdf792daff212ece3b9a0ba5cf4a74f532" - integrity sha512-4RuJK2jP08XwqtUu+5yhCbxEauCm6tv2MFHKEMsjbosK2+vy5us82oI3VLuHwbNyZG7ekZA26U2LLHnGR4frIA== - optionalDependencies: - "@oxlint-tsgolint/darwin-arm64" "0.16.0" - "@oxlint-tsgolint/darwin-x64" "0.16.0" - "@oxlint-tsgolint/linux-arm64" "0.16.0" - "@oxlint-tsgolint/linux-x64" "0.16.0" - "@oxlint-tsgolint/win32-arm64" "0.16.0" - "@oxlint-tsgolint/win32-x64" "0.16.0" - -oxlint@1.53.0: - version "1.53.0" - resolved "https://registry.npmjs.org/oxlint/-/oxlint-1.53.0.tgz#74b2241c639501b68574550578869055a28f9ee6" - integrity sha512-TLW0PzGbpO1JxUnuy1pIqVPjQUGh4fNfxu5XJbdFIRFVaJ0UFzTjjk/hSFTMRxN6lZub53xL/IwJNEkrh7VtDg== - optionalDependencies: - "@oxlint/binding-android-arm-eabi" "1.53.0" - "@oxlint/binding-android-arm64" "1.53.0" - "@oxlint/binding-darwin-arm64" "1.53.0" - "@oxlint/binding-darwin-x64" "1.53.0" - "@oxlint/binding-freebsd-x64" "1.53.0" - "@oxlint/binding-linux-arm-gnueabihf" "1.53.0" - "@oxlint/binding-linux-arm-musleabihf" "1.53.0" - "@oxlint/binding-linux-arm64-gnu" "1.53.0" - "@oxlint/binding-linux-arm64-musl" "1.53.0" - "@oxlint/binding-linux-ppc64-gnu" "1.53.0" - "@oxlint/binding-linux-riscv64-gnu" "1.53.0" - "@oxlint/binding-linux-riscv64-musl" "1.53.0" - "@oxlint/binding-linux-s390x-gnu" "1.53.0" - "@oxlint/binding-linux-x64-gnu" "1.53.0" - "@oxlint/binding-linux-x64-musl" "1.53.0" - "@oxlint/binding-openharmony-arm64" "1.53.0" - "@oxlint/binding-win32-arm64-msvc" "1.53.0" - "@oxlint/binding-win32-ia32-msvc" "1.53.0" - "@oxlint/binding-win32-x64-msvc" "1.53.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== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" - integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -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== - -picocolors@^1.0.0, picocolors@^1.1.0, 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: - 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" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -postcss@^8.4.14, 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" - -premove@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz#813a87462dca591946e60ebd97c95092f0743aee" - integrity sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ== - -pretty-format@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" - integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== - dependencies: - "@jest/schemas" "30.0.5" - ansi-styles "^5.2.0" - react-is "^18.3.1" - -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -proxy-from-env@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz#a7487568adad577cfaaa7e88c49cab3ab3081aba" - integrity sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA== - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^18.3.1: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -regexp.prototype.flags@^1.4.3: - version "1.5.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve.exports@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" - integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== - -resolve@^1.10.0, resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rolldown@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz#9baf1407c4117570f19f75f697c4a0216065d12e" - integrity sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA== - dependencies: - "@oxc-project/types" "=0.129.0" - "@rolldown/pluginutils" "1.0.0" - optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.0" - "@rolldown/binding-darwin-arm64" "1.0.0" - "@rolldown/binding-darwin-x64" "1.0.0" - "@rolldown/binding-freebsd-x64" "1.0.0" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.0" - "@rolldown/binding-linux-arm64-gnu" "1.0.0" - "@rolldown/binding-linux-arm64-musl" "1.0.0" - "@rolldown/binding-linux-ppc64-gnu" "1.0.0" - "@rolldown/binding-linux-s390x-gnu" "1.0.0" - "@rolldown/binding-linux-x64-gnu" "1.0.0" - "@rolldown/binding-linux-x64-musl" "1.0.0" - "@rolldown/binding-openharmony-arm64" "1.0.0" - "@rolldown/binding-wasm32-wasi" "1.0.0" - "@rolldown/binding-win32-arm64-msvc" "1.0.0" - "@rolldown/binding-win32-x64-msvc" "1.0.0" - -rollup@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.2.0.tgz#a6f44074418e55217967c8eca622f9638d396388" - integrity sha512-0ZkFPyBNvx717KvC700NoxUD31aEEX675u6INJVAmBgKtQuCL8jmmJCj1b9B/qDSnILAvASVKa7UpGS+FLN6AQ== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^2.75.6: - version "2.79.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^4.43.0: - version "4.59.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f" - integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg== - dependencies: - "@types/estree" "1.0.8" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.59.0" - "@rollup/rollup-android-arm64" "4.59.0" - "@rollup/rollup-darwin-arm64" "4.59.0" - "@rollup/rollup-darwin-x64" "4.59.0" - "@rollup/rollup-freebsd-arm64" "4.59.0" - "@rollup/rollup-freebsd-x64" "4.59.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.59.0" - "@rollup/rollup-linux-arm-musleabihf" "4.59.0" - "@rollup/rollup-linux-arm64-gnu" "4.59.0" - "@rollup/rollup-linux-arm64-musl" "4.59.0" - "@rollup/rollup-linux-loong64-gnu" "4.59.0" - "@rollup/rollup-linux-loong64-musl" "4.59.0" - "@rollup/rollup-linux-ppc64-gnu" "4.59.0" - "@rollup/rollup-linux-ppc64-musl" "4.59.0" - "@rollup/rollup-linux-riscv64-gnu" "4.59.0" - "@rollup/rollup-linux-riscv64-musl" "4.59.0" - "@rollup/rollup-linux-s390x-gnu" "4.59.0" - "@rollup/rollup-linux-x64-gnu" "4.59.0" - "@rollup/rollup-linux-x64-musl" "4.59.0" - "@rollup/rollup-openbsd-x64" "4.59.0" - "@rollup/rollup-openharmony-arm64" "4.59.0" - "@rollup/rollup-win32-arm64-msvc" "4.59.0" - "@rollup/rollup-win32-ia32-msvc" "4.59.0" - "@rollup/rollup-win32-x64-gnu" "4.59.0" - "@rollup/rollup-win32-x64-msvc" "4.59.0" - fsevents "~2.3.2" - -safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -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== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.6.3: - version "7.7.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" - integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shell-quote@^1.6.1: - version "1.8.1" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - 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.2: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -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-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -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== - -statuses@2.0.1: - version "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== - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.padend@^3.0.0: - version "3.1.4" - resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" - integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-stream@~2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -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== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@^5.16.8: - version "5.17.5" - resolved "https://registry.npmjs.org/terser/-/terser-5.17.5.tgz#557141b662b5978ac3d6a2f3d6455a26267ddcd4" - integrity sha512-NqFkzBX34WExkCbk3K5urmNCpEWqMPZnwGI1pMHwqvJ/zDlXC75u3NI7BrzoR8/pryy8Abx2e1i8ChrWkhH1Hg== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -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.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.3.0, tslib@^2.4.0: - version "2.5.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" - integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript@~5.8.0: - version "5.8.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vite@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" - integrity sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA== - dependencies: - esbuild "^0.14.47" - postcss "^8.4.14" - resolve "^1.22.1" - rollup "^2.75.6" - 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" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -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== - -webpack@5.76.0: - version "5.76.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" - integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - 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" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - 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" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^2.6.0: - version "2.8.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" - integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== - -yargs-parser@21.1.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -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== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From cba358ee6a761530f7d6333e35d16ab88a7af273 Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 4 Jun 2026 14:20:10 -0700 Subject: [PATCH 639/640] fix(bundler-plugins): integration with monorepo Integrate the newly merged in `@sentry/bundler-plugins` project to the sentry-javascript monorepo. - Integration tests are updated to use the named submodule exports on the `@sentry/bundler-plugins` package, rather than the per-platform re-export shims. - Lint and naming conventions brought in line with project standards. - Bundler-plugins integration tests now run on CI. - Aligned on the same vitest version for bundler-plugins and the rest of the repo. It might be good to upgrade vitest, but not needed for this merge. The version has not been updated from its independent 5.x line, though it may be a good idea to bump it up to align with the 10.x line that the rest of the monorepo uses. --- .craft.yml | 3 + .github/dependency-review-config.yml | 10 + .github/workflows/build.yml | 31 + .oxfmtrc.json | 2 + .oxlintrc.json | 3 +- .../.gitignore | 3 + .../.oxlintrc.json | 8 + .../after-upload-deletion-promise.config.d.ts | 2 +- .../configs/after-upload-deletion.config.d.ts | 2 +- .../configs/application-key.config.d.ts | 2 +- .../basic-release-disabled.config.d.ts | 2 +- .../configs/basic-sourcemaps.config.d.ts | 2 +- .../fixtures/configs/basic.config.d.ts | 2 +- .../fixtures/configs/build-info.config.d.ts | 2 +- .../bundle-size-optimizations.config.d.ts | 2 +- .../component-annotation-disabled.config.d.ts | 2 +- .../component-annotation-next.config.d.ts | 2 +- .../configs/component-annotation.config.d.ts | 2 +- .../configs/debugid-disabled.config.d.ts | 2 +- .../debugids-already-injected.config.d.ts | 2 +- .../dont-mess-up-user-code.config.d.ts | 2 +- .../configs/errorhandling.config.d.ts | 2 +- .../configs/module-metadata.config.d.ts | 2 +- .../configs/multiple-entry-points.config.d.ts | 2 +- .../fixtures/configs/query-param.config.d.ts | 2 +- .../configs/release-disabled.config.d.ts | 2 +- .../release-value-with-quotes.config.d.ts | 2 +- .../fixtures/configs/telemetry.config.d.ts | 2 +- .../vite-mpa-extra-modules.config.d.ts | 2 +- .../after-upload-deletion-promise.config.js | 2 +- .../esbuild/after-upload-deletion.config.js | 2 +- .../esbuild/application-key.config.js | 2 +- .../fixtures/esbuild/basic-cjs.config.cjs | 8 +- .../esbuild/basic-release-disabled.config.js | 2 +- .../esbuild/basic-sourcemaps.config.js | 2 +- .../fixtures/esbuild/basic.config.js | 2 +- .../fixtures/esbuild/build-info.config.js | 2 +- .../fixtures/esbuild/build-info.test.ts | 2 +- .../bundle-size-optimizations.config.js | 2 +- .../esbuild/debugid-disabled.config.js | 2 +- .../esbuild/dont-mess-up-user-code.config.js | 2 +- .../fixtures/esbuild/errorhandling.config.js | 2 +- .../esbuild/esbuild-inject-compat.config.js | 2 +- .../esbuild/module-metadata.config.js | 2 +- .../esbuild/multiple-entry-points.config.js | 2 +- .../fixtures/esbuild/package.json | 9 +- .../esbuild/release-disabled.config.js | 2 +- .../release-value-with-quotes.config.js | 2 +- .../fixtures/esbuild/telemetry.config.js | 2 +- .../after-upload-deletion-promise.config.ts | 2 +- .../rolldown/after-upload-deletion.config.ts | 2 +- .../rolldown/application-key.config.ts | 2 +- .../fixtures/rolldown/basic-cjs.config.cjs | 4 +- .../rolldown/basic-release-disabled.config.ts | 2 +- .../rolldown/basic-sourcemaps.config.ts | 2 +- .../fixtures/rolldown/basic.config.ts | 2 +- .../fixtures/rolldown/build-info.config.ts | 2 +- .../fixtures/rolldown/build-info.test.ts | 2 +- .../bundle-size-optimizations.config.ts | 2 +- .../component-annotation-disabled.config.ts | 2 +- .../component-annotation-next.config.ts | 2 +- .../rolldown/component-annotation.config.ts | 2 +- .../rolldown/debugid-disabled.config.ts | 2 +- .../debugids-already-injected.config.ts | 2 +- .../rolldown/dont-mess-up-user-code.config.ts | 2 +- .../fixtures/rolldown/errorhandling.config.ts | 2 +- .../rolldown/module-metadata.config.ts | 2 +- .../rolldown/multiple-entry-points.config.ts | 2 +- .../fixtures/rolldown/package.json | 7 +- .../fixtures/rolldown/query-param.config.ts | 2 +- .../rolldown/release-disabled.config.ts | 2 +- .../release-value-with-quotes.config.ts | 2 +- .../fixtures/rolldown/telemetry.config.ts | 2 +- .../fixtures/rolldown/telemetry.test.ts | 2 +- .../fixtures/rolldown/utils.ts | 61 +- .../after-upload-deletion-promise.config.js | 2 +- .../rollup3/after-upload-deletion.config.js | 2 +- .../rollup3/application-key.config.js | 2 +- .../fixtures/rollup3/basic-cjs.config.cjs | 2 +- .../rollup3/basic-release-disabled.config.js | 2 +- .../rollup3/basic-sourcemaps.config.js | 2 +- .../fixtures/rollup3/basic.config.js | 2 +- .../fixtures/rollup3/build-info.config.js | 2 +- .../fixtures/rollup3/build-info.test.ts | 2 +- .../bundle-size-optimizations.config.js | 2 +- .../component-annotation-disabled.config.js | 2 +- .../component-annotation-next.config.js | 2 +- .../rollup3/component-annotation.config.js | 2 +- .../rollup3/debugid-disabled.config.js | 2 +- .../rollup3/dont-mess-up-user-code.config.js | 2 +- .../fixtures/rollup3/errorhandling.config.js | 2 +- .../rollup3/module-metadata.config.js | 2 +- .../rollup3/multiple-entry-points.config.js | 2 +- .../fixtures/rollup3/package.json | 9 +- .../fixtures/rollup3/query-param.config.js | 2 +- .../rollup3/release-disabled.config.js | 2 +- .../release-value-with-quotes.config.js | 2 +- .../fixtures/rollup3/telemetry.config.js | 2 +- .../after-upload-deletion-promise.config.js | 2 +- .../rollup4/after-upload-deletion.config.js | 2 +- .../rollup4/application-key.config.js | 2 +- .../fixtures/rollup4/basic-cjs.config.cjs | 2 +- .../rollup4/basic-release-disabled.config.js | 2 +- .../rollup4/basic-sourcemaps.config.js | 2 +- .../fixtures/rollup4/basic.config.js | 2 +- .../fixtures/rollup4/build-info.config.js | 2 +- .../fixtures/rollup4/build-info.test.ts | 2 +- .../bundle-size-optimizations.config.js | 2 +- .../component-annotation-disabled.config.js | 2 +- .../component-annotation-next.config.js | 2 +- .../rollup4/component-annotation.config.js | 2 +- .../rollup4/debugid-disabled.config.js | 2 +- .../debugids-already-injected.config.js | 2 +- .../rollup4/dont-mess-up-user-code.config.js | 2 +- .../fixtures/rollup4/errorhandling.config.js | 2 +- .../rollup4/module-metadata.config.js | 2 +- .../rollup4/multiple-entry-points.config.js | 2 +- .../fixtures/rollup4/package.json | 9 +- .../fixtures/rollup4/query-param.config.js | 2 +- .../rollup4/release-disabled.config.js | 2 +- .../release-value-with-quotes.config.js | 2 +- .../fixtures/rollup4/telemetry.config.js | 2 +- .../fixtures/vite-type-compat.test.ts | 31 +- .../after-upload-deletion-promise.config.ts | 2 +- .../vite4/after-upload-deletion.config.ts | 2 +- .../fixtures/vite4/application-key.config.ts | 2 +- .../fixtures/vite4/basic-cjs.config.cjs | 4 +- .../vite4/basic-release-disabled.config.ts | 2 +- .../fixtures/vite4/basic-sourcemaps.config.ts | 2 +- .../fixtures/vite4/basic.config.ts | 2 +- .../fixtures/vite4/build-info.config.ts | 2 +- .../fixtures/vite4/build-info.test.ts | 2 +- .../vite4/bundle-size-optimizations.config.ts | 2 +- .../component-annotation-disabled.config.ts | 2 +- .../vite4/component-annotation-next.config.ts | 2 +- .../vite4/component-annotation.config.ts | 2 +- .../fixtures/vite4/debugid-disabled.config.ts | 2 +- .../vite4/dont-mess-up-user-code.config.ts | 2 +- .../fixtures/vite4/errorhandling.config.ts | 2 +- .../fixtures/vite4/module-metadata.config.ts | 2 +- .../vite4/multiple-entry-points.config.ts | 2 +- .../fixtures/vite4/package.json | 10 +- .../fixtures/vite4/query-param.config.ts | 2 +- .../fixtures/vite4/release-disabled.config.ts | 2 +- .../vite4/release-value-with-quotes.config.ts | 2 +- .../fixtures/vite4/telemetry.config.ts | 2 +- .../vite4/vite-mpa-extra-modules.config.ts | 2 +- .../fixtures/vite6/package.json | 10 +- .../after-upload-deletion-promise.config.ts | 2 +- .../vite7/after-upload-deletion.config.ts | 2 +- .../fixtures/vite7/application-key.config.ts | 2 +- .../fixtures/vite7/basic-cjs.config.cjs | 4 +- .../vite7/basic-release-disabled.config.ts | 2 +- .../fixtures/vite7/basic-sourcemaps.config.ts | 2 +- .../fixtures/vite7/basic.config.ts | 2 +- .../fixtures/vite7/build-info.config.ts | 2 +- .../fixtures/vite7/build-info.test.ts | 2 +- .../vite7/bundle-size-optimizations.config.ts | 2 +- .../component-annotation-disabled.config.ts | 2 +- .../vite7/component-annotation-next.config.ts | 2 +- .../vite7/component-annotation.config.ts | 2 +- .../fixtures/vite7/debugid-disabled.config.ts | 2 +- .../vite7/debugids-already-injected.config.ts | 2 +- .../vite7/dont-mess-up-user-code.config.ts | 2 +- .../fixtures/vite7/errorhandling.config.ts | 2 +- .../fixtures/vite7/module-metadata.config.ts | 2 +- .../vite7/multiple-entry-points.config.ts | 2 +- .../fixtures/vite7/package.json | 10 +- .../fixtures/vite7/query-param.config.ts | 2 +- .../fixtures/vite7/release-disabled.config.ts | 2 +- .../vite7/release-value-with-quotes.config.ts | 2 +- .../fixtures/vite7/telemetry.config.ts | 2 +- .../vite7/vite-mpa-extra-modules.config.ts | 2 +- .../after-upload-deletion-promise.config.ts | 2 +- .../vite8/after-upload-deletion.config.ts | 2 +- .../fixtures/vite8/application-key.config.ts | 2 +- .../fixtures/vite8/basic-cjs.config.cjs | 4 +- .../vite8/basic-release-disabled.config.ts | 2 +- .../fixtures/vite8/basic-sourcemaps.config.ts | 2 +- .../fixtures/vite8/basic.config.ts | 2 +- .../fixtures/vite8/build-info.config.ts | 2 +- .../fixtures/vite8/build-info.test.ts | 2 +- .../vite8/bundle-size-optimizations.config.ts | 2 +- .../component-annotation-disabled.config.ts | 2 +- .../vite8/component-annotation-next.config.ts | 2 +- .../vite8/component-annotation.config.ts | 2 +- .../fixtures/vite8/debugid-disabled.config.ts | 2 +- .../vite8/debugids-already-injected.config.ts | 2 +- .../vite8/dont-mess-up-user-code.config.ts | 2 +- .../fixtures/vite8/errorhandling.config.ts | 2 +- .../fixtures/vite8/module-metadata.config.ts | 2 +- .../vite8/multiple-entry-points.config.ts | 2 +- .../fixtures/vite8/package.json | 10 +- .../fixtures/vite8/query-param.config.ts | 2 +- .../fixtures/vite8/release-disabled.config.ts | 2 +- .../vite8/release-value-with-quotes.config.ts | 2 +- .../fixtures/vite8/telemetry.config.ts | 2 +- .../vite8/vite-mpa-extra-modules.config.ts | 2 +- .../after-upload-deletion-promise.config.js | 2 +- .../webpack5/after-upload-deletion.config.js | 2 +- .../webpack5/application-key.config.js | 2 +- .../fixtures/webpack5/basic-cjs.config.cjs | 2 +- .../webpack5/basic-release-disabled.config.js | 2 +- .../webpack5/basic-sourcemaps.config.js | 2 +- .../fixtures/webpack5/basic.config.js | 2 +- .../fixtures/webpack5/build-info.config.js | 2 +- .../fixtures/webpack5/build-info.test.ts | 2 +- .../bundle-size-optimizations.config.js | 2 +- .../component-annotation-disabled.config.js | 2 +- .../component-annotation-next.config.js | 2 +- .../webpack5/component-annotation.config.js | 2 +- .../webpack5/debugid-disabled.config.js | 2 +- .../debugids-already-injected.config.js | 2 +- .../fixtures/webpack5/errorhandling.config.js | 2 +- .../webpack5/module-metadata.config.js | 2 +- .../webpack5/multiple-entry-points.config.js | 2 +- .../fixtures/webpack5/package.json | 9 +- .../webpack5/release-disabled.config.js | 2 +- .../release-value-with-quotes.config.js | 2 +- .../fixtures/webpack5/telemetry.config.js | 2 +- .../package.json | 11 +- .../setup.mjs | 47 +- .../tsconfig.json | 5 +- package.json | 8 +- packages/bundler-plugins/.gitignore | 3 + packages/bundler-plugins/package.json | 31 +- packages/bundler-plugins/rollup.config.mjs | 62 +- .../sentry-esbuild-debugid-injection-file.js | 12 +- .../src/babel-plugin/constants.ts | 228 +++--- .../src/babel-plugin/experimental.ts | 208 +++--- .../bundler-plugins/src/babel-plugin/index.ts | 256 +++---- .../src/core/build-plugin-manager.ts | 378 +++++----- .../src/core/debug-id-upload.ts | 75 +- packages/bundler-plugins/src/core/glob.ts | 4 +- packages/bundler-plugins/src/core/index.ts | 62 +- .../src/core/options-mapping.ts | 90 ++- .../src/core/sentry/telemetry.ts | 92 +-- .../src/core/sentry/transports.ts | 57 +- packages/bundler-plugins/src/core/types.ts | 4 +- packages/bundler-plugins/src/core/utils.ts | 229 +++--- packages/bundler-plugins/src/esbuild/index.ts | 92 ++- packages/bundler-plugins/src/rollup/index.ts | 77 +- packages/bundler-plugins/src/vite/index.ts | 20 +- .../webpack/component-annotation-transform.ts | 9 +- packages/bundler-plugins/src/webpack/index.ts | 17 +- .../src/webpack/webpack4and5.ts | 86 +-- .../bundler-plugins/src/webpack/webpack5.ts | 9 +- .../test/babel-plugin/experimental.test.ts | 428 ++++++------ .../test/babel-plugin/sentry-label.test.ts | 225 +++--- .../test/babel-plugin/test-plugin.test.ts | 528 +++++++------- .../test/core/build-plugin-manager.test.ts | 659 +++++++++--------- .../test/core/debug-id-upload.test.ts | 47 +- .../bundler-plugins/test/core/glob.test.ts | 158 ++--- .../bundler-plugins/test/core/index.test.ts | 102 +-- .../test/core/option-mappings.test.ts | 250 +++---- .../test/core/sentry/logger.test.ts | 104 ++- .../core/sentry/resolve-source-maps.test.ts | 128 ++-- .../test/core/sentry/telemetry.test.ts | 108 ++- .../bundler-plugins/test/core/utils.test.ts | 238 +++---- .../test/esbuild/public-api.test.ts | 22 +- .../test/rollup/public-api.test.ts | 139 ++-- .../test/vite/public-api.test.ts | 32 +- .../test/webpack/public-api.test.ts | 20 +- .../test/webpack/webpack5.test.ts | 20 +- packages/bundler-plugins/tsconfig.json | 5 +- yarn.lock | 520 ++++++++------ 266 files changed, 3230 insertions(+), 3328 deletions(-) create mode 100644 dev-packages/bundler-plugin-integration-tests/.oxlintrc.json diff --git a/.craft.yml b/.craft.yml index f2d6b03894d0..a0e006e275da 100644 --- a/.craft.yml +++ b/.craft.yml @@ -16,6 +16,9 @@ targets: - name: npm id: '@sentry/node-core' includeNames: /^sentry-node-core-\d.*\.tgz$/ + - name: npm + id: '@sentry/bundler-plugins' + includeNames: /^sentry-bundler-plugins-\d.*\.tgz$/ - name: npm id: '@sentry-internal/server-utils' includeNames: /^sentry-internal-server-utils-\d.*\.tgz$/ diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml index 8608d2381ace..f427f8274aeb 100644 --- a/.github/dependency-review-config.yml +++ b/.github/dependency-review-config.yml @@ -11,3 +11,13 @@ allow-ghsas: - GHSA-gp8f-8m3g-qvj9 # devalue vulnerability - this is just used by nuxt & astro as transitive dependency - GHSA-vj54-72f3-p5jv + # The bundler-plugin integration test fixtures deliberately pin multiple Vite + # major versions (4/6/7/8) to test the plugin against each. These are dev-only + # test fixtures that run `vite build` (never the dev server) and are never + # shipped, so the following Vite dev-server / transitive advisories do not apply: + # launch-editor command injection (via Vite 4 fixture) + - GHSA-c27g-q93r-2cwf + # Vite arbitrary file read via dev server WebSocket (Vite 6/7/8 fixtures) + - GHSA-p9ff-h696-f583 + # Vite `server.fs.deny` bypassed with queries (Vite 7/8 fixtures) + - GHSA-v2wj-q39q-566r diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd1ad4dee071..8a3099122f3e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -172,6 +172,9 @@ jobs: changed_bun_integration: ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, '@sentry-internal/bun-integration-tests') }} + changed_bundler_plugin_integration: + ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, + '@sentry-internal/bundler-plugin-integration-tests') }} changed_browser_integration: ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, '@sentry-internal/browser-integration-tests') }} @@ -904,6 +907,33 @@ jobs: working-directory: dev-packages/bun-integration-tests run: yarn test + job_bundler_plugin_integration_tests: + name: Bundler Plugin Integration Tests + needs: [job_get_metadata, job_build] + if: needs.job_build.outputs.changed_bundler_plugin_integration == 'true' || github.event_name != 'pull_request' + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }}) + uses: actions/checkout@v6 + with: + ref: ${{ env.HEAD_COMMIT }} + - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 + with: + version: 9.15.9 + - name: Set up Node + uses: actions/setup-node@v6 + with: + node-version-file: 'package.json' + - name: Restore caches + uses: ./.github/actions/restore-cache + with: + dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }} + + - name: Run integration tests + working-directory: dev-packages/bundler-plugin-integration-tests + run: yarn test + job_build_tarballs: name: Build tarballs # We want to run this if: @@ -1201,6 +1231,7 @@ jobs: job_node_core_integration_tests, job_cloudflare_integration_tests, job_bun_integration_tests, + job_bundler_plugin_integration_tests, job_browser_playwright_tests, job_browser_loader_tests, job_e2e_tests, diff --git a/.oxfmtrc.json b/.oxfmtrc.json index fb07734e0d6e..2b1062743db8 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -9,7 +9,9 @@ "ignorePatterns": [ "packages/browser/test/loader.js", "packages/replay-worker/examples/worker.min.js", + "packages/bundler-plugins/test/core/fixtures", "dev-packages/browser-integration-tests/fixtures", + "dev-packages/bundler-plugin-integration-tests/fixtures", "**/test.ts-snapshots/**", "/.nx/cache", "/.nx/workspace-data" diff --git a/.oxlintrc.json b/.oxlintrc.json index 83ff1674daf4..a40db51a379f 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -38,6 +38,7 @@ "test/manual/**", "types/**", "scripts/*.js", - "node_modules/**" + "node_modules/**", + "packages/bundler-plugins/test/core/fixtures/**" ] } diff --git a/dev-packages/bundler-plugin-integration-tests/.gitignore b/dev-packages/bundler-plugin-integration-tests/.gitignore index 608c2472c35a..0ec71ed6e79a 100644 --- a/dev-packages/bundler-plugin-integration-tests/.gitignore +++ b/dev-packages/bundler-plugin-integration-tests/.gitignore @@ -1 +1,4 @@ fixtures/*/out/** + +# Regenerated on every run by `pnpm install --force` in setup.mjs +fixtures/*/pnpm-lock.yaml diff --git a/dev-packages/bundler-plugin-integration-tests/.oxlintrc.json b/dev-packages/bundler-plugin-integration-tests/.oxlintrc.json new file mode 100644 index 000000000000..56eb82e78276 --- /dev/null +++ b/dev-packages/bundler-plugin-integration-tests/.oxlintrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/oxlint/configuration_schema.json", + "extends": ["../.oxlintrc.json"], + "env": { + "node": true + }, + "ignorePatterns": ["fixtures/**/src/**", "fixtures/**/out/**"] +} diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts index d8036dba640a..660a4f9ef18d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion-promise.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare function getSentryConfig(outDir: string): SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/after-upload-deletion.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/application-key.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-release-disabled.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic-sourcemaps.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/basic.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/build-info.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/bundle-size-optimizations.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-disabled.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation-next.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/component-annotation.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugid-disabled.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/debugids-already-injected.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/dont-mess-up-user-code.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts index 81563911c16d..3f0fa420f859 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/errorhandling.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare function getErrorHandlingConfig(port: string): SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/module-metadata.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/multiple-entry-points.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/query-param.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-disabled.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/release-value-with-quotes.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/telemetry.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts index f739482fd774..192b614bc29b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/configs/vite-mpa-extra-modules.config.d.ts @@ -1,2 +1,2 @@ -import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin"; +import type { SentryRollupPluginOptions } from "@sentry/bundler-plugins/rollup"; export declare const sentryConfig: SentryRollupPluginOptions; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js index f67f4059c5a0..a4a73199f57a 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion-promise.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; const outDir = "./out/after-upload-deletion-promise"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js index bb04c9d47ec4..3dfb233b5061 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/after-upload-deletion.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js index fc665c309ac8..cb45f1f75d58 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/application-key.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/application-key.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs index 60e49b8b6fcb..388b1df7aee9 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-cjs.config.cjs @@ -1,8 +1,12 @@ const esbuild = require("esbuild"); -const { sentryEsbuildPlugin } = require("@sentry/esbuild-plugin"); +const { sentryEsbuildPlugin } = require("@sentry/bundler-plugins/esbuild"); const { sentryConfig } = require("../configs/basic.config.cjs"); -esbuild.build({ +// no top-level await, so the build promise is intentionally floating. +// on failure, node will crash the same as if we did await it, which is +// the intended behavior, and the build will keep the event loop open +// while it runs. +void esbuild.build({ entryPoints: ["./src/basic.js"], bundle: true, outfile: "./out/basic-cjs/basic.js", diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js index bb76e29d2d30..29feddddabcf 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-release-disabled.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js index 1512be1245e1..ac762c808061 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic-sourcemaps.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js index 940d6ba08e51..fc1f40c87f2d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/basic.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/basic.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js index 9d09ebed4bea..b3b36f12acdd 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/build-info.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts index 9d8a3f3e4e5f..2b62c1e20628 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/build-info.test.ts @@ -11,7 +11,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "build-information-injection-test" }; - e.SENTRY_BUILD_INFO = { "deps": ["@sentry/esbuild-plugin", "esbuild"], "depsVersions": {}, "nodeVersion":"NODE_VERSION" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/bundler-plugins", "esbuild"], "depsVersions": {}, "nodeVersion":"NODE_VERSION" }; } catch (e2) { } })(); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js index 6c7d9f77be3b..5c1eb0957175 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/bundle-size-optimizations.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js index 9eff90db828e..4290671d11ec 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/debugid-disabled.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js index e0375d7d8887..556a108bd033 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/dont-mess-up-user-code.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js index dce81a1a6ba1..8fba7a9ccb7f 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/errorhandling.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; const FAKE_SENTRY_PORT = process.env.FAKE_SENTRY_PORT || "9876"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js index 56103b7dd5f3..152a6ff70b4c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/esbuild-inject-compat.config.js @@ -1,6 +1,6 @@ import * as esbuild from "esbuild"; import * as path from "path"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; await esbuild.build({ entryPoints: ["./src/inject-compat-index.ts"], diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js index bbdfe9de6f39..d7b89f95f0d8 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/module-metadata.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/module-metadata.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js index b80ead2cd8b8..feea71f341ea 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/multiple-entry-points.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json index b6f096660356..b88bd2c6ed33 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/package.json @@ -4,15 +4,12 @@ "private": true, "type": "module", "dependencies": { - "esbuild": "0.28.0", - "@sentry/esbuild-plugin": "5.3.0" + "@sentry/bundler-plugins": "5.3.0", + "esbuild": "0.28.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/esbuild-plugin": "file:../../../esbuild-plugin/sentry-esbuild-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js index abc57e5f188f..97cb727a6b99 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-disabled.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/release-disabled.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js index a84ea0d59731..89265d03c695 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/release-value-with-quotes.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js index dd1a93fd3ab9..367b33acaac7 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/esbuild/telemetry.config.js @@ -1,5 +1,5 @@ import * as esbuild from "esbuild"; -import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; +import { sentryEsbuildPlugin } from "@sentry/bundler-plugins/esbuild"; import { sentryConfig } from "../configs/telemetry.config.js"; await esbuild.build({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts index af3e2e277b5d..fc7d77508b2d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion-promise.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts index 5a95ed13a550..d204614054de 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/after-upload-deletion.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts index 2c64afa16ee1..3b55d0dcec9b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/application-key.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs index 18bef7859c56..bcd4faa1d23e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-cjs.config.cjs @@ -1,6 +1,6 @@ -const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { sentryRollupPlugin } = require("@sentry/bundler-plugins/rollup"); const { defineConfig } = require("rolldown"); -const { sentryConfig } = require("../configs/basic.config.js"); +const { sentryConfig } = require("../configs/basic.config.cjs"); module.exports = defineConfig({ input: "src/basic.js", diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts index dd8d811d7220..85f252aeffec 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts index 0109e8921c48..7191e6466a69 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic-sourcemaps.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts index b026f594af2d..58aaeeace153 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/basic.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts index b1bd49d7389f..468d4d4d11f3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts index 1ff311c422cb..1035e8759244 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/build-info.test.ts @@ -12,7 +12,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { e.SENTRY_RELEASE = { id: "build-information-injection-test" }; e.SENTRY_BUILD_INFO = { "deps": [ - "@sentry/rollup-plugin", + "@sentry/bundler-plugins", "react", "rolldown" ], diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts index bb5adc2e5a5d..d448d43b46e4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/bundle-size-optimizations.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts index 9d9258fd6749..17a0888ae52b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts index 09fc287474cb..7f87168c15dc 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation-next.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts index 6c7f330ac0bd..7286ec4f4587 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/component-annotation.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/component-annotation.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts index 1edff6ab4807..c1d4dfc8e5ab 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugid-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts index 01ad08fe3fdc..2158d8c510be 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/debugids-already-injected.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/debugids-already-injected.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts index 53878c72ed53..734d5ae4fb6d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/dont-mess-up-user-code.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts index 76682aad5dd8..77826d119317 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/errorhandling.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts index 489999911ea7..10409bead2d9 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/module-metadata.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts index 59cf33a0edd3..d75963e3ec8f 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/multiple-entry-points.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json index 43b95341e72d..a87b7d3ba5ea 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/package.json @@ -4,16 +4,13 @@ "private": true, "type": "module", "dependencies": { - "@sentry/rollup-plugin": "5.3.0", + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "rolldown": "1.0.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts index 81e15c2e8db1..324ae310be8e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/query-param.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts index 549c22981601..17ee804dbd07 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts index b7563a57d264..b43b982da0c5 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/release-value-with-quotes.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts index 15a329ca9431..15f0f72ec867 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.config.ts @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rolldown"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts index 1e5c06d820ee..fc8101ef5972 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/telemetry.test.ts @@ -18,7 +18,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles, runFileInNode }) => { //#endregion ", "sentry-telemetry.json": "[{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":true,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"ok","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], - [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"3"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], + [{"event_id":"UUID","sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"},"trace":{"environment":"production","release":"PLUGIN_VERSION","public_key":"UUID","trace_id":"UUID","org_id":"1","transaction":"Sentry Bundler Plugin execution","sampled":"true","sample_rand":"SAMPLE_RAND","sample_rate":"1"}},[[{"type":"transaction"},{"contexts":{"trace":{"span_id":"SHORT_UUID","trace_id":"UUID","data":{"sentry.origin":"manual","sentry.source":"custom","sentry.sample_rate":1},"origin":"manual"},"runtime":{"name":"node","version":"NODE_VERSION"}},"spans":[],"start_timestamp":START_TIMESTAMP,"timestamp":TIMESTAMP,"transaction":"Sentry Bundler Plugin execution","type":"transaction","transaction_info":{"source":"custom"},"platform":"PLATFORM","event_id":"UUID","environment":"production","release":"PLUGIN_VERSION","tags":{"upload-legacy-sourcemaps":false,"module-metadata":false,"inject-build-information":false,"set-commits":"auto","finalize-release":true,"deploy-options":false,"custom-error-handler":false,"sourcemaps-assets":false,"delete-after-upload":false,"sourcemaps-disabled":false,"react-annotate":false,"node":"NODE_VERSION","platform":"PLATFORM","meta-framework":"none","application-key-set":false,"ci":true,"project":"undefined","bundler":"rollup","bundler-major-version":"4"},"user":{},"sdk":{"name":"sentry.javascript.node","version":"10.56.0","integrations":[],"packages":[{"name":"npm:@sentry/node","version":"10.56.0"}]}}]]], [{"sent_at":"TIMESTAMP","sdk":{"name":"sentry.javascript.node","version":"10.56.0"}},[[{"type":"session"},{"sid":"UUID","init":false,"started":"TIMESTAMP","timestamp":"TIMESTAMP","status":"exited","errors":0,"duration":DURATION,"attrs":{"release":"PLUGIN_VERSION","environment":"production"}}]]], ", } diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts index 682cd6d8c212..9ff656adbfda 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rolldown/utils.ts @@ -30,37 +30,34 @@ export function test(url: string, callback: TestCallback) { // Detect CJS config files by test name suffix const configExt = testName.endsWith("-cjs") ? ".config.cjs" : ".config.ts"; - // Rolldown requires Node 20+ - if (NODE_MAJOR_VERSION < 20) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - vitestTest.skip(testName); - } else { - vitestTest(`rolldown > ${testName}`, (ctx) => - callback({ - outDir, - runBundler: (env) => - runBundler( - `pnpm rolldown --config ${testName}${configExt}`, - { - cwd, - env: { - ...process.env, - ...env, - }, - }, - outDir - ), - readOutputFiles: () => readAllFiles(outDir), - runFileInNode: (file) => { - const fullPath = join(outDir, file); - return execSync(`node ${fullPath}`, { + // Rolldown requires Node 20+. Register the test under its real name either way + // and skip it on older Node, so the coverage gap is visible (reported as a + // skipped `rolldown > ${testName}`) rather than silently dropped. + vitestTest.skipIf(NODE_MAJOR_VERSION < 20)(`rolldown > ${testName}`, (ctx) => + callback({ + outDir, + runBundler: (env) => + runBundler( + `pnpm rolldown --config ${testName}${configExt}`, + { cwd, - env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, - }).toString(); - }, - createTempDir: () => createTempDir(), - ctx, - }) - ); - } + env: { + ...process.env, + ...env, + }, + }, + outDir + ), + readOutputFiles: () => readAllFiles(outDir), + runFileInNode: (file) => { + const fullPath = join(outDir, file); + return execSync(`node ${fullPath}`, { + cwd, + env: { ...process.env, NO_COLOR: "1", FORCE_COLOR: "0" }, + }).toString(); + }, + createTempDir: () => createTempDir(), + ctx, + }) + ); } diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js index ce77934a69ae..ccdf75e7df88 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion-promise.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js index 36abdcfc1471..70e6d56989b4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/after-upload-deletion.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js index fed665781074..2a5f80ffd1fd 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/application-key.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs index 756fc35040f6..7da019445984 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-cjs.config.cjs @@ -1,4 +1,4 @@ -const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { sentryRollupPlugin } = require("@sentry/bundler-plugins/rollup"); const { defineConfig } = require("rollup"); const { sentryConfig } = require("../configs/basic.config.cjs"); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js index 8a7c8d9140e2..077cf55061f3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js index 4d7089214669..9da6d6c13bdb 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic-sourcemaps.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js index 8f36cde51af6..5bdc55282122 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/basic.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js index 984f33b277bf..c7b389a4be46 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts index d0af291ecb4e..e9b8e53ac2e3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/bundler-plugins","react","rollup"],"depsVersions":{"react":19,"rollup":3},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js index 6b37e5ccaff6..f1a0e8d61f74 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/bundle-size-optimizations.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js index aaa7dfecb469..457b3d540d41 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js index 3282ce2ba57b..de1cd4b6f83c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation-next.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js index dd3cb5349800..58befe4f35e3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/component-annotation.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js index 2ac8dc76bda2..557debb33d77 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/debugid-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js index 34a819c8ec9c..20c07ae03669 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/dont-mess-up-user-code.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js index c32f6b65508d..8b08902e7940 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/errorhandling.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js index 9c758ad99a59..b916797d11e4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/module-metadata.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js index 2f0a77afed50..50eb1d646277 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/multiple-entry-points.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json index aa29336e6cba..86a90268920f 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/package.json @@ -4,18 +4,15 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "rollup": "3.30.0", "@rollup/plugin-babel": "6.0.4", - "@rollup/plugin-node-resolve": "15.2.3", - "@sentry/rollup-plugin": "5.3.0" + "@rollup/plugin-node-resolve": "15.2.3" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js index 5c06653f0a2e..94711b1592be 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/query-param.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js index 99c580ccab33..defa3610e956 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js index 6c9d13e6ca37..92d51d0379e3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/release-value-with-quotes.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js index c5e38e83c3c9..5467793d80df 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup3/telemetry.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js index ce77934a69ae..ccdf75e7df88 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion-promise.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js index 36abdcfc1471..70e6d56989b4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/after-upload-deletion.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js index fed665781074..2a5f80ffd1fd 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/application-key.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs index 756fc35040f6..7da019445984 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-cjs.config.cjs @@ -1,4 +1,4 @@ -const { sentryRollupPlugin } = require("@sentry/rollup-plugin"); +const { sentryRollupPlugin } = require("@sentry/bundler-plugins/rollup"); const { defineConfig } = require("rollup"); const { sentryConfig } = require("../configs/basic.config.cjs"); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js index 8a7c8d9140e2..077cf55061f3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js index 4d7089214669..9da6d6c13bdb 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic-sourcemaps.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js index 8f36cde51af6..5bdc55282122 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/basic.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js index 984f33b277bf..c7b389a4be46 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts index 9e121ac7e6e2..3dca9559e716 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/build-info.test.ts @@ -6,7 +6,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { expect(readOutputFiles()).toMatchInlineSnapshot(` { "basic.js": "// eslint-disable-next-line no-console - !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/rollup-plugin","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}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:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@rollup/plugin-babel","@rollup/plugin-node-resolve","@sentry/bundler-plugins","react","rollup"],"depsVersions":{"react":19,"rollup":4},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}();console.log("hello world"); ", } `); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js index 6b37e5ccaff6..f1a0e8d61f74 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/bundle-size-optimizations.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js index aaa7dfecb469..457b3d540d41 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js index 3282ce2ba57b..de1cd4b6f83c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation-next.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js index dd3cb5349800..58befe4f35e3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/component-annotation.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/component-annotation.config.js"; import { babel } from "@rollup/plugin-babel"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js index 2ac8dc76bda2..557debb33d77 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugid-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js index 2726d0b13e28..e256c534bef5 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/debugids-already-injected.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/debugids-already-injected.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js index 34a819c8ec9c..20c07ae03669 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/dont-mess-up-user-code.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js index c32f6b65508d..8b08902e7940 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/errorhandling.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js index 9c758ad99a59..b916797d11e4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/module-metadata.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js index 2f0a77afed50..50eb1d646277 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/multiple-entry-points.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json index 5abcc7655ec8..0b58ab96ec63 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/package.json @@ -4,18 +4,15 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "rollup": "4.59.0", "@rollup/plugin-babel": "6.0.4", - "@rollup/plugin-node-resolve": "16.0.3", - "@sentry/rollup-plugin": "5.3.0" + "@rollup/plugin-node-resolve": "16.0.3" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js index 5c06653f0a2e..94711b1592be 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/query-param.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js index 99c580ccab33..defa3610e956 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js index 6c9d13e6ca37..92d51d0379e3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/release-value-with-quotes.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js index c5e38e83c3c9..5467793d80df 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/rollup4/telemetry.config.js @@ -1,4 +1,4 @@ -import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { sentryRollupPlugin } from "@sentry/bundler-plugins/rollup"; import { defineConfig } from "rollup"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts index c19fec65b91f..a14e1381e406 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite-type-compat.test.ts @@ -1,16 +1,21 @@ import { describe, expect, it } from "vitest"; import * as ts from "typescript"; -import { isAbsolute, join, normalize, relative } from "node:path"; +import { dirname, isAbsolute, join, normalize, relative } from "node:path"; import { fileURLToPath } from "node:url"; import { createRequire } from "node:module"; const fixturesDir = fileURLToPath(new URL(".", import.meta.url)); -const pluginSourceFile = fileURLToPath(new URL("../../vite-plugin/src/index.ts", import.meta.url)); +// Resolve against the built declaration files (the published type surface), +// mirroring how the plugin's types are consumed by end users. Built by the +// integration test setup step before this suite runs. +const pluginSourceFile = fileURLToPath( + new URL("../../../packages/bundler-plugins/dist/types/vite/index.d.ts", import.meta.url) +); const pluginViteTypesFixtureDir = join(fixturesDir, "vite6"); const configSource = ` import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; export default defineConfig({ plugins: [sentryVitePlugin()], @@ -61,13 +66,29 @@ function getDiagnosticsForFixture(fixtureName: string, expectedMajor: string): s : getSourceFile(path, languageVersion, onError, shouldCreateNewSourceFile); host.resolveModuleNames = (moduleNames, containingFile) => moduleNames.map((moduleName) => { - if (moduleName === "@sentry/vite-plugin") { + if (moduleName === "@sentry/bundler-plugins/vite") { return { resolvedFileName: pluginSourceFile, - extension: ts.Extension.Ts, + extension: ts.Extension.Dts, }; } + // The consolidated plugin's declaration files use relative directory + // imports (e.g. `../rollup`, `../core`). Node16 module resolution does not + // support directory-index resolution for relative specifiers, so resolve + // those against the built type tree ourselves with an `/index.d.ts` fallback. + if (moduleName.startsWith(".")) { + const base = join(dirname(containingFile), moduleName); + const candidates = [base, `${base}.d.ts`, join(base, "index.d.ts")]; + const resolvedFileName = candidates.find(candidate => ts.sys.fileExists(candidate)); + if (resolvedFileName) { + return { + resolvedFileName, + extension: ts.Extension.Dts, + }; + } + } + const resolutionContainingFile = moduleName === "vite" && containingFile === pluginSourceFile ? join(pluginViteTypesFixtureDir, "sentry-vite-plugin-type-compat.mts") diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts index 92b5107787d0..c99b4ce44dab 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion-promise.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts index 674c7e70e2c3..6cf383546533 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/after-upload-deletion.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts index ee524c7fef5b..e57d70e7008b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/application-key.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs index c3b54af7be5f..cd61918c8b68 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-cjs.config.cjs @@ -1,6 +1,6 @@ -const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { sentryVitePlugin } = require("@sentry/bundler-plugins/vite"); const { defineConfig } = require("vite"); -const { sentryConfig } = require("../configs/basic.config.js"); +const { sentryConfig } = require("../configs/basic.config.cjs"); module.exports = defineConfig({ build: { diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts index 8624211863a5..81467f1d1722 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts index 312b7da14769..cb5be073b9db 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic-sourcemaps.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts index ec202ecbc6af..5347b599b3e6 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/basic.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts index 3f4081fdd72a..6217e404d978 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts index e27bcf881e0b..48616bec5281 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/build-info.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "build-information-injection-test" }; - e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 4 }, "nodeVersion":"NODE_VERSION" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/bundler-plugins", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 4 }, "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts index 4feec9f2c5d3..62595fc43311 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/bundle-size-optimizations.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts index ae087808a547..75a8f88dc484 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts index fee75871b79a..67de4e598197 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation-next.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts index f51fcde8508e..a338b95ef50c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/component-annotation.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts index c70b040745ee..067eb176d349 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/debugid-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts index 20057f5ac438..18ffd2ba79fa 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/dont-mess-up-user-code.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts index 974a4857aeb4..192f7c5db647 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/errorhandling.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts index b3612f9893e3..59433418bb9d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/module-metadata.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts index ab3009969c83..da0b49d90362 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/multiple-entry-points.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json index cd6089fcf975..b82a2237478f 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/package.json @@ -4,18 +4,14 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "vite": "4.5.14", - "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.3.0" + "@vitejs/plugin-react": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts index 7952c040f423..185106f97cff 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/query-param.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts index cb5c4c06ab55..ab823129454d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts index 251613957c4c..8a50f7f5416e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/release-value-with-quotes.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; export default defineConfig({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts index dee23957840e..e55014fa5da8 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/telemetry.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts index d21a38148348..087194faa653 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite4/vite-mpa-extra-modules.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json index adf5500ed0f5..ad30c1523139 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite6/package.json @@ -4,16 +4,12 @@ "private": true, "type": "module", "dependencies": { - "vite": "6.4.1", - "@sentry/vite-plugin": "5.3.0" + "@sentry/bundler-plugins": "5.3.0", + "vite": "6.4.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts index 92b5107787d0..c99b4ce44dab 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion-promise.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts index 674c7e70e2c3..6cf383546533 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/after-upload-deletion.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts index ee524c7fef5b..e57d70e7008b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/application-key.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs index c3b54af7be5f..cd61918c8b68 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-cjs.config.cjs @@ -1,6 +1,6 @@ -const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { sentryVitePlugin } = require("@sentry/bundler-plugins/vite"); const { defineConfig } = require("vite"); -const { sentryConfig } = require("../configs/basic.config.js"); +const { sentryConfig } = require("../configs/basic.config.cjs"); module.exports = defineConfig({ build: { diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts index 8624211863a5..81467f1d1722 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts index 312b7da14769..cb5be073b9db 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic-sourcemaps.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts index ec202ecbc6af..5347b599b3e6 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/basic.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts index 3f4081fdd72a..6217e404d978 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts index c998d7ae550d..17bc8f672cb1 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/build-info.test.ts @@ -9,7 +9,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { try { var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; e.SENTRY_RELEASE = { id: "build-information-injection-test" }; - e.SENTRY_BUILD_INFO = { "deps": ["@sentry/vite-plugin", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 7 }, "nodeVersion":"NODE_VERSION" }; + e.SENTRY_BUILD_INFO = { "deps": ["@sentry/bundler-plugins", "@vitejs/plugin-react", "react", "vite"], "depsVersions": { "react": 19, "vite": 7 }, "nodeVersion":"NODE_VERSION" }; var n = new e.Error().stack; n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "00000000-0000-0000-0000-000000000000", e._sentryDebugIdIdentifier = "sentry-dbid-00000000-0000-0000-0000-000000000000"); } catch (e2) { diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts index 4feec9f2c5d3..62595fc43311 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/bundle-size-optimizations.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts index ae087808a547..75a8f88dc484 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts index fee75871b79a..67de4e598197 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation-next.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts index f51fcde8508e..a338b95ef50c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/component-annotation.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts index c70b040745ee..067eb176d349 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugid-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts index f3dfcb913533..19c7914aa2b0 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/debugids-already-injected.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/debugids-already-injected.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts index 20057f5ac438..18ffd2ba79fa 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/dont-mess-up-user-code.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts index 974a4857aeb4..192f7c5db647 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/errorhandling.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts index b3612f9893e3..59433418bb9d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/module-metadata.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts index ab3009969c83..da0b49d90362 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/multiple-entry-points.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json index 14b5d21ea82b..9fbd6d2b3763 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/package.json @@ -4,18 +4,14 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "vite": "7.3.1", - "@vitejs/plugin-react": "5.2.0", - "@sentry/vite-plugin": "5.3.0" + "@vitejs/plugin-react": "5.2.0" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts index 7952c040f423..185106f97cff 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/query-param.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts index cb5c4c06ab55..ab823129454d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts index 251613957c4c..8a50f7f5416e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/release-value-with-quotes.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; export default defineConfig({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts index dee23957840e..e55014fa5da8 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/telemetry.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts index d21a38148348..087194faa653 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite7/vite-mpa-extra-modules.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts index 92b5107787d0..c99b4ce44dab 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion-promise.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts index 674c7e70e2c3..6cf383546533 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/after-upload-deletion.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts index ee524c7fef5b..e57d70e7008b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/application-key.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/application-key.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs index c3b54af7be5f..cd61918c8b68 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-cjs.config.cjs @@ -1,6 +1,6 @@ -const { sentryVitePlugin } = require("@sentry/vite-plugin"); +const { sentryVitePlugin } = require("@sentry/bundler-plugins/vite"); const { defineConfig } = require("vite"); -const { sentryConfig } = require("../configs/basic.config.js"); +const { sentryConfig } = require("../configs/basic.config.cjs"); module.exports = defineConfig({ build: { diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts index 8624211863a5..81467f1d1722 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts index 312b7da14769..cb5be073b9db 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic-sourcemaps.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts index ec202ecbc6af..5347b599b3e6 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/basic.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/basic.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts index 3f4081fdd72a..6217e404d978 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/build-info.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts index c8f713c0690a..7966268035db 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/build-info.test.ts @@ -12,7 +12,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { e.SENTRY_RELEASE = { id: "build-information-injection-test" }; e.SENTRY_BUILD_INFO = { "deps": [ - "@sentry/vite-plugin", + "@sentry/bundler-plugins", "@vitejs/plugin-react", "react", "vite" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts index 4feec9f2c5d3..62595fc43311 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/bundle-size-optimizations.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts index ae087808a547..75a8f88dc484 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts index fee75871b79a..67de4e598197 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation-next.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts index f51fcde8508e..a338b95ef50c 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/component-annotation.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/component-annotation.config.js"; import react from "@vitejs/plugin-react"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts index c70b040745ee..067eb176d349 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugid-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts index f3dfcb913533..19c7914aa2b0 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/debugids-already-injected.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/debugids-already-injected.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts index 20057f5ac438..18ffd2ba79fa 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/dont-mess-up-user-code.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/dont-mess-up-user-code.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts index 974a4857aeb4..192f7c5db647 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/errorhandling.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts index b3612f9893e3..59433418bb9d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/module-metadata.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/module-metadata.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts index ab3009969c83..da0b49d90362 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/multiple-entry-points.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json index 0ee48e392013..6015ab1697f1 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/package.json @@ -4,18 +4,14 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "react": "19.2.4", "vite": "8.0.1", - "@vitejs/plugin-react": "6.0.1", - "@sentry/vite-plugin": "5.3.0" + "@vitejs/plugin-react": "6.0.1" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/rollup-plugin": "file:../../../rollup-plugin/sentry-rollup-plugin-5.3.0.tgz", - "@sentry/vite-plugin": "file:../../../vite-plugin/sentry-vite-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts index 7952c040f423..185106f97cff 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/query-param.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/query-param.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts index cb5c4c06ab55..ab823129454d 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-disabled.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/release-disabled.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts index 251613957c4c..8a50f7f5416e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/release-value-with-quotes.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; export default defineConfig({ diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts index dee23957840e..e55014fa5da8 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/telemetry.config.ts @@ -1,4 +1,4 @@ -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { defineConfig } from "vite"; import { sentryConfig } from "../configs/telemetry.config.js"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts index d21a38148348..087194faa653 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/vite8/vite-mpa-extra-modules.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vite"; -import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { sentryVitePlugin } from "@sentry/bundler-plugins/vite"; import { sentryConfig } from "../configs/vite-mpa-extra-modules.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js index 4d2cef6624ac..603265043084 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion-promise.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { getSentryConfig } from "../configs/after-upload-deletion-promise.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js index 40d37d6256f6..6b13fdc78dab 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/after-upload-deletion.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/after-upload-deletion.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js index fdfa64ff78dd..e613744c9d9a 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/application-key.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/application-key.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs index 07bf24061485..0f353dc75fe7 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-cjs.config.cjs @@ -1,4 +1,4 @@ -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); +const { sentryWebpackPlugin } = require("@sentry/bundler-plugins/webpack"); const { sentryConfig } = require("../configs/basic.config.cjs"); const { resolve } = require("node:path"); diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js index 45653852ad44..11a5ee8a53ae 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/basic-release-disabled.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js index 4ed0d5e71279..63a0a50ded5e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic-sourcemaps.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/basic-sourcemaps.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js index 7c469c43cbcb..c0a6913548cb 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/basic.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/basic.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js index 5c13b5d02ab4..84e1a0100064 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/build-info.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts index ae3adc5562e8..4742786c9b76 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/build-info.test.ts @@ -5,7 +5,7 @@ test(import.meta.url, ({ runBundler, readOutputFiles }) => { runBundler(); expect(readOutputFiles()).toMatchInlineSnapshot(` { - "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/webpack-plugin","babel-loader","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); + "basic.js": "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"build-information-injection-test"};e.SENTRY_BUILD_INFO={"deps":["@babel/preset-react","@sentry/bundler-plugins","babel-loader","webpack","webpack-cli"],"depsVersions":{"webpack":5},"nodeVersion":"NODE_VERSION"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="00000000-0000-0000-0000-000000000000",e._sentryDebugIdIdentifier="sentry-dbid-00000000-0000-0000-0000-000000000000");}catch(e){}}(); /******/ (() => { // webpackBootstrap /******/ "use strict"; // eslint-disable-next-line no-console diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js index f8e9fda6d050..c0f65b4bef2b 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/bundle-size-optimizations.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/bundle-size-optimizations.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js index 67568f40c68a..2ec70eb34dc3 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/component-annotation-disabled.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js index bdbbe93abc5b..8f971939c428 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation-next.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/component-annotation-next.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js index b2ea18bb3f20..8cf60d7816d1 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/component-annotation.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/component-annotation.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js index d60f57473897..dd297e2e14de 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugid-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/debugid-disabled.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js index abb4f264bc7d..ed9b816d0b92 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/debugids-already-injected.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/debugids-already-injected.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js index c3b47736ddfb..867fbf77a76f 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/errorhandling.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { getErrorHandlingConfig } from "../configs/errorhandling.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js index aabbcd6f2cfe..c9effe710b11 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/module-metadata.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/module-metadata.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js index f25bc02dd5a0..d30a7c85a6ef 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/multiple-entry-points.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/multiple-entry-points.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json index 20bf49a2fe25..bc65da4163de 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/package.json @@ -4,18 +4,15 @@ "private": true, "type": "module", "dependencies": { + "@sentry/bundler-plugins": "5.3.0", "babel-loader": "^8.0.0", "webpack": "5.105.4", "webpack-cli": "6.0.1", - "@babel/preset-react": "7.23.3", - "@sentry/webpack-plugin": "5.3.0" + "@babel/preset-react": "7.23.3" }, "pnpm": { "overrides": { - "@sentry/bundler-plugins": "file:../../../bundler-plugins/sentry-bundler-plugins-5.3.0.tgz", - "@sentry/bundler-plugin-core": "file:../../../bundler-plugin-core/sentry-bundler-plugin-core-5.3.0.tgz", - "@sentry/webpack-plugin": "file:../../../webpack-plugin/sentry-webpack-plugin-5.3.0.tgz", - "@sentry/babel-plugin-component-annotate": "file:../../../babel-plugin-component-annotate/sentry-babel-plugin-component-annotate-5.3.0.tgz" + "@sentry/bundler-plugins": "file:../../../../packages/bundler-plugins/sentry-bundler-plugins.tgz" }, "patchedDependencies": { "@sentry/cli": "../patches/@sentry__cli.patch" diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js index 2022c6352e06..831ca2fc78f7 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-disabled.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/release-disabled.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js index 1b5374b5591e..322d3820639e 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/release-value-with-quotes.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/release-value-with-quotes.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js index 09da2ef50780..fa8488285de4 100644 --- a/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js +++ b/dev-packages/bundler-plugin-integration-tests/fixtures/webpack5/telemetry.config.js @@ -1,4 +1,4 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; +import { sentryWebpackPlugin } from "@sentry/bundler-plugins/webpack"; import { sentryConfig } from "../configs/telemetry.config.js"; import { resolve } from "node:path"; diff --git a/dev-packages/bundler-plugin-integration-tests/package.json b/dev-packages/bundler-plugin-integration-tests/package.json index b7afcc9dea3f..ba10bfb4358a 100644 --- a/dev-packages/bundler-plugin-integration-tests/package.json +++ b/dev-packages/bundler-plugin-integration-tests/package.json @@ -1,6 +1,6 @@ { - "name": "@sentry-internal/integration-tests-next", - "version": "5.3.0", + "name": "@sentry-internal/bundler-plugin-integration-tests", + "version": "10.56.0", "license": "MIT", "private": true, "scripts": { @@ -12,14 +12,11 @@ "clean:deps": "premove node_modules" }, "dependencies": { - "@sentry/esbuild-plugin": "5.3.0", - "@sentry/rollup-plugin": "5.3.0", - "@sentry/vite-plugin": "5.3.0", - "@sentry/webpack-plugin": "5.3.0" + "@sentry/bundler-plugins": "5.3.0" }, "devDependencies": { "premove": "^4.0.0", - "vitest": "^4.0.0" + "vitest": "^3.2.4" }, "volta": { "extends": "../../package.json" diff --git a/dev-packages/bundler-plugin-integration-tests/setup.mjs b/dev-packages/bundler-plugin-integration-tests/setup.mjs index f20943016bc2..260f7b59ac43 100644 --- a/dev-packages/bundler-plugin-integration-tests/setup.mjs +++ b/dev-packages/bundler-plugin-integration-tests/setup.mjs @@ -1,23 +1,42 @@ /* eslint-disable no-console */ -import { promises as fs } from "fs"; -import { join } from "path"; -import { fileURLToPath } from "url"; -import { execSync } from "child_process"; +import { promises as fs } from 'fs'; +import { join } from 'path'; +import { fileURLToPath } from 'url'; +import { execSync } from 'child_process'; -console.log("Installing all dependencies for fixtures..."); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); -const __dirname = fileURLToPath(new URL(".", import.meta.url)); -const fixturesDir = join(__dirname, "fixtures"); +// Build the @sentry/bundler-plugins package and produce the tarball that the +// fixtures install via pnpm `file:` overrides. +const bundlerPluginsDir = join(__dirname, '..', '..', 'packages', 'bundler-plugins'); +console.log('Building @sentry/bundler-plugins...'); +execSync('yarn build', { + cwd: bundlerPluginsDir, + stdio: 'inherit', +}); + +// `npm pack` (run as part of the build) names the tarball after the current +// package version (e.g. `sentry-bundler-plugins-5.3.0.tgz`). The fixtures +// reference it via a version-independent `file:` override, so copy it to a +// stable name. This avoids having to update every fixture override whenever the +// package version changes. +const { version } = JSON.parse(await fs.readFile(join(bundlerPluginsDir, 'package.json'), { encoding: 'utf-8' })); +await fs.copyFile( + join(bundlerPluginsDir, `sentry-bundler-plugins-${version}.tgz`), + join(bundlerPluginsDir, 'sentry-bundler-plugins.tgz'), +); + +console.log('Installing all dependencies for fixtures...'); + +const fixturesDir = join(__dirname, 'fixtures'); const entries = await fs.readdir(fixturesDir, { withFileTypes: true }); // Get all directories -const directories = entries - .filter((entry) => entry.isDirectory()) - .map((entry) => join(fixturesDir, entry.name)); +const directories = entries.filter(entry => entry.isDirectory()).map(entry => join(fixturesDir, entry.name)); for (const dir of directories) { try { - const pkgString = await fs.readFile(join(dir, "package.json"), { encoding: "utf-8" }); + const pkgString = await fs.readFile(join(dir, 'package.json'), { encoding: 'utf-8' }); const packageJson = JSON.parse(pkgString); // If there are no dependencies, skip installation if (!packageJson.dependencies) { @@ -27,10 +46,10 @@ for (const dir of directories) { continue; } - execSync("pnpm install --force", { + execSync('pnpm install --force', { cwd: dir, - stdio: "inherit", + stdio: 'inherit', }); } -console.log("All fixture dependencies installed successfully!"); +console.log('All fixture dependencies installed successfully!'); diff --git a/dev-packages/bundler-plugin-integration-tests/tsconfig.json b/dev-packages/bundler-plugin-integration-tests/tsconfig.json index f90739dd481a..901692e1d120 100644 --- a/dev-packages/bundler-plugin-integration-tests/tsconfig.json +++ b/dev-packages/bundler-plugin-integration-tests/tsconfig.json @@ -8,7 +8,10 @@ "exclude": ["./fixtures/vite*/**/*"], "compilerOptions": { "types": ["node"], - "module": "es2020", + // `bundler` resolution lets tsc resolve the `@sentry/bundler-plugins/*` + // subpath exports (their `types` conditions) that the fixtures import from. + "module": "esnext", + "moduleResolution": "bundler", "lib": ["ES2021"] } } diff --git a/package.json b/package.json index 3fa9d1a8e074..4615671a1708 100644 --- a/package.json +++ b/package.json @@ -34,11 +34,11 @@ "dedupe-deps:check": "yarn-deduplicate yarn.lock --list --fail", "dedupe-deps:fix": "yarn-deduplicate yarn.lock", "postpublish": "nx run-many -t postpublish --parallel=1", - "test": "nx run-many -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test": "nx run-many -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,bundler-plugin-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:scripts": "vitest run scripts/*.test.ts", - "test:unit": "nx run-many -t test:unit --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test:unit": "nx run-many -t test:unit --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,bundler-plugin-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:update-snapshots": "nx run-many -t test:update-snapshots", - "test:pr": "nx affected -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test:pr": "nx affected -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,bundler-plugin-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:pr:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts --affected", "test:pr:node": "UNIT_TEST_ENV=node ts-node ./scripts/ci-unit-tests.ts --affected", "test:ci:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts", @@ -59,6 +59,7 @@ "packages/browser", "packages/browser-utils", "packages/bun", + "packages/bundler-plugins", "packages/core", "packages/cloudflare", "packages/deno", @@ -100,6 +101,7 @@ "packages/vue", "packages/wasm", "dev-packages/browser-integration-tests", + "dev-packages/bundler-plugin-integration-tests", "dev-packages/e2e-tests", "dev-packages/node-integration-tests", "dev-packages/bun-integration-tests", diff --git a/packages/bundler-plugins/.gitignore b/packages/bundler-plugins/.gitignore index 1521c8b7652b..2f291fa0da30 100644 --- a/packages/bundler-plugins/.gitignore +++ b/packages/bundler-plugins/.gitignore @@ -1 +1,4 @@ dist + +# Generated by the `prebuild` script from the package version +src/core/version.ts diff --git a/packages/bundler-plugins/package.json b/packages/bundler-plugins/package.json index 44ad4d31e1bd..6e01b1e2f236 100644 --- a/packages/bundler-plugins/package.json +++ b/packages/bundler-plugins/package.json @@ -64,13 +64,15 @@ }, "scripts": { "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/core/version.ts", - "build": "premove ./dist && run-p build:rollup build:types && run-s build:npm", + "build": "yarn prebuild && premove ./dist && run-p build:rollup build:types && run-s build:tarball", + "build:dev": "yarn prebuild && run-p build:rollup build:types", + "build:transpile": "yarn prebuild && yarn build:rollup", "build:watch": "run-p build:rollup:watch build:types:watch", "build:rollup": "rolldown --config rollup.config.mjs", "build:rollup:watch": "rolldown --config rollup.config.mjs --watch --no-watch.clearScreen", "build:types": "tsc --project types.tsconfig.json", "build:types:watch": "tsc --project types.tsconfig.json --watch --preserveWatchOutput", - "build:npm": "npm pack", + "build:tarball": "npm pack", "check:types": "run-p check:types:src check:types:test", "check:types:src": "tsc --project ./tsconfig.json --noEmit", "check:types:test": "tsc --project ./test/tsconfig.json --noEmit", @@ -105,14 +107,13 @@ "@babel/preset-react": "^7.23.3", "@sentry/core": "10.56.0", "@sentry/types": "10.56.0", - "@sentry-internal/dev-utils": "5.3.0", "@types/babel__core": "^7.20.5", "@types/node": "^18.6.3", "@types/webpack": "npm:@types/webpack@^4", "premove": "^4.0.0", "rolldown": "^1.0.0", - "vitest": "^4.0.0", - "webpack": "5.76.0" + "vitest": "^3.2.4", + "webpack": "^5.95.0" }, "volta": { "extends": "../../package.json" @@ -123,5 +124,23 @@ "sideEffects": [ "./sentry-release-injection-file.js", "./sentry-esbuild-debugid-injection-file.js" - ] + ], + "nx": { + "targets": { + "build:transpile": { + "outputs": [ + "{projectRoot}/dist" + ] + }, + "build:types": { + "dependsOn": [ + "^build:types", + "build:transpile" + ], + "outputs": [ + "{projectRoot}/dist/types" + ] + } + } + } } diff --git a/packages/bundler-plugins/rollup.config.mjs b/packages/bundler-plugins/rollup.config.mjs index 8068953eae84..984d838ba0cf 100644 --- a/packages/bundler-plugins/rollup.config.mjs +++ b/packages/bundler-plugins/rollup.config.mjs @@ -1,60 +1,60 @@ -import packageJson from "./package.json" with { type: "json" }; -import modulePackage from "module"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; +import packageJson from './package.json' with { type: 'json' }; +import modulePackage from 'module'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const srcDir = path.resolve(__dirname, "src"); +const srcDir = path.resolve(__dirname, 'src'); const external = [ ...Object.keys(packageJson.dependencies || {}), ...modulePackage.builtinModules, - "webpack", - "rollup", - "vite", + 'webpack', + 'rollup', + 'vite', ]; export default { - platform: "node", + platform: 'node', input: [ - "src/babel-plugin/index.ts", - "src/core/index.ts", - "src/rollup/index.ts", - "src/vite/index.ts", - "src/esbuild/index.ts", - "src/webpack/index.ts", - "src/webpack/webpack5.ts", - "src/webpack/component-annotation-transform.ts", + 'src/babel-plugin/index.ts', + 'src/core/index.ts', + 'src/rollup/index.ts', + 'src/vite/index.ts', + 'src/esbuild/index.ts', + 'src/webpack/index.ts', + 'src/webpack/webpack5.ts', + 'src/webpack/component-annotation-transform.ts', ], external, output: [ { - dir: "./dist/esm", - format: "esm", - exports: "named", + dir: './dist/esm', + format: 'esm', + exports: 'named', sourcemap: true, - entryFileNames: (chunkInfo) => { + entryFileNames: chunkInfo => { if (chunkInfo.facadeModuleId) { const rel = path.relative(srcDir, chunkInfo.facadeModuleId); - return rel.replace(/\.ts$/, ".mjs"); + return rel.replace(/\.ts$/, '.mjs'); } - return "[name].mjs"; + return '[name].mjs'; }, - chunkFileNames: "_chunks/[name]-[hash].mjs", + chunkFileNames: '_chunks/[name]-[hash].mjs', }, { - dir: "./dist/cjs", - format: "cjs", - exports: "named", + dir: './dist/cjs', + format: 'cjs', + exports: 'named', sourcemap: true, - entryFileNames: (chunkInfo) => { + entryFileNames: chunkInfo => { if (chunkInfo.facadeModuleId) { const rel = path.relative(srcDir, chunkInfo.facadeModuleId); - return rel.replace(/\.ts$/, ".js"); + return rel.replace(/\.ts$/, '.js'); } - return "[name].js"; + return '[name].js'; }, - chunkFileNames: "_chunks/[name]-[hash].js", + chunkFileNames: '_chunks/[name]-[hash].js', }, ], }; diff --git a/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js b/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js index 06ad5071d0cc..23fdd648eb75 100644 --- a/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js +++ b/packages/bundler-plugins/sentry-esbuild-debugid-injection-file.js @@ -1,12 +1,12 @@ try { let globalObject = - "undefined" != typeof window + 'undefined' != typeof window ? window - : "undefined" != typeof global + : 'undefined' != typeof global ? global - : "undefined" != typeof globalThis + : 'undefined' != typeof globalThis ? global - : "undefined" != typeof self + : 'undefined' != typeof self ? self : {}; @@ -14,7 +14,7 @@ try { if (stack) { globalObject._sentryDebugIds = globalObject._sentryDebugIds || {}; - globalObject._sentryDebugIds[stack] = "__SENTRY_DEBUG_ID__"; - globalObject._sentryDebugIdIdentifier = "sentry-dbid-__SENTRY_DEBUG_ID__"; + globalObject._sentryDebugIds[stack] = '__SENTRY_DEBUG_ID__'; + globalObject._sentryDebugIdIdentifier = 'sentry-dbid-__SENTRY_DEBUG_ID__'; } } catch {} diff --git a/packages/bundler-plugins/src/babel-plugin/constants.ts b/packages/bundler-plugins/src/babel-plugin/constants.ts index 51eac57dfe82..dc229f331e8b 100644 --- a/packages/bundler-plugins/src/babel-plugin/constants.ts +++ b/packages/bundler-plugins/src/babel-plugin/constants.ts @@ -25,122 +25,122 @@ export const KNOWN_INCOMPATIBLE_PLUGINS = [ // This module might be causing an issue preventing clicks. For safety, we won't run on this module. - "react-native-testfairy", + 'react-native-testfairy', // This module checks for unexpected property keys and throws an exception. - "@react-navigation", + '@react-navigation', ]; export const DEFAULT_IGNORED_ELEMENTS = [ - "a", - "abbr", - "address", - "area", - "article", - "aside", - "audio", - "b", - "base", - "bdi", - "bdo", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "cite", - "code", - "col", - "colgroup", - "data", - "datalist", - "dd", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "em", - "embed", - "fieldset", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "hr", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "keygen", - "label", - "legend", - "li", - "link", - "main", - "map", - "mark", - "menu", - "menuitem", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "param", - "pre", - "progress", - "q", - "rb", - "rp", - "rt", - "rtc", - "ruby", - "s", - "samp", - "script", - "section", - "select", - "small", - "source", - "span", - "strong", - "style", - "sub", - "summary", - "sup", - "table", - "tbody", - "td", - "template", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "u", - "ul", - "var", - "video", - "wbr", + 'a', + 'abbr', + 'address', + 'area', + 'article', + 'aside', + 'audio', + 'b', + 'base', + 'bdi', + 'bdo', + 'blockquote', + 'body', + 'br', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'col', + 'colgroup', + 'data', + 'datalist', + 'dd', + 'del', + 'details', + 'dfn', + 'dialog', + 'div', + 'dl', + 'dt', + 'em', + 'embed', + 'fieldset', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'keygen', + 'label', + 'legend', + 'li', + 'link', + 'main', + 'map', + 'mark', + 'menu', + 'menuitem', + 'meter', + 'nav', + 'noscript', + 'object', + 'ol', + 'optgroup', + 'option', + 'output', + 'p', + 'param', + 'pre', + 'progress', + 'q', + 'rb', + 'rp', + 'rt', + 'rtc', + 'ruby', + 's', + 'samp', + 'script', + 'section', + 'select', + 'small', + 'source', + 'span', + 'strong', + 'style', + 'sub', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'template', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'title', + 'tr', + 'track', + 'u', + 'ul', + 'var', + 'video', + 'wbr', ]; diff --git a/packages/bundler-plugins/src/babel-plugin/experimental.ts b/packages/bundler-plugins/src/babel-plugin/experimental.ts index 130f4abcfeb4..a5d05ec7ab6e 100644 --- a/packages/bundler-plugins/src/babel-plugin/experimental.ts +++ b/packages/bundler-plugins/src/babel-plugin/experimental.ts @@ -34,30 +34,30 @@ * - Highly modified to inject the data attributes into the root HTML elements of a component. */ -import type * as Babel from "@babel/core"; -import type { PluginObj, PluginPass } from "@babel/core"; +import type * as Babel from '@babel/core'; +import type { PluginObj, PluginPass } from '@babel/core'; const REACT_NATIVE_ELEMENTS: string[] = [ - "Image", - "Text", - "View", - "ScrollView", - "TextInput", - "TouchableOpacity", - "TouchableHighlight", - "TouchableWithoutFeedback", - "FlatList", - "SectionList", - "ActivityIndicator", - "Button", - "Switch", - "Modal", - "SafeAreaView", - "StatusBar", - "KeyboardAvoidingView", - "RefreshControl", - "Picker", - "Slider", + 'Image', + 'Text', + 'View', + 'ScrollView', + 'TextInput', + 'TouchableOpacity', + 'TouchableHighlight', + 'TouchableWithoutFeedback', + 'FlatList', + 'SectionList', + 'ActivityIndicator', + 'Button', + 'Switch', + 'Modal', + 'SafeAreaView', + 'StatusBar', + 'KeyboardAvoidingView', + 'RefreshControl', + 'Picker', + 'Slider', ]; interface AnnotationOpts { @@ -92,9 +92,7 @@ interface JSXProcessingContext { } // We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier -export function experimentalComponentNameAnnotatePlugin({ - types: t, -}: typeof Babel): AnnotationPlugin { +export function experimentalComponentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { return { visitor: { Program: { @@ -115,13 +113,7 @@ export function experimentalComponentNameAnnotatePlugin({ // We're expecting a `VariableDeclarator` like `const MyComponent =` const parent = path.parent; - if ( - !parent || - !("id" in parent) || - !parent.id || - !("name" in parent.id) || - !parent.id.name - ) { + if (!parent || !('id' in parent) || !parent.id || !('name' in parent.id) || !parent.id.name) { return; } @@ -129,21 +121,21 @@ export function experimentalComponentNameAnnotatePlugin({ functionBodyPushAttributes(context, path); }, ClassDeclaration(path, state) { - const name = path.get("id"); - const properties = path.get("body").get("body"); - const render = properties.find((prop) => { - return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); + const name = path.get('id'); + const properties = path.get('body').get('body'); + const render = properties.find(prop => { + return prop.isClassMethod() && prop.get('key').isIdentifier({ name: 'render' }); }); if (!render?.traverse) { return; } - const context = createJSXProcessingContext(state, t, name.node?.name || ""); + const context = createJSXProcessingContext(state, t, name.node?.name || ''); render.traverse({ ReturnStatement(returnStatement) { - const arg = returnStatement.get("argument"); + const arg = returnStatement.get('argument'); if (!arg.isJSXElement() && !arg.isJSXFragment()) { return; @@ -188,7 +180,7 @@ function isHtmlElement(elementName: string): boolean { function createJSXProcessingContext( state: AnnotationPluginPass, t: typeof Babel.types, - componentName: string + componentName: string, ): JSXProcessingContext { return { t, @@ -204,21 +196,18 @@ function createJSXProcessingContext( * Handles various function body structures including direct JSX returns, conditional expressions, * and nested JSX elements. */ -function functionBodyPushAttributes( - context: JSXProcessingContext, - path: Babel.NodePath -): void { +function functionBodyPushAttributes(context: JSXProcessingContext, path: Babel.NodePath): void { let jsxNode: Babel.NodePath; - const functionBody = path.get("body").get("body"); + const functionBody = path.get('body').get('body'); if ( - !("length" in functionBody) && + !('length' in functionBody) && functionBody.parent && - (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") + (functionBody.parent.type === 'JSXElement' || functionBody.parent.type === 'JSXFragment') ) { - const maybeJsxNode = functionBody.find((c) => { - return c.type === "JSXElement" || c.type === "JSXFragment"; + const maybeJsxNode = functionBody.find(c => { + return c.type === 'JSXElement' || c.type === 'JSXFragment'; }); if (!maybeJsxNode) { @@ -227,14 +216,14 @@ function functionBodyPushAttributes( jsxNode = maybeJsxNode; } else { - const returnStatement = functionBody.find((c) => { - return c.type === "ReturnStatement"; + const returnStatement = functionBody.find(c => { + return c.type === 'ReturnStatement'; }); if (!returnStatement) { return; } - const arg = returnStatement.get("argument"); + const arg = returnStatement.get('argument'); if (!arg) { return; } @@ -246,11 +235,11 @@ function functionBodyPushAttributes( // Handle the case of a function body returning a ternary operation. // `return (maybeTrue ? '' : ())` if (arg.isConditionalExpression()) { - const consequent = arg.get("consequent"); + const consequent = arg.get('consequent'); if (consequent.isJSXFragment() || consequent.isJSXElement()) { processJSX(context, consequent); } - const alternate = arg.get("alternate"); + const alternate = arg.get('alternate'); if (alternate.isJSXFragment() || alternate.isJSXElement()) { processJSX(context, alternate); } @@ -283,29 +272,26 @@ function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath): voi // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate - const paths = jsxNode.get("openingElement"); - const openingElements = ( - Array.isArray(paths) ? paths : [paths] - ) as Babel.NodePath[]; + const paths = jsxNode.get('openingElement'); + const openingElements = (Array.isArray(paths) ? paths : [paths]) as Babel.NodePath[]; const hasInjectedAttributes = openingElements.reduce( - (prev, openingElement) => - prev || applyAttributes(context, openingElement, context.componentName), - false + (prev, openingElement) => prev || applyAttributes(context, openingElement, context.componentName), + false, ); if (hasInjectedAttributes) { return; } - let children = jsxNode.get("children"); + let children = jsxNode.get('children'); // TODO: See why `Array.isArray` doesn't have correct behaviour here - if (children && !("length" in children)) { + if (children && !('length' in children)) { // A single child was found, maybe a bit of static text children = [children]; } - children.forEach((child) => { + children.forEach(child => { // Happens for some node types like plain text if (!child.node) { return; @@ -313,7 +299,7 @@ function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath): voi // If the current element is a fragment, children are still considered at root level // Otherwise, children are not at root level - const openingElement = child.get("openingElement"); + const openingElement = child.get('openingElement'); // TODO: Improve this. We never expect to have multiple opening elements // but if it's possible, this should work if (Array.isArray(openingElement)) { @@ -332,7 +318,7 @@ function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath): voi function applyAttributes( context: JSXProcessingContext, openingElement: Babel.NodePath, - componentName: string + componentName: string, ): boolean { const { t, attributeName: componentAttributeName, ignoredComponents, fragmentContext } = context; @@ -358,14 +344,14 @@ function applyAttributes( } const isAnIgnoredComponent = ignoredComponents.some( - (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName + ignoredComponent => ignoredComponent === componentName || ignoredComponent === elementName, ); // Add a stable attribute for the component name (only for root elements) if (!isAnIgnoredComponent && !hasAttributeWithName(openingElement, componentAttributeName)) { if (componentAttributeName) { openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) + t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)), ); } } @@ -375,33 +361,30 @@ function applyAttributes( function attributeNamesFromState(state: AnnotationPluginPass): string { if (state.opts.native) { - return "dataSentryComponent"; + return 'dataSentryComponent'; } - return "data-sentry-component"; + return 'data-sentry-component'; } function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { const fragmentAliases = new Set(); - const reactNamespaceAliases = new Set(["React"]); // Default React namespace + const reactNamespaceAliases = new Set(['React']); // Default React namespace programPath.traverse({ ImportDeclaration(importPath) { const source = importPath.node.source.value; // Handle React imports - if (source === "react" || source === "React") { - importPath.node.specifiers.forEach((spec) => { - if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { + if (source === 'react' || source === 'React') { + importPath.node.specifiers.forEach(spec => { + if (spec.type === 'ImportSpecifier' && spec.imported.type === 'Identifier') { // Detect aliased React.Fragment imports (e.g., `Fragment as F`) // so we can later identify as a fragment in JSX. - if (spec.imported.name === "Fragment") { + if (spec.imported.name === 'Fragment') { fragmentAliases.add(spec.local.name); } - } else if ( - spec.type === "ImportDefaultSpecifier" || - spec.type === "ImportNamespaceSpecifier" - ) { + } else if (spec.type === 'ImportDefaultSpecifier' || spec.type === 'ImportNamespaceSpecifier') { // import React from 'react' -> React OR // import * as React from 'react' -> React reactNamespaceAliases.add(spec.local.name); @@ -416,18 +399,18 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { const init = varPath.node.init; // Handle identifier assignments: const MyFragment = Fragment - if (varPath.node.id.type === "Identifier") { + if (varPath.node.id.type === 'Identifier') { // Handle: const MyFragment = Fragment (only if Fragment is a known alias) - if (init.type === "Identifier" && fragmentAliases.has(init.name)) { + if (init.type === 'Identifier' && fragmentAliases.has(init.name)) { fragmentAliases.add(varPath.node.id.name); } // Handle: const MyFragment = React.Fragment (only for known React namespaces) if ( - init.type === "MemberExpression" && - init.object.type === "Identifier" && - init.property.type === "Identifier" && - init.property.name === "Fragment" && + init.type === 'MemberExpression' && + init.object.type === 'Identifier' && + init.property.type === 'Identifier' && + init.property.name === 'Fragment' && reactNamespaceAliases.has(init.object.name) ) { fragmentAliases.add(varPath.node.id.name); @@ -435,16 +418,16 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { } // Handle destructuring assignments: const { Fragment } = React - if (varPath.node.id.type === "ObjectPattern") { - if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { + if (varPath.node.id.type === 'ObjectPattern') { + if (init.type === 'Identifier' && reactNamespaceAliases.has(init.name)) { const properties = varPath.node.id.properties; for (const prop of properties) { if ( - prop.type === "ObjectProperty" && - prop.key?.type === "Identifier" && - prop.value?.type === "Identifier" && - prop.key.name === "Fragment" + prop.type === 'ObjectProperty' && + prop.key?.type === 'Identifier' && + prop.value?.type === 'Identifier' && + prop.key.name === 'Fragment' ) { fragmentAliases.add(prop.value.name); } @@ -461,7 +444,7 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { function isReactFragment( t: typeof Babel.types, openingElement: Babel.NodePath, - context?: FragmentContext // Add this optional parameter + context?: FragmentContext, // Add this optional parameter ): boolean { // Handle JSX fragments (<>) if (openingElement.isJSXFragment()) { @@ -471,7 +454,7 @@ function isReactFragment( const elementName = getPathName(t, openingElement); // Direct fragment references - if (elementName === "Fragment" || elementName === "React.Fragment") { + if (elementName === 'Fragment' || elementName === 'React.Fragment') { return true; } @@ -485,22 +468,22 @@ function isReactFragment( // Handle JSXMemberExpression if ( openingElement.node && - "name" in openingElement.node && + 'name' in openingElement.node && openingElement.node.name && - typeof openingElement.node.name === "object" && - "type" in openingElement.node.name && - openingElement.node.name.type === "JSXMemberExpression" + typeof openingElement.node.name === 'object' && + 'type' in openingElement.node.name && + openingElement.node.name.type === 'JSXMemberExpression' ) { const nodeName = openingElement.node.name; - if (typeof nodeName !== "object" || !nodeName) { + if (typeof nodeName !== 'object' || !nodeName) { return false; } - if ("object" in nodeName && "property" in nodeName) { + if ('object' in nodeName && 'property' in nodeName) { const nodeNameObject = nodeName.object; const nodeNameProperty = nodeName.property; - if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { + if (typeof nodeNameObject !== 'object' || typeof nodeNameProperty !== 'object') { return false; } @@ -508,26 +491,23 @@ function isReactFragment( return false; } - const objectName = "name" in nodeNameObject && nodeNameObject.name; - const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + const objectName = 'name' in nodeNameObject && nodeNameObject.name; + const propertyName = 'name' in nodeNameProperty && nodeNameProperty.name; // React.Fragment check - if (objectName === "React" && propertyName === "Fragment") { + if (objectName === 'React' && propertyName === 'Fragment') { return true; } // Enhanced checks using context if (context) { // Check React.Fragment pattern with known React namespaces - if ( - context.reactNamespaceAliases.has(objectName as string) && - propertyName === "Fragment" - ) { + if (context.reactNamespaceAliases.has(objectName as string) && propertyName === 'Fragment') { return true; } // Check MyFragment.Fragment pattern - if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { + if (context.fragmentAliases.has(objectName as string) && propertyName === 'Fragment') { return true; } } @@ -539,14 +519,14 @@ function isReactFragment( function hasAttributeWithName( openingElement: Babel.NodePath, - name: string | undefined | null + name: string | undefined | null, ): boolean { if (!name) { return false; } - return openingElement.node.attributes.some((node) => { - if (node.type === "JSXAttribute") { + return openingElement.node.attributes.some(node => { + if (node.type === 'JSXAttribute') { return node.name.name === name; } @@ -556,13 +536,13 @@ function hasAttributeWithName( function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { if (!path.node) return UNKNOWN_ELEMENT_NAME; - if (!("name" in path.node)) { + if (!('name' in path.node)) { return UNKNOWN_ELEMENT_NAME; } const name = path.node.name; - if (typeof name === "string") { + if (typeof name === 'string') { return name; } @@ -587,7 +567,7 @@ function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { // Recursively handle nested member expressions (e.g. Components.UI.Header) function getJSXMemberExpressionObjectName( t: typeof Babel.types, - object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier + object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier, ): string { if (t.isJSXIdentifier(object)) { return object.name; @@ -600,4 +580,4 @@ function getJSXMemberExpressionObjectName( return UNKNOWN_ELEMENT_NAME; } -const UNKNOWN_ELEMENT_NAME = "unknown"; +const UNKNOWN_ELEMENT_NAME = 'unknown'; diff --git a/packages/bundler-plugins/src/babel-plugin/index.ts b/packages/bundler-plugins/src/babel-plugin/index.ts index 13773f43bf55..fa3884f8dcaa 100644 --- a/packages/bundler-plugins/src/babel-plugin/index.ts +++ b/packages/bundler-plugins/src/babel-plugin/index.ts @@ -33,22 +33,22 @@ * - Code cleanups */ -import type * as Babel from "@babel/core"; -import type { PluginObj, PluginPass } from "@babel/core"; +import type * as Babel from '@babel/core'; +import type { PluginObj, PluginPass } from '@babel/core'; -import { DEFAULT_IGNORED_ELEMENTS, KNOWN_INCOMPATIBLE_PLUGINS } from "./constants"; +import { DEFAULT_IGNORED_ELEMENTS, KNOWN_INCOMPATIBLE_PLUGINS } from './constants'; -const webComponentName = "data-sentry-component"; -const webElementName = "data-sentry-element"; -const webSourceFileName = "data-sentry-source-file"; +const webComponentName = 'data-sentry-component'; +const webElementName = 'data-sentry-element'; +const webSourceFileName = 'data-sentry-source-file'; -const nativeComponentName = "dataSentryComponent"; -const nativeElementName = "dataSentryElement"; -const nativeSourceFileName = "dataSentrySourceFile"; +const nativeComponentName = 'dataSentryComponent'; +const nativeElementName = 'dataSentryElement'; +const nativeSourceFileName = 'dataSentrySourceFile'; -const SENTRY_LABEL_ATTRIBUTE = "sentry-label"; +const SENTRY_LABEL_ATTRIBUTE = 'sentry-label'; const MAX_LABEL_LENGTH = 64; -const DEFAULT_TEXT_COMPONENT_NAMES = ["Text", "text"]; +const DEFAULT_TEXT_COMPONENT_NAMES = ['Text', 'text']; const MAX_TEXT_SEARCH_DEPTH = 3; interface AutoInjectSentryLabelOpts { @@ -57,7 +57,7 @@ interface AutoInjectSentryLabelOpts { interface AnnotationOpts { native?: boolean; - "annotate-fragments"?: boolean; + 'annotate-fragments'?: boolean; ignoredComponents?: string[]; /** @hidden */ autoInjectSentryLabel?: boolean | AutoInjectSentryLabelOpts; @@ -97,7 +97,7 @@ interface JSXProcessingContext { textComponentNames: string[]; } -export { experimentalComponentNameAnnotatePlugin } from "./experimental"; +export { experimentalComponentNameAnnotatePlugin } from './experimental'; // We must export the plugin as default, otherwise the Babel loader will not be able to resolve it when configured using its string identifier export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): AnnotationPlugin { @@ -124,13 +124,7 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): // We're expecting a `VariableDeclarator` like `const MyComponent =` const parent = path.parent; - if ( - !parent || - !("id" in parent) || - !parent.id || - !("name" in parent.id) || - !parent.id.name - ) { + if (!parent || !('id' in parent) || !parent.id || !('name' in parent.id) || !parent.id.name) { return; } @@ -142,21 +136,21 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): functionBodyPushAttributes(context, path); }, ClassDeclaration(path, state) { - const name = path.get("id"); - const properties = path.get("body").get("body"); - const render = properties.find((prop) => { - return prop.isClassMethod() && prop.get("key").isIdentifier({ name: "render" }); + const name = path.get('id'); + const properties = path.get('body').get('body'); + const render = properties.find(prop => { + return prop.isClassMethod() && prop.get('key').isIdentifier({ name: 'render' }); }); if (!render?.traverse || isKnownIncompatiblePluginFromState(state)) { return; } - const context = createJSXProcessingContext(state, t, name.node?.name || ""); + const context = createJSXProcessingContext(state, t, name.node?.name || ''); render.traverse({ ReturnStatement(returnStatement) { - const arg = returnStatement.get("argument"); + const arg = returnStatement.get('argument'); if (!arg.isJSXElement() && !arg.isJSXFragment()) { return; @@ -176,10 +170,10 @@ export default function componentNameAnnotatePlugin({ types: t }: typeof Babel): function createJSXProcessingContext( state: AnnotationPluginPass, t: typeof Babel.types, - componentName: string + componentName: string, ): JSXProcessingContext { return { - annotateFragments: state.opts["annotate-fragments"] === true, + annotateFragments: state.opts['annotate-fragments'] === true, t, componentName, sourceFileName: sourceFileNameFromState(state), @@ -188,7 +182,7 @@ function createJSXProcessingContext( fragmentContext: state.sentryFragmentContext, autoInjectSentryLabel: !!state.opts.autoInjectSentryLabel, textComponentNames: - (state.opts.autoInjectSentryLabel && typeof state.opts.autoInjectSentryLabel === "object" + (state.opts.autoInjectSentryLabel && typeof state.opts.autoInjectSentryLabel === 'object' ? state.opts.autoInjectSentryLabel.textComponentNames : undefined) ?? DEFAULT_TEXT_COMPONENT_NAMES, }; @@ -199,21 +193,18 @@ function createJSXProcessingContext( * Handles various function body structures including direct JSX returns, conditional expressions, * and nested JSX elements. */ -function functionBodyPushAttributes( - context: JSXProcessingContext, - path: Babel.NodePath -): void { +function functionBodyPushAttributes(context: JSXProcessingContext, path: Babel.NodePath): void { let jsxNode: Babel.NodePath; - const functionBody = path.get("body").get("body"); + const functionBody = path.get('body').get('body'); if ( - !("length" in functionBody) && + !('length' in functionBody) && functionBody.parent && - (functionBody.parent.type === "JSXElement" || functionBody.parent.type === "JSXFragment") + (functionBody.parent.type === 'JSXElement' || functionBody.parent.type === 'JSXFragment') ) { - const maybeJsxNode = functionBody.find((c) => { - return c.type === "JSXElement" || c.type === "JSXFragment"; + const maybeJsxNode = functionBody.find(c => { + return c.type === 'JSXElement' || c.type === 'JSXFragment'; }); if (!maybeJsxNode) { @@ -222,14 +213,14 @@ function functionBodyPushAttributes( jsxNode = maybeJsxNode; } else { - const returnStatement = functionBody.find((c) => { - return c.type === "ReturnStatement"; + const returnStatement = functionBody.find(c => { + return c.type === 'ReturnStatement'; }); if (!returnStatement) { return; } - const arg = returnStatement.get("argument"); + const arg = returnStatement.get('argument'); if (!arg) { return; } @@ -241,11 +232,11 @@ function functionBodyPushAttributes( // Handle the case of a function body returning a ternary operation. // `return (maybeTrue ? '' : ())` if (arg.isConditionalExpression()) { - const consequent = arg.get("consequent"); + const consequent = arg.get('consequent'); if (consequent.isJSXFragment() || consequent.isJSXElement()) { processJSX(context, consequent); } - const alternate = arg.get("alternate"); + const alternate = arg.get('alternate'); if (alternate.isJSXFragment() || alternate.isJSXElement()) { processJSX(context, alternate); } @@ -271,11 +262,7 @@ function functionBodyPushAttributes( * Handles both JSX elements and fragments, applying appropriate attributes * based on configuration and component context. */ -function processJSX( - context: JSXProcessingContext, - jsxNode: Babel.NodePath, - componentName?: string -): void { +function processJSX(context: JSXProcessingContext, jsxNode: Babel.NodePath, componentName?: string): void { if (!jsxNode) { return; } @@ -286,34 +273,30 @@ function processJSX( // NOTE: I don't know of a case where `openingElement` would have more than one item, // but it's safer to always iterate - const paths = jsxNode.get("openingElement"); + const paths = jsxNode.get('openingElement'); const openingElements = Array.isArray(paths) ? paths : [paths]; - openingElements.forEach((openingElement) => { - applyAttributes( - context, - openingElement as Babel.NodePath, - currentComponentName - ); + openingElements.forEach(openingElement => { + applyAttributes(context, openingElement as Babel.NodePath, currentComponentName); }); - let children = jsxNode.get("children"); + let children = jsxNode.get('children'); // TODO: See why `Array.isArray` doesn't have correct behaviour here - if (children && !("length" in children)) { + if (children && !('length' in children)) { // A single child was found, maybe a bit of static text children = [children]; } let shouldSetComponentName = context.annotateFragments; - children.forEach((child) => { + children.forEach(child => { // Happens for some node types like plain text if (!child.node) { return; } // Children don't receive the data-component attribute so we pass null for componentName unless it's the first child of a Fragment with a node and `annotateFragments` is true - const openingElement = child.get("openingElement"); + const openingElement = child.get('openingElement'); // TODO: Improve this. We never expect to have multiple opening elements // but if it's possible, this should work if (Array.isArray(openingElement)) { @@ -324,7 +307,7 @@ function processJSX( shouldSetComponentName = false; processJSX(context, child, currentComponentName); } else { - processJSX(context, child, ""); + processJSX(context, child, ''); } }); @@ -341,7 +324,7 @@ function processJSX( function applyAttributes( context: JSXProcessingContext, openingElement: Babel.NodePath, - componentName: string + componentName: string, ): void { const { t, attributeNames, ignoredComponents, fragmentContext, sourceFileName } = context; const [componentAttributeName, elementAttributeName, sourceFileAttributeName] = attributeNames; @@ -361,7 +344,7 @@ function applyAttributes( const elementName = getPathName(t, openingElement); const isAnIgnoredComponent = ignoredComponents.some( - (ignoredComponent) => ignoredComponent === componentName || ignoredComponent === elementName + ignoredComponent => ignoredComponent === componentName || ignoredComponent === elementName, ); // Add a stable attribute for the element name but only for non-DOM names @@ -373,21 +356,17 @@ function applyAttributes( // Always add element attribute for non-ignored elements if (elementAttributeName) { openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)) + t.jSXAttribute(t.jSXIdentifier(elementAttributeName), t.stringLiteral(elementName)), ); } } } // Add a stable attribute for the component name (absent for non-root elements) - if ( - componentName && - !isAnIgnoredComponent && - !hasAttributeWithName(openingElement, componentAttributeName) - ) { + if (componentName && !isAnIgnoredComponent && !hasAttributeWithName(openingElement, componentAttributeName)) { if (componentAttributeName) { openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)) + t.jSXAttribute(t.jSXIdentifier(componentAttributeName), t.stringLiteral(componentName)), ); } } @@ -404,7 +383,7 @@ function applyAttributes( ) { if (sourceFileAttributeName) { openingElement.node.attributes.push( - t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)) + t.jSXAttribute(t.jSXIdentifier(sourceFileAttributeName), t.stringLiteral(sourceFileName)), ); } } @@ -416,10 +395,10 @@ function sourceFileNameFromState(state: AnnotationPluginPass): string | undefine return undefined; } - if (name.indexOf("/") !== -1) { - return name.split("/").pop(); - } else if (name.indexOf("\\") !== -1) { - return name.split("\\").pop(); + if (name.indexOf('/') !== -1) { + return name.split('/').pop(); + } else if (name.indexOf('\\') !== -1) { + return name.split('\\').pop(); } else { return name; } @@ -429,7 +408,7 @@ function fullSourceFileNameFromState(state: AnnotationPluginPass): string | null // @ts-expect-error This type is incorrect in Babel, `sourceFileName` is the correct type const name = state.file.opts.parserOpts?.sourceFileName as unknown; - if (typeof name === "string") { + if (typeof name === 'string') { return name; } @@ -443,7 +422,7 @@ function isKnownIncompatiblePluginFromState(state: AnnotationPluginPass): boolea return false; } - return KNOWN_INCOMPATIBLE_PLUGINS.some((pluginName) => { + return KNOWN_INCOMPATIBLE_PLUGINS.some(pluginName => { if ( fullSourceFileName.includes(`/node_modules/${pluginName}/`) || fullSourceFileName.includes(`\\node_modules\\${pluginName}\\`) @@ -465,25 +444,22 @@ function attributeNamesFromState(state: AnnotationPluginPass): [string, string, function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { const fragmentAliases = new Set(); - const reactNamespaceAliases = new Set(["React"]); // Default React namespace + const reactNamespaceAliases = new Set(['React']); // Default React namespace programPath.traverse({ ImportDeclaration(importPath) { const source = importPath.node.source.value; // Handle React imports - if (source === "react" || source === "React") { - importPath.node.specifiers.forEach((spec) => { - if (spec.type === "ImportSpecifier" && spec.imported.type === "Identifier") { + if (source === 'react' || source === 'React') { + importPath.node.specifiers.forEach(spec => { + if (spec.type === 'ImportSpecifier' && spec.imported.type === 'Identifier') { // Detect aliased React.Fragment imports (e.g., `Fragment as F`) // so we can later identify as a fragment in JSX. - if (spec.imported.name === "Fragment") { + if (spec.imported.name === 'Fragment') { fragmentAliases.add(spec.local.name); } - } else if ( - spec.type === "ImportDefaultSpecifier" || - spec.type === "ImportNamespaceSpecifier" - ) { + } else if (spec.type === 'ImportDefaultSpecifier' || spec.type === 'ImportNamespaceSpecifier') { // import React from 'react' -> React OR // import * as React from 'react' -> React reactNamespaceAliases.add(spec.local.name); @@ -498,18 +474,18 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { const init = varPath.node.init; // Handle identifier assignments: const MyFragment = Fragment - if (varPath.node.id.type === "Identifier") { + if (varPath.node.id.type === 'Identifier') { // Handle: const MyFragment = Fragment (only if Fragment is a known alias) - if (init.type === "Identifier" && fragmentAliases.has(init.name)) { + if (init.type === 'Identifier' && fragmentAliases.has(init.name)) { fragmentAliases.add(varPath.node.id.name); } // Handle: const MyFragment = React.Fragment (only for known React namespaces) if ( - init.type === "MemberExpression" && - init.object.type === "Identifier" && - init.property.type === "Identifier" && - init.property.name === "Fragment" && + init.type === 'MemberExpression' && + init.object.type === 'Identifier' && + init.property.type === 'Identifier' && + init.property.name === 'Fragment' && reactNamespaceAliases.has(init.object.name) ) { fragmentAliases.add(varPath.node.id.name); @@ -517,16 +493,16 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { } // Handle destructuring assignments: const { Fragment } = React - if (varPath.node.id.type === "ObjectPattern") { - if (init.type === "Identifier" && reactNamespaceAliases.has(init.name)) { + if (varPath.node.id.type === 'ObjectPattern') { + if (init.type === 'Identifier' && reactNamespaceAliases.has(init.name)) { const properties = varPath.node.id.properties; for (const prop of properties) { if ( - prop.type === "ObjectProperty" && - prop.key?.type === "Identifier" && - prop.value?.type === "Identifier" && - prop.key.name === "Fragment" + prop.type === 'ObjectProperty' && + prop.key?.type === 'Identifier' && + prop.value?.type === 'Identifier' && + prop.key.name === 'Fragment' ) { fragmentAliases.add(prop.value.name); } @@ -543,7 +519,7 @@ function collectFragmentContext(programPath: Babel.NodePath): FragmentContext { function isReactFragment( t: typeof Babel.types, openingElement: Babel.NodePath, - context?: FragmentContext // Add this optional parameter + context?: FragmentContext, // Add this optional parameter ): boolean { // Handle JSX fragments (<>) if (openingElement.isJSXFragment()) { @@ -553,7 +529,7 @@ function isReactFragment( const elementName = getPathName(t, openingElement); // Direct fragment references - if (elementName === "Fragment" || elementName === "React.Fragment") { + if (elementName === 'Fragment' || elementName === 'React.Fragment') { return true; } @@ -567,22 +543,22 @@ function isReactFragment( // Handle JSXMemberExpression if ( openingElement.node && - "name" in openingElement.node && + 'name' in openingElement.node && openingElement.node.name && - typeof openingElement.node.name === "object" && - "type" in openingElement.node.name && - openingElement.node.name.type === "JSXMemberExpression" + typeof openingElement.node.name === 'object' && + 'type' in openingElement.node.name && + openingElement.node.name.type === 'JSXMemberExpression' ) { const nodeName = openingElement.node.name; - if (typeof nodeName !== "object" || !nodeName) { + if (typeof nodeName !== 'object' || !nodeName) { return false; } - if ("object" in nodeName && "property" in nodeName) { + if ('object' in nodeName && 'property' in nodeName) { const nodeNameObject = nodeName.object; const nodeNameProperty = nodeName.property; - if (typeof nodeNameObject !== "object" || typeof nodeNameProperty !== "object") { + if (typeof nodeNameObject !== 'object' || typeof nodeNameProperty !== 'object') { return false; } @@ -590,26 +566,23 @@ function isReactFragment( return false; } - const objectName = "name" in nodeNameObject && nodeNameObject.name; - const propertyName = "name" in nodeNameProperty && nodeNameProperty.name; + const objectName = 'name' in nodeNameObject && nodeNameObject.name; + const propertyName = 'name' in nodeNameProperty && nodeNameProperty.name; // React.Fragment check - if (objectName === "React" && propertyName === "Fragment") { + if (objectName === 'React' && propertyName === 'Fragment') { return true; } // Enhanced checks using context if (context) { // Check React.Fragment pattern with known React namespaces - if ( - context.reactNamespaceAliases.has(objectName as string) && - propertyName === "Fragment" - ) { + if (context.reactNamespaceAliases.has(objectName as string) && propertyName === 'Fragment') { return true; } // Check MyFragment.Fragment pattern - if (context.fragmentAliases.has(objectName as string) && propertyName === "Fragment") { + if (context.fragmentAliases.has(objectName as string) && propertyName === 'Fragment') { return true; } } @@ -621,14 +594,14 @@ function isReactFragment( function hasAttributeWithName( openingElement: Babel.NodePath, - name: string | undefined | null + name: string | undefined | null, ): boolean { if (!name) { return false; } - return openingElement.node.attributes.some((node) => { - if (node.type === "JSXAttribute") { + return openingElement.node.attributes.some(node => { + if (node.type === 'JSXAttribute') { return node.name.name === name; } @@ -638,13 +611,13 @@ function hasAttributeWithName( function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { if (!path.node) return UNKNOWN_ELEMENT_NAME; - if (!("name" in path.node)) { + if (!('name' in path.node)) { return UNKNOWN_ELEMENT_NAME; } const name = path.node.name; - if (typeof name === "string") { + if (typeof name === 'string') { return name; } @@ -669,7 +642,7 @@ function getPathName(t: typeof Babel.types, path: Babel.NodePath): string { // Recursively handle nested member expressions (e.g. Components.UI.Header) function getJSXMemberExpressionObjectName( t: typeof Babel.types, - object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier + object: Babel.types.JSXMemberExpression | Babel.types.JSXIdentifier, ): string { if (t.isJSXIdentifier(object)) { return object.name; @@ -696,7 +669,7 @@ function extractStaticTextFromChildren( node: Babel.types.JSXElement | Babel.types.JSXFragment, textComponentNames: string[], depth: number, - isRoot: boolean + isRoot: boolean, ): string[] | null { if (depth <= 0) { return []; @@ -707,7 +680,7 @@ function extractStaticTextFromChildren( for (const child of node.children) { if (t.isJSXText(child)) { if (isRoot) { - const trimmed = child.value.replace(/\s+/g, " ").trim(); + const trimmed = child.value.replace(/\s+/g, ' ').trim(); if (trimmed) { texts.push(trimmed); } @@ -722,13 +695,7 @@ function extractStaticTextFromChildren( } texts.push(...innerTexts); } else { - const result = extractStaticTextFromChildren( - t, - child, - textComponentNames, - depth - 1, - false - ); + const result = extractStaticTextFromChildren(t, child, textComponentNames, depth - 1, false); if (result === null) { return null; } @@ -762,13 +729,13 @@ function extractStaticTextFromChildren( function extractTextFromTextComponent( t: typeof Babel.types, node: Babel.types.JSXElement | Babel.types.JSXFragment, - textComponentNames: string[] + textComponentNames: string[], ): string[] | null { const texts: string[] = []; for (const child of node.children) { if (t.isJSXText(child)) { - const trimmed = child.value.replace(/\s+/g, " ").trim(); + const trimmed = child.value.replace(/\s+/g, ' ').trim(); if (trimmed) { texts.push(trimmed); } @@ -804,10 +771,7 @@ function extractTextFromTextComponent( return texts; } -function getElementName( - t: typeof Babel.types, - openingElement: Babel.types.JSXOpeningElement -): string { +function getElementName(t: typeof Babel.types, openingElement: Babel.types.JSXOpeningElement): string { const name = openingElement.name; if (t.isJSXIdentifier(name)) { return name.name; @@ -815,7 +779,7 @@ function getElementName( if (t.isJSXMemberExpression(name)) { return `${getJSXMemberExpressionObjectName(t, name.object)}.${name.property.name}`; } - return ""; + return ''; } /** @@ -846,33 +810,25 @@ function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.No const targetElementName = getElementName(t, targetElement.openingElement); - if ( - ignoredComponents.some((ignored) => ignored === componentName || ignored === targetElementName) - ) { + if (ignoredComponents.some(ignored => ignored === componentName || ignored === targetElementName)) { return; } if ( targetElement.openingElement.attributes.some( - (attr) => t.isJSXAttribute(attr) && attr.name.name === SENTRY_LABEL_ATTRIBUTE + attr => t.isJSXAttribute(attr) && attr.name.name === SENTRY_LABEL_ATTRIBUTE, ) ) { return; } - const texts = extractStaticTextFromChildren( - t, - targetElement, - textComponentNames, - MAX_TEXT_SEARCH_DEPTH, - true - ); + const texts = extractStaticTextFromChildren(t, targetElement, textComponentNames, MAX_TEXT_SEARCH_DEPTH, true); if (texts === null) { return; } - let label = texts.join(" ").replace(/\s+/g, " ").trim(); + let label = texts.join(' ').replace(/\s+/g, ' ').trim(); if (!label) { return; @@ -883,8 +839,8 @@ function maybeInjectSentryLabel(context: JSXProcessingContext, jsxNode: Babel.No } targetElement.openingElement.attributes.push( - t.jSXAttribute(t.jSXIdentifier(SENTRY_LABEL_ATTRIBUTE), t.stringLiteral(label)) + t.jSXAttribute(t.jSXIdentifier(SENTRY_LABEL_ATTRIBUTE), t.stringLiteral(label)), ); } -const UNKNOWN_ELEMENT_NAME = "unknown"; +const UNKNOWN_ELEMENT_NAME = 'unknown'; diff --git a/packages/bundler-plugins/src/core/build-plugin-manager.ts b/packages/bundler-plugins/src/core/build-plugin-manager.ts index 7a1b5f8719f2..522e629f942b 100644 --- a/packages/bundler-plugins/src/core/build-plugin-manager.ts +++ b/packages/bundler-plugins/src/core/build-plugin-manager.ts @@ -1,37 +1,26 @@ /* oxlint-disable max-lines */ -import SentryCli from "@sentry/cli"; -import { - closeSession, - DEFAULT_ENVIRONMENT, - getTraceData, - makeSession, - setMeasurement, - startSpan, -} from "@sentry/core"; -import * as dotenv from "dotenv"; -import * as fs from "fs"; -import * as os from "os"; -import * as path from "path"; -import type { NormalizedOptions } from "./options-mapping"; -import { normalizeUserOptions, validateOptions } from "./options-mapping"; -import type { Logger } from "./logger"; -import { createLogger } from "./logger"; -import { - allowedToSendTelemetry, - createSentryInstance, - safeFlushTelemetry, -} from "./sentry/telemetry"; -import type { Options, SentrySDKBuildFlags } from "./types"; +import SentryCli from '@sentry/cli'; +import { closeSession, DEFAULT_ENVIRONMENT, getTraceData, makeSession, setMeasurement, startSpan } from '@sentry/core'; +import * as dotenv from 'dotenv'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import type { NormalizedOptions } from './options-mapping'; +import { normalizeUserOptions, validateOptions } from './options-mapping'; +import type { Logger } from './logger'; +import { createLogger } from './logger'; +import { allowedToSendTelemetry, createSentryInstance, safeFlushTelemetry } from './sentry/telemetry'; +import type { Options, SentrySDKBuildFlags } from './types'; import { arrayify, getProjects, getTurborepoEnvPassthroughWarning, serializeIgnoreOptions, stripQueryAndHashFromPath, -} from "./utils"; -import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from "./debug-id-upload"; -import { globFiles } from "./glob"; -import { LIB_VERSION } from "./version"; +} from './utils'; +import { defaultRewriteSourcesHook, prepareBundleForDebugIdUpload } from './debug-id-upload'; +import { globFiles } from './glob'; +import { LIB_VERSION } from './version'; // Module-level guard to prevent duplicate deploy records when multiple bundler plugin // instances run in the same process (e.g. Next.js creates separate webpack compilers @@ -97,10 +86,7 @@ export type SentryBuildPluginManager = { /** * Uploads sourcemaps using the "Debug ID" method. This function takes a list of build artifact paths that will be uploaded */ - uploadSourcemaps( - buildArtifactPaths: string[], - opts?: { prepareArtifacts?: boolean } - ): Promise; + uploadSourcemaps(buildArtifactPaths: string[], opts?: { prepareArtifacts?: boolean }): Promise; /** * Will delete artifacts based on the passed `sourcemaps.filesToDeleteAfterUpload` option. @@ -146,7 +132,7 @@ export function createSentryBuildPluginManager( * E.g. `[sentry-webpack-plugin]` or `[@sentry/nextjs]` */ loggerPrefix: string; - } + }, ): SentryBuildPluginManager { const logger = createLogger({ prefix: bundlerPluginMetaContext.loggerPrefix, @@ -155,10 +141,7 @@ export function createSentryBuildPluginManager( }); try { - const dotenvFile = fs.readFileSync( - path.join(process.cwd(), ".env.sentry-build-plugin"), - "utf-8" - ); + const dotenvFile = fs.readFileSync(path.join(process.cwd(), '.env.sentry-build-plugin'), 'utf-8'); // NOTE: Do not use the dotenv.config API directly to read the dotenv file! For some ungodly reason, it falls back to reading `${process.cwd()}/.env` which is absolutely not what we want. const dotenvResult = dotenv.parse(dotenvFile); @@ -169,7 +152,7 @@ export function createSentryBuildPluginManager( logger.info('Using environment variables configured in ".env.sentry-build-plugin".'); } catch (e: unknown) { // Ignore "file not found" errors but throw all others - if (typeof e === "object" && e && "code" in e && e.code !== "ENOENT") { + if (typeof e === 'object' && e && 'code' in e && e.code !== 'ENOENT') { throw e; } } @@ -214,7 +197,7 @@ export function createSentryBuildPluginManager( options, shouldSendTelemetry, bundlerPluginMetaContext.buildTool, - bundlerPluginMetaContext.buildToolMajorVersion + bundlerPluginMetaContext.buildToolMajorVersion, ); const { release, environment = DEFAULT_ENVIRONMENT } = sentryClient.getOptions(); @@ -237,23 +220,23 @@ export function createSentryBuildPluginManager( } // We also need to manually end sessions on errors because beforeExit is not called on crashes - process.on("beforeExit", () => { + process.on('beforeExit', () => { endSession(); }); // Set the User-Agent that Sentry CLI will use when interacting with Sentry - process.env["SENTRY_PIPELINE"] = `${bundlerPluginMetaContext.buildTool}-plugin/${LIB_VERSION}`; + process.env['SENTRY_PIPELINE'] = `${bundlerPluginMetaContext.buildTool}-plugin/${LIB_VERSION}`; // Propagate debug flag to Sentry CLI via environment variable // Only set if not already defined to respect user's explicit configuration - if (options.debug && !process.env["SENTRY_LOG_LEVEL"]) { - process.env["SENTRY_LOG_LEVEL"] = "debug"; + if (options.debug && !process.env['SENTRY_LOG_LEVEL']) { + process.env['SENTRY_LOG_LEVEL'] = 'debug'; } // Not a bulletproof check but should be good enough to at least sometimes determine // if the plugin is called in dev/watch mode or for a prod build. The important part // here is to avoid a false positive. False negatives are okay. - const isDevMode = process.env["NODE_ENV"] === "development"; + const isDevMode = process.env['NODE_ENV'] === 'development'; /** * Handles errors caught and emitted in various areas of the plugin. @@ -265,23 +248,23 @@ export function createSentryBuildPluginManager( * should throw an error (which causes a build fail in most bundlers) or continue. */ function handleRecoverableError(unknownError: unknown, throwByDefault: boolean): void { - sentrySession.status = "abnormal"; + sentrySession.status = 'abnormal'; try { if (options.errorHandler) { try { if (unknownError instanceof Error) { options.errorHandler(unknownError); } else { - options.errorHandler(new Error("An unknown error occurred")); + options.errorHandler(new Error('An unknown error occurred')); } } catch (e) { - sentrySession.status = "crashed"; + sentrySession.status = 'crashed'; throw e; } } else { // setting the session to "crashed" b/c from a plugin perspective this run failed. // However, we're intentionally not rethrowing the error to avoid breaking the user build. - sentrySession.status = "crashed"; + sentrySession.status = 'crashed'; if (throwByDefault) { throw unknownError; } @@ -294,10 +277,7 @@ export function createSentryBuildPluginManager( if (!validateOptions(options, logger)) { // Throwing by default to avoid a misconfigured plugin going unnoticed. - handleRecoverableError( - new Error("Options were not set correctly. See output above for more details."), - true - ); + handleRecoverableError(new Error('Options were not set correctly. See output above for more details.'), true); } // We have multiple plugins depending on generated source map files. (debug ID upload, legacy upload) @@ -310,7 +290,7 @@ export function createSentryBuildPluginManager( const buildArtifactsDependencySubscribers: (() => void)[] = []; function notifyBuildArtifactDependencySubscribers(): void { - buildArtifactsDependencySubscribers.forEach((subscriber) => { + buildArtifactsDependencySubscribers.forEach(subscriber => { subscriber(); }); } @@ -332,7 +312,7 @@ export function createSentryBuildPluginManager( * the dependency producers as much time as possible to register themselves. */ function waitUntilBuildArtifactDependenciesAreFreed(): Promise { - return new Promise((resolve) => { + return new Promise(resolve => { buildArtifactsDependencySubscribers.push(() => { if (dependenciesOnBuildArtifacts.size === 0) { resolve(); @@ -350,22 +330,22 @@ export function createSentryBuildPluginManager( const { bundleSizeOptimizations } = options; if (bundleSizeOptimizations.excludeDebugStatements) { - bundleSizeOptimizationReplacementValues["__SENTRY_DEBUG__"] = false; + bundleSizeOptimizationReplacementValues['__SENTRY_DEBUG__'] = false; } if (bundleSizeOptimizations.excludeTracing) { - bundleSizeOptimizationReplacementValues["__SENTRY_TRACING__"] = false; + bundleSizeOptimizationReplacementValues['__SENTRY_TRACING__'] = false; } if (bundleSizeOptimizations.excludeReplayCanvas) { - bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_CANVAS__"] = true; + bundleSizeOptimizationReplacementValues['__RRWEB_EXCLUDE_CANVAS__'] = true; } if (bundleSizeOptimizations.excludeReplayIframe) { - bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_IFRAME__"] = true; + bundleSizeOptimizationReplacementValues['__RRWEB_EXCLUDE_IFRAME__'] = true; } if (bundleSizeOptimizations.excludeReplayShadowDom) { - bundleSizeOptimizationReplacementValues["__RRWEB_EXCLUDE_SHADOW_DOM__"] = true; + bundleSizeOptimizationReplacementValues['__RRWEB_EXCLUDE_SHADOW_DOM__'] = true; } if (bundleSizeOptimizations.excludeReplayWorker) { - bundleSizeOptimizationReplacementValues["__SENTRY_EXCLUDE_REPLAY_WORKER__"] = true; + bundleSizeOptimizationReplacementValues['__SENTRY_EXCLUDE_REPLAY_WORKER__'] = true; } } @@ -381,7 +361,7 @@ export function createSentryBuildPluginManager( bundleMetadata[`_sentryBundlerPluginAppKey:${options.applicationKey}`] = true; } - if (typeof options.moduleMetadata === "function") { + if (typeof options.moduleMetadata === 'function') { const args = { org: options.org, project: getProjects(options.project)?.[0], @@ -429,9 +409,9 @@ export function createSentryBuildPluginManager( async emitBundlerPluginExecutionSignal() { if (await shouldSendTelemetry) { logger.info( - "Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`." + 'Sending telemetry data on issues and performance to Sentry. To disable telemetry, set `options.telemetry` to `false`.', ); - startSpan({ name: "Sentry Bundler Plugin execution", scope: sentryScope }, () => { + startSpan({ name: 'Sentry Bundler Plugin execution', scope: sentryScope }, () => { // }); await safeFlushTelemetry(sentryClient); @@ -451,56 +431,50 @@ export function createSentryBuildPluginManager( async createRelease() { if (!options.release.name) { logger.debug( - "No release name provided. Will not create release. Please set the `release.name` option to identify your release." + 'No release name provided. Will not create release. Please set the `release.name` option to identify your release.', ); return; } else if (isDevMode) { - logger.debug("Running in development mode. Will not create release."); + logger.debug('Running in development mode. Will not create release.'); return; } else if (!options.authToken) { logger.warn( - `No auth token provided. Will not create release. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN")}` + `No auth token provided. Will not create release. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning('SENTRY_AUTH_TOKEN')}`, ); return; - } else if (!options.org && !options.authToken.startsWith("sntrys_")) { + } else if (!options.org && !options.authToken.startsWith('sntrys_')) { logger.warn( - `No organization slug provided. Will not create release. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning("SENTRY_ORG")}` + `No organization slug provided. Will not create release. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning('SENTRY_ORG')}`, ); return; - } else if ( - !options.project || - (Array.isArray(options.project) && options.project.length === 0) - ) { + } else if (!options.project || (Array.isArray(options.project) && options.project.length === 0)) { logger.warn( - `No project provided. Will not create release. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning("SENTRY_PROJECT")}` + `No project provided. Will not create release. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning('SENTRY_PROJECT')}`, ); return; } // It is possible that this writeBundle hook is called multiple times in one build (for example when reusing the plugin, or when using build tooling like `@vitejs/plugin-legacy`) // Therefore we need to actually register the execution of this hook as dependency on the sourcemap files. - const freeWriteBundleInvocationDependencyOnSourcemapFiles = - createDependencyOnBuildArtifacts(); + const freeWriteBundleInvocationDependencyOnSourcemapFiles = createDependencyOnBuildArtifacts(); try { const cliInstance = createCliInstance(options); if (options.release.create) { const releaseOutput = await cliInstance.releases.new(options.release.name); - logger.debug("Release created:", releaseOutput); + logger.debug('Release created:', releaseOutput); } if (options.release.uploadLegacySourcemaps) { const normalizedInclude = arrayify(options.release.uploadLegacySourcemaps) - .map((includeItem) => - typeof includeItem === "string" ? { paths: [includeItem] } : includeItem - ) - .map((includeEntry) => ({ + .map(includeItem => (typeof includeItem === 'string' ? { paths: [includeItem] } : includeItem)) + .map(includeEntry => ({ ...includeEntry, validate: includeEntry.validate ?? false, ext: includeEntry.ext - ? includeEntry.ext.map((extension) => `.${extension.replace(/^\./, "")}`) - : [".js", ".map", ".jsbundle", ".bundle"], + ? includeEntry.ext.map(extension => `.${extension.replace(/^\./, '')}`) + : ['.js', '.map', '.jsbundle', '.bundle'], ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined, })); @@ -510,7 +484,7 @@ export function createSentryBuildPluginManager( projects: getProjects(options.project), // We want this promise to throw if the sourcemaps fail to upload so that we know about it. // see: https://github.com/getsentry/sentry-cli/pull/2605 - live: "rejectOnError", + live: 'rejectOnError', }); } @@ -520,18 +494,18 @@ export function createSentryBuildPluginManager( options.release.name, // set commits always exists due to the normalize function // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - options.release.setCommits! + options.release.setCommits!, ); } catch (e) { // shouldNotThrowOnFailure being present means that the plugin defaulted to `{ auto: true }` for the setCommitsOptions, meaning that wee should not throw when CLI throws because there is no repo if ( options.release.setCommits && - "shouldNotThrowOnFailure" in options.release.setCommits && + 'shouldNotThrowOnFailure' in options.release.setCommits && options.release.setCommits.shouldNotThrowOnFailure ) { logger.debug( - "An error occurred setting commits on release (this message can be ignored unless you commits on release are desired):", - e + 'An error occurred setting commits on release (this message can be ignored unless you commits on release are desired):', + e, ); } else { throw e; @@ -564,28 +538,20 @@ export function createSentryBuildPluginManager( Only use this if you need to manually inject debug IDs into the build artifacts. */ async injectDebugIds(buildArtifactPaths: string[]) { - await startSpan( - { name: "inject-debug-ids", scope: sentryScope, forceTransaction: true }, - async () => { - try { - const cliInstance = createCliInstance(options); - await cliInstance.execute( - [ - "sourcemaps", - "inject", - ...serializeIgnoreOptions(options.sourcemaps?.ignore), - ...buildArtifactPaths, - ], - options.debug ? "rejectOnError" : false - ); - } catch (e) { - sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); - handleRecoverableError(e, false); - } finally { - await safeFlushTelemetry(sentryClient); - } + await startSpan({ name: 'inject-debug-ids', scope: sentryScope, forceTransaction: true }, async () => { + try { + const cliInstance = createCliInstance(options); + await cliInstance.execute( + ['sourcemaps', 'inject', ...serializeIgnoreOptions(options.sourcemaps?.ignore), ...buildArtifactPaths], + options.debug ? 'rejectOnError' : false, + ); + } catch (e) { + sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); + handleRecoverableError(e, false); + } finally { + await safeFlushTelemetry(sentryClient); } - ); + }); }, /** @@ -606,15 +572,13 @@ export function createSentryBuildPluginManager( // Early exit if assets is explicitly set to an empty array const assets = options.sourcemaps?.assets; if (Array.isArray(assets) && assets.length === 0) { - logger.debug( - "Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID." - ); + logger.debug('Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID.'); return; } await startSpan( // This is `forceTransaction`ed because this span is used in dashboards in the form of indexed transactions. - { name: "debug-id-sourcemap-upload", scope: sentryScope, forceTransaction: true }, + { name: 'debug-id-sourcemap-upload', scope: sentryScope, forceTransaction: true }, async () => { // If we're not using a temp folder, we must not prepare artifacts in-place (to avoid mutating user files) const shouldPrepare = opts?.prepareArtifacts ?? true; @@ -633,9 +597,7 @@ export function createSentryBuildPluginManager( if (assets) { pathsToUpload = Array.isArray(assets) ? assets : [assets]; logger.debug( - `Direct upload mode: passing user-provided assets directly to CLI: ${pathsToUpload.join( - ", " - )}` + `Direct upload mode: passing user-provided assets directly to CLI: ${pathsToUpload.join(', ')}`, ); } else { // Use original paths e.g. like ['.next/server'] directly –> preferred way when no globbing is done @@ -647,9 +609,9 @@ export function createSentryBuildPluginManager( ? options.sourcemaps?.ignore : [options.sourcemaps?.ignore] : []; - await startSpan({ name: "upload", scope: sentryScope }, async () => { + await startSpan({ name: 'upload', scope: sentryScope }, async () => { const cliInstance = createCliInstance(options); - await cliInstance.releases.uploadSourceMaps(options.release.name ?? "undefined", { + await cliInstance.releases.uploadSourceMaps(options.release.name ?? 'undefined', { include: [ { paths: pathsToUpload, @@ -659,11 +621,11 @@ export function createSentryBuildPluginManager( ], ignore: ignorePaths, projects: getProjects(options.project), - live: "rejectOnError", + live: 'rejectOnError', }); }); - logger.info("Successfully uploaded source maps to Sentry"); + logger.info('Successfully uploaded source maps to Sentry'); } else { // Prepare artifacts in temp folder before uploading let globAssets: string | string[]; @@ -671,17 +633,17 @@ export function createSentryBuildPluginManager( globAssets = assets; } else { logger.debug( - "No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts." + 'No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts.', ); globAssets = buildArtifactPaths; } const globResult = await startSpan( - { name: "glob", scope: sentryScope }, - async () => await globFiles(globAssets, { ignore: options.sourcemaps?.ignore }) + { name: 'glob', scope: sentryScope }, + async () => await globFiles(globAssets, { ignore: options.sourcemaps?.ignore }), ); - const debugIdChunkFilePaths = globResult.filter((debugIdChunkFilePath) => { + const debugIdChunkFilePaths = globResult.filter(debugIdChunkFilePath => { return !!stripQueryAndHashFromPath(debugIdChunkFilePath).match(/\.(js|mjs|cjs)$/); }); @@ -691,110 +653,95 @@ export function createSentryBuildPluginManager( if (debugIdChunkFilePaths.length === 0) { logger.warn( - "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option." + "Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option.", ); } else { - const tmpUploadFolder = await startSpan( - { name: "mkdtemp", scope: sentryScope }, - async () => { - return ( - process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"] || - (await fs.promises.mkdtemp( - path.join(os.tmpdir(), "sentry-bundler-plugin-upload-") - )) - ); - } - ); + const tmpUploadFolder = await startSpan({ name: 'mkdtemp', scope: sentryScope }, async () => { + return ( + process.env?.['SENTRY_TEST_OVERRIDE_TEMP_DIR'] || + (await fs.promises.mkdtemp(path.join(os.tmpdir(), 'sentry-bundler-plugin-upload-'))) + ); + }); folderToCleanUp = tmpUploadFolder; // Prepare into temp folder, then upload - await startSpan( - { name: "prepare-bundles", scope: sentryScope }, - async (prepBundlesSpan) => { - // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so - // instead we do it with a maximum of 16 concurrent workers - const preparationTasks = debugIdChunkFilePaths.map( - (chunkFilePath, chunkIndex) => async () => { - await prepareBundleForDebugIdUpload( - chunkFilePath, - tmpUploadFolder, - chunkIndex, - logger, - options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook, - options.sourcemaps?.resolveSourceMap - ); - } + await startSpan({ name: 'prepare-bundles', scope: sentryScope }, async prepBundlesSpan => { + // Preparing the bundles can be a lot of work and doing it all at once has the potential of nuking the heap so + // instead we do it with a maximum of 16 concurrent workers + const preparationTasks = debugIdChunkFilePaths.map((chunkFilePath, chunkIndex) => async () => { + await prepareBundleForDebugIdUpload( + chunkFilePath, + tmpUploadFolder, + chunkIndex, + logger, + options.sourcemaps?.rewriteSources ?? defaultRewriteSourcesHook, + options.sourcemaps?.resolveSourceMap, ); - const workers: Promise[] = []; - const worker = async (): Promise => { - while (preparationTasks.length > 0) { - const task = preparationTasks.shift(); - if (task) { - await task(); - } + }); + const workers: Promise[] = []; + const worker = async (): Promise => { + while (preparationTasks.length > 0) { + const task = preparationTasks.shift(); + if (task) { + await task(); } - }; - for (let workerIndex = 0; workerIndex < 16; workerIndex++) { - workers.push(worker()); } + }; + for (let workerIndex = 0; workerIndex < 16; workerIndex++) { + workers.push(worker()); + } - await Promise.all(workers); + await Promise.all(workers); - const files = await fs.promises.readdir(tmpUploadFolder); - const stats = files.map((file) => - fs.promises.stat(path.join(tmpUploadFolder, file)) - ); - const uploadSize = (await Promise.all(stats)).reduce( - (accumulator, { size }) => accumulator + size, - 0 - ); + const files = await fs.promises.readdir(tmpUploadFolder); + const stats = files.map(file => fs.promises.stat(path.join(tmpUploadFolder, file))); + const uploadSize = (await Promise.all(stats)).reduce( + (accumulator, { size }) => accumulator + size, + 0, + ); - setMeasurement("files", files.length, "none", prepBundlesSpan); - setMeasurement("upload_size", uploadSize, "byte", prepBundlesSpan); + setMeasurement('files', files.length, 'none', prepBundlesSpan); + setMeasurement('upload_size', uploadSize, 'byte', prepBundlesSpan); - await startSpan({ name: "upload", scope: sentryScope }, async () => { - const cliInstance = createCliInstance(options); - await cliInstance.releases.uploadSourceMaps( - options.release.name ?? "undefined", + await startSpan({ name: 'upload', scope: sentryScope }, async () => { + const cliInstance = createCliInstance(options); + await cliInstance.releases.uploadSourceMaps(options.release.name ?? 'undefined', { + include: [ { - include: [ - { - paths: [tmpUploadFolder], - rewrite: false, - dist: options.release.dist, - }, - ], - projects: getProjects(options.project), - live: "rejectOnError", - } - ); + paths: [tmpUploadFolder], + rewrite: false, + dist: options.release.dist, + }, + ], + projects: getProjects(options.project), + live: 'rejectOnError', }); - } - ); + }); + }); - logger.info("Successfully uploaded source maps to Sentry"); + logger.info('Successfully uploaded source maps to Sentry'); } } } catch (e) { sentryScope.captureException('Error in "debugIdUploadPlugin" writeBundle hook'); handleRecoverableError(e, false); } finally { - if (folderToCleanUp && !process.env?.["SENTRY_TEST_OVERRIDE_TEMP_DIR"]) { - logger.debug("Cleaning up temporary files..."); - void startSpan({ name: "cleanup", scope: sentryScope }, async () => { + if (folderToCleanUp && !process.env?.['SENTRY_TEST_OVERRIDE_TEMP_DIR']) { + logger.debug('Cleaning up temporary files...'); + void startSpan({ name: 'cleanup', scope: sentryScope }, async () => { if (folderToCleanUp) { await fs.promises.rm(folderToCleanUp, { recursive: true, force: true }); logger.debug(`Temporary folder deleted: ${folderToCleanUp}`); } }); } - logger.debug("Freeing upload dependencies..."); + logger.debug('Freeing upload dependencies...'); freeUploadDependencyOnBuildArtifacts(); - logger.debug("Flushing telemetry data..."); + logger.debug('Flushing telemetry data...'); await safeFlushTelemetry(sentryClient); - logger.debug("Telemetry flushed. Plugin upload process complete."); + logger.debug('Telemetry flushed. Plugin upload process complete.'); } - } + }, ); }, @@ -807,26 +754,21 @@ export function createSentryBuildPluginManager( if (filesToDelete !== undefined) { const filePathsToDelete = await globFiles(filesToDelete); - logger.debug( - "Waiting for dependencies on generated files to be freed before deleting..." - ); + logger.debug('Waiting for dependencies on generated files to be freed before deleting...'); await waitUntilBuildArtifactDependenciesAreFreed(); - filePathsToDelete.forEach((filePathToDelete) => { + filePathsToDelete.forEach(filePathToDelete => { logger.debug(`Deleting asset after upload: ${filePathToDelete}`); }); await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + filePathsToDelete.map(filePathToDelete => + fs.promises.rm(filePathToDelete, { force: true }).catch(e => { // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) + logger.debug(`An error occurred while attempting to delete asset: ${filePathToDelete}`, e); + }), + ), ); } } catch (e) { @@ -841,36 +783,30 @@ export function createSentryBuildPluginManager( }; } -function canUploadSourceMaps( - options: NormalizedOptions, - logger: Logger, - isDevMode: boolean -): boolean { +function canUploadSourceMaps(options: NormalizedOptions, logger: Logger, isDevMode: boolean): boolean { if (options.sourcemaps?.disable) { - logger.debug( - "Source map upload was disabled. Will not upload sourcemaps using debug ID process." - ); + logger.debug('Source map upload was disabled. Will not upload sourcemaps using debug ID process.'); return false; } if (isDevMode) { - logger.debug("Running in development mode. Will not upload sourcemaps."); + logger.debug('Running in development mode. Will not upload sourcemaps.'); return false; } if (!options.authToken) { logger.warn( - `No auth token provided. Will not upload source maps. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning("SENTRY_AUTH_TOKEN")}` + `No auth token provided. Will not upload source maps. Please set the \`authToken\` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/${getTurborepoEnvPassthroughWarning('SENTRY_AUTH_TOKEN')}`, ); return false; } - if (!options.org && !options.authToken.startsWith("sntrys_")) { + if (!options.org && !options.authToken.startsWith('sntrys_')) { logger.warn( - `No org provided. Will not upload source maps. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning("SENTRY_ORG")}` + `No org provided. Will not upload source maps. Please set the \`org\` option to your Sentry organization slug.${getTurborepoEnvPassthroughWarning('SENTRY_ORG')}`, ); return false; } if (!getProjects(options.project)?.[0]) { logger.warn( - `No project provided. Will not upload source maps. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning("SENTRY_PROJECT")}` + `No project provided. Will not upload source maps. Please set the \`project\` option to your Sentry project slug.${getTurborepoEnvPassthroughWarning('SENTRY_PROJECT')}`, ); return false; } diff --git a/packages/bundler-plugins/src/core/debug-id-upload.ts b/packages/bundler-plugins/src/core/debug-id-upload.ts index a078719f6e84..932f326e1e98 100644 --- a/packages/bundler-plugins/src/core/debug-id-upload.ts +++ b/packages/bundler-plugins/src/core/debug-id-upload.ts @@ -1,20 +1,18 @@ -import fs from "fs"; -import path from "path"; -import * as url from "url"; -import * as util from "util"; -import { promisify } from "util"; -import type { SentryBuildPluginManager } from "./build-plugin-manager"; -import type { Logger } from "./logger"; -import type { ResolveSourceMapHook, RewriteSourcesHook } from "./types"; -import { stripQueryAndHashFromPath } from "./utils"; +import fs from 'fs'; +import path from 'path'; +import * as url from 'url'; +import * as util from 'util'; +import { promisify } from 'util'; +import type { SentryBuildPluginManager } from './build-plugin-manager'; +import type { Logger } from './logger'; +import type { ResolveSourceMapHook, RewriteSourcesHook } from './types'; +import { stripQueryAndHashFromPath } from './utils'; interface DebugIdUploadPluginOptions { sentryBuildPluginManager: SentryBuildPluginManager; } -export function createDebugIdUploadFunction({ - sentryBuildPluginManager, -}: DebugIdUploadPluginOptions) { +export function createDebugIdUploadFunction({ sentryBuildPluginManager }: DebugIdUploadPluginOptions) { return async (buildArtifactPaths: string[]) => { // Webpack and perhaps other bundlers allow you to append query strings to // filenames for cache busting purposes. We should strip these before upload. @@ -29,23 +27,20 @@ export async function prepareBundleForDebugIdUpload( chunkIndex: number, logger: Logger, rewriteSourcesHook: RewriteSourcesHook, - resolveSourceMapHook: ResolveSourceMapHook | undefined + resolveSourceMapHook: ResolveSourceMapHook | undefined, ): Promise { let bundleContent; try { - bundleContent = await promisify(fs.readFile)(bundleFilePath, "utf8"); + bundleContent = await promisify(fs.readFile)(bundleFilePath, 'utf8'); } catch (e) { - logger.error( - `Could not read bundle to determine debug ID and source map: ${bundleFilePath}`, - e - ); + logger.error(`Could not read bundle to determine debug ID and source map: ${bundleFilePath}`, e); return; } const debugId = determineDebugIdFromBundleSource(bundleContent); if (debugId === undefined) { logger.debug( - `Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ${bundleFilePath}` + `Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ${bundleFilePath}`, ); return; } @@ -56,22 +51,22 @@ export async function prepareBundleForDebugIdUpload( const writeSourceFilePromise = fs.promises.writeFile( path.join(uploadFolder, `${uniqueUploadName}.js`), bundleContent, - "utf-8" + 'utf-8', ); const writeSourceMapFilePromise = determineSourceMapPathFromBundle( bundleFilePath, bundleContent, logger, - resolveSourceMapHook - ).then(async (sourceMapPath) => { + resolveSourceMapHook, + ).then(async sourceMapPath => { if (sourceMapPath) { await prepareSourceMapForDebugIdUpload( sourceMapPath, path.join(uploadFolder, `${uniqueUploadName}.js.map`), debugId, rewriteSourcesHook, - logger + logger, ); } }); @@ -88,7 +83,7 @@ export async function prepareBundleForDebugIdUpload( */ function determineDebugIdFromBundleSource(code: string): string | undefined { const match = code.match( - /sentry-dbid-([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})/ + /sentry-dbid-([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})/, ); if (match) { @@ -121,7 +116,7 @@ export async function determineSourceMapPathFromBundle( bundlePath: string, bundleSource: string, logger: Logger, - resolveSourceMapHook: ResolveSourceMapHook | undefined + resolveSourceMapHook: ResolveSourceMapHook | undefined, ): Promise { const sourceMappingUrlMatch = bundleSource.match(/^\s*\/\/# sourceMappingURL=(.*)$/m); const sourceMappingUrl = sourceMappingUrlMatch ? (sourceMappingUrlMatch[1] as string) : undefined; @@ -130,9 +125,7 @@ export async function determineSourceMapPathFromBundle( if (resolveSourceMapHook) { logger.debug( - `Calling sourcemaps.resolveSourceMap(${JSON.stringify(bundlePath)}, ${JSON.stringify( - sourceMappingUrl - )})` + `Calling sourcemaps.resolveSourceMap(${JSON.stringify(bundlePath)}, ${JSON.stringify(sourceMappingUrl)})`, ); const customPath = await resolveSourceMapHook(bundlePath, sourceMappingUrl); logger.debug(`resolveSourceMap hook returned: ${JSON.stringify(customPath)}`); @@ -151,7 +144,7 @@ export async function determineSourceMapPathFromBundle( // noop } - if (parsedUrl?.protocol === "file:") { + if (parsedUrl?.protocol === 'file:') { searchLocations.push(url.fileURLToPath(sourceMappingUrl)); } else if (parsedUrl) { // noop, non-file urls don't translate to a local sourcemap file @@ -178,11 +171,9 @@ export async function determineSourceMapPathFromBundle( // This is just a debug message because it can be quite spammy for some frameworks logger.debug( `Could not determine source map path for bundle \`${bundlePath}\`` + - ` with sourceMappingURL=${ - sourceMappingUrl === undefined ? "undefined" : `\`${sourceMappingUrl}\`` - }` + + ` with sourceMappingURL=${sourceMappingUrl === undefined ? 'undefined' : `\`${sourceMappingUrl}\``}` + ` - Did you turn on source map generation in your bundler?` + - ` (Attempted paths: ${searchLocations.map((e) => `\`${e}\``).join(", ")})` + ` (Attempted paths: ${searchLocations.map(e => `\`${e}\``).join(', ')})`, ); return undefined; } @@ -195,12 +186,12 @@ async function prepareSourceMapForDebugIdUpload( targetPath: string, debugId: string, rewriteSourcesHook: RewriteSourcesHook, - logger: Logger + logger: Logger, ): Promise { let sourceMapFileContent: string; try { sourceMapFileContent = await util.promisify(fs.readFile)(sourceMapPath, { - encoding: "utf8", + encoding: 'utf8', }); } catch (e) { logger.error(`Failed to read source map for debug ID upload: ${sourceMapPath}`, e); @@ -211,23 +202,21 @@ async function prepareSourceMapForDebugIdUpload( try { map = JSON.parse(sourceMapFileContent) as { sources: unknown; [key: string]: unknown }; // For now we write both fields until we know what will become the standard - if ever. - map["debug_id"] = debugId; - map["debugId"] = debugId; + map['debug_id'] = debugId; + map['debugId'] = debugId; } catch { logger.error(`Failed to parse source map for debug ID upload: ${sourceMapPath}`); return; } - if (map["sources"] && Array.isArray(map["sources"])) { + if (map['sources'] && Array.isArray(map['sources'])) { const mapDir = path.dirname(sourceMapPath); - map["sources"] = map["sources"].map((source: string) => - rewriteSourcesHook(source, map, { mapDir }) - ); + map['sources'] = map['sources'].map((source: string) => rewriteSourcesHook(source, map, { mapDir })); } try { await util.promisify(fs.writeFile)(targetPath, JSON.stringify(map), { - encoding: "utf8", + encoding: 'utf8', }); } catch (e) { logger.error(`Failed to prepare source map for debug ID upload: ${sourceMapPath}`, e); @@ -238,7 +227,7 @@ async function prepareSourceMapForDebugIdUpload( const PROTOCOL_REGEX = /^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\//; export function defaultRewriteSourcesHook(source: string): string { if (source.match(PROTOCOL_REGEX)) { - return source.replace(PROTOCOL_REGEX, ""); + return source.replace(PROTOCOL_REGEX, ''); } else { return path.relative(process.cwd(), path.normalize(source)); } diff --git a/packages/bundler-plugins/src/core/glob.ts b/packages/bundler-plugins/src/core/glob.ts index b413e2c64141..0329b62b10a3 100644 --- a/packages/bundler-plugins/src/core/glob.ts +++ b/packages/bundler-plugins/src/core/glob.ts @@ -1,8 +1,8 @@ -import { glob } from "glob"; +import { glob } from 'glob'; export function globFiles( patterns: string | string[], - options?: { root?: string; ignore?: string | string[] } + options?: { root?: string; ignore?: string | string[] }, ): Promise { return glob(patterns, { absolute: true, nodir: true, ...options }); } diff --git a/packages/bundler-plugins/src/core/index.ts b/packages/bundler-plugins/src/core/index.ts index 425c86f9ed33..bd58dbcd557e 100644 --- a/packages/bundler-plugins/src/core/index.ts +++ b/packages/bundler-plugins/src/core/index.ts @@ -1,11 +1,9 @@ -import { transformAsync } from "@babel/core"; -import componentNameAnnotatePlugin, { - experimentalComponentNameAnnotatePlugin, -} from "../babel-plugin"; -import SentryCli from "@sentry/cli"; -import { debug } from "@sentry/core"; -import * as fs from "fs"; -import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from "./utils"; +import { transformAsync } from '@babel/core'; +import componentNameAnnotatePlugin, { experimentalComponentNameAnnotatePlugin } from '../babel-plugin'; +import SentryCli from '@sentry/cli'; +import { debug } from '@sentry/core'; +import * as fs from 'fs'; +import { CodeInjection, containsOnlyImports, stripQueryAndHashFromPath } from './utils'; /** * Determines whether the Sentry CLI binary is in its expected location. @@ -28,7 +26,7 @@ export const COMMENT_USE_STRICT_REGEX = */ export function isJsFile(fileName: string): boolean { const cleanFileName = stripQueryAndHashFromPath(fileName); - return [".js", ".mjs", ".cjs"].some((ext) => cleanFileName.endsWith(ext)); + return ['.js', '.mjs', '.cjs'].some(ext => cleanFileName.endsWith(ext)); } /** @@ -45,33 +43,25 @@ export function isJsFile(fileName: string): boolean { * @param facadeModuleId - The facade module ID (if any) - HTML files create facade chunks * @returns true if the chunk should be skipped */ -export function shouldSkipCodeInjection( - code: string, - facadeModuleId: string | null | undefined -): boolean { +export function shouldSkipCodeInjection(code: string, facadeModuleId: string | null | undefined): boolean { // Skip empty chunks - these are placeholder chunks that should be optimized away if (code.trim().length === 0) { return true; } // For HTML facade chunks, only skip if they contain only import statements - if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith(".html")) { + if (facadeModuleId && stripQueryAndHashFromPath(facadeModuleId).endsWith('.html')) { return containsOnlyImports(code); } return false; } -export { globFiles } from "./glob"; +export { globFiles } from './glob'; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function createComponentNameAnnotateHooks( - ignoredComponents: string[], - injectIntoHtml: boolean -) { - type ParserPlugins = NonNullable< - NonNullable[1]>["parserOpts"] - >["plugins"]; +export function createComponentNameAnnotateHooks(ignoredComponents: string[], injectIntoHtml: boolean) { + type ParserPlugins = NonNullable[1]>['parserOpts']>['plugins']; return { async transform(this: void, code: string, id: string) { @@ -83,27 +73,25 @@ export function createComponentNameAnnotateHooks( } // We will only apply this plugin on jsx and tsx files - if (![".jsx", ".tsx"].some((ending) => idWithoutQueryAndHash.endsWith(ending))) { + if (!['.jsx', '.tsx'].some(ending => idWithoutQueryAndHash.endsWith(ending))) { return null; } const parserPlugins: ParserPlugins = []; - if (idWithoutQueryAndHash.endsWith(".jsx")) { - parserPlugins.push("jsx"); - } else if (idWithoutQueryAndHash.endsWith(".tsx")) { - parserPlugins.push("jsx", "typescript"); + if (idWithoutQueryAndHash.endsWith('.jsx')) { + parserPlugins.push('jsx'); + } else if (idWithoutQueryAndHash.endsWith('.tsx')) { + parserPlugins.push('jsx', 'typescript'); } - const plugin = injectIntoHtml - ? experimentalComponentNameAnnotatePlugin - : componentNameAnnotatePlugin; + const plugin = injectIntoHtml ? experimentalComponentNameAnnotatePlugin : componentNameAnnotatePlugin; try { const result = await transformAsync(code, { plugins: [[plugin, { ignoredComponents }]], filename: id, parserOpts: { - sourceType: "module", + sourceType: 'module', allowAwaitOutsideFunction: true, plugins: parserPlugins, }, @@ -128,18 +116,18 @@ export function createComponentNameAnnotateHooks( export function getDebugIdSnippet(debugId: string): CodeInjection { return new CodeInjection( - `var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");` + `var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="${debugId}",e._sentryDebugIdIdentifier="sentry-dbid-${debugId}");`, ); } -export type { Logger } from "./logger"; -export type { Options, SentrySDKBuildFlags } from "./types"; +export type { Logger } from './logger'; +export type { Options, SentrySDKBuildFlags } from './types'; export { CodeInjection, replaceBooleanFlagsInCode, stringToUUID, generateReleaseInjectorCode, generateModuleMetadataInjectorCode, -} from "./utils"; -export { createSentryBuildPluginManager } from "./build-plugin-manager"; -export { createDebugIdUploadFunction } from "./debug-id-upload"; +} from './utils'; +export { createSentryBuildPluginManager } from './build-plugin-manager'; +export { createDebugIdUploadFunction } from './debug-id-upload'; diff --git a/packages/bundler-plugins/src/core/options-mapping.ts b/packages/bundler-plugins/src/core/options-mapping.ts index e75093e12731..f1774d772752 100644 --- a/packages/bundler-plugins/src/core/options-mapping.ts +++ b/packages/bundler-plugins/src/core/options-mapping.ts @@ -1,4 +1,4 @@ -import type { Logger } from "./logger"; +import type { Logger } from './logger'; import type { Options as UserOptions, SetCommitsOptions, @@ -7,8 +7,8 @@ import type { IncludeEntry, ModuleMetadata, ModuleMetadataCallback, -} from "./types"; -import { determineReleaseName } from "./utils"; +} from './types'; +import { determineReleaseName } from './utils'; export type NormalizedOptions = { org: string | undefined; @@ -23,7 +23,7 @@ export type NormalizedOptions = { disable: boolean; sourcemaps: | { - disable?: boolean | "disable-upload"; + disable?: boolean | 'disable-upload'; assets?: string | string[]; ignore?: string | string[]; rewriteSources?: RewriteSourcesHook; @@ -85,19 +85,19 @@ export type NormalizedOptions = { } & Record; }; -export const SENTRY_SAAS_URL = "https://sentry.io"; +export const SENTRY_SAAS_URL = 'https://sentry.io'; // oxlint-disable-next-line complexity export function normalizeUserOptions(userOptions: UserOptions): NormalizedOptions { const options = { - org: userOptions.org ?? process.env["SENTRY_ORG"], + org: userOptions.org ?? process.env['SENTRY_ORG'], project: userOptions.project ?? - (process.env["SENTRY_PROJECT"]?.includes(",") - ? process.env["SENTRY_PROJECT"].split(",").map((p) => p.trim()) - : process.env["SENTRY_PROJECT"]), - authToken: userOptions.authToken ?? process.env["SENTRY_AUTH_TOKEN"], - url: userOptions.url ?? process.env["SENTRY_URL"] ?? SENTRY_SAAS_URL, + (process.env['SENTRY_PROJECT']?.includes(',') + ? process.env['SENTRY_PROJECT'].split(',').map(p => p.trim()) + : process.env['SENTRY_PROJECT']), + authToken: userOptions.authToken ?? process.env['SENTRY_AUTH_TOKEN'], + url: userOptions.url ?? process.env['SENTRY_URL'] ?? SENTRY_SAAS_URL, headers: userOptions.headers, debug: userOptions.debug ?? false, silent: userOptions.silent ?? false, @@ -107,11 +107,11 @@ export function normalizeUserOptions(userOptions: UserOptions): NormalizedOption sourcemaps: userOptions.sourcemaps, release: { ...userOptions.release, - name: userOptions.release?.name ?? process.env["SENTRY_RELEASE"] ?? determineReleaseName(), + name: userOptions.release?.name ?? process.env['SENTRY_RELEASE'] ?? determineReleaseName(), inject: userOptions.release?.inject ?? true, create: userOptions.release?.create ?? true, finalize: userOptions.release?.finalize ?? true, - vcsRemote: userOptions.release?.vcsRemote ?? process.env["SENTRY_VSC_REMOTE"] ?? "origin", + vcsRemote: userOptions.release?.vcsRemote ?? process.env['SENTRY_VSC_REMOTE'] ?? 'origin', setCommits: userOptions.release?.setCommits as | (SetCommitsOptions & { shouldNotThrowOnFailure?: boolean }) | false @@ -132,20 +132,20 @@ export function normalizeUserOptions(userOptions: UserOptions): NormalizedOption if (options.release.setCommits === undefined) { if ( - process.env["VERCEL"] && - process.env["VERCEL_GIT_COMMIT_SHA"] && - process.env["VERCEL_GIT_REPO_SLUG"] && - process.env["VERCEL_GIT_REPO_OWNER"] && + process.env['VERCEL'] && + process.env['VERCEL_GIT_COMMIT_SHA'] && + process.env['VERCEL_GIT_REPO_SLUG'] && + process.env['VERCEL_GIT_REPO_OWNER'] && // We only want to set commits for the production env because Sentry becomes extremely noisy (eg on slack) for // preview environments because the previous commit is always the "stem" commit of the preview/PR causing Sentry // to notify you for other people creating PRs. - process.env["VERCEL_TARGET_ENV"] === "production" + process.env['VERCEL_TARGET_ENV'] === 'production' ) { options.release.setCommits = { shouldNotThrowOnFailure: true, - commit: process.env["VERCEL_GIT_COMMIT_SHA"], - previousCommit: process.env["VERCEL_GIT_PREVIOUS_SHA"], - repo: `${process.env["VERCEL_GIT_REPO_OWNER"]}/${process.env["VERCEL_GIT_REPO_SLUG"]}`, + commit: process.env['VERCEL_GIT_COMMIT_SHA'], + previousCommit: process.env['VERCEL_GIT_PREVIOUS_SHA'], + repo: `${process.env['VERCEL_GIT_REPO_OWNER']}/${process.env['VERCEL_GIT_REPO_SLUG']}`, ignoreEmpty: true, ignoreMissing: true, }; @@ -159,14 +159,10 @@ export function normalizeUserOptions(userOptions: UserOptions): NormalizedOption } } - if ( - options.release.deploy === undefined && - process.env["VERCEL"] && - process.env["VERCEL_TARGET_ENV"] - ) { + if (options.release.deploy === undefined && process.env['VERCEL'] && process.env['VERCEL_TARGET_ENV']) { options.release.deploy = { - env: `vercel-${process.env["VERCEL_TARGET_ENV"]}`, - url: process.env["VERCEL_URL"] ? `https://${process.env["VERCEL_URL"]}` : undefined, + env: `vercel-${process.env['VERCEL_TARGET_ENV']}`, + url: process.env['VERCEL_URL'] ? `https://${process.env['VERCEL_URL']}` : undefined, }; } @@ -190,28 +186,29 @@ export function validateOptions(options: NormalizedOptions, logger: Logger): boo if (setCommits) { if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) { logger.error( - "The `setCommits` option was specified but is missing required properties.", - "Please set either `auto` or both, `repo` and `commit`." + 'The `setCommits` option was specified but is missing required properties.', + 'Please set either `auto` or both, `repo` and `commit`.', ); return false; } - if (setCommits.auto && setCommits.repo && setCommits) { + // `auto` is mutually exclusive with `repo`/`commit` in the type definitions, + // so TS narrows those away once `auto` is truthy. Users can still pass all + // three at runtime though, which is exactly the conflict we want to warn + // about, so read `repo`/`commit` without that narrowing. + const { repo, commit } = setCommits as { repo?: string; commit?: string }; + if (setCommits.auto && repo && commit) { logger.warn( - "The `setCommits` options includes `auto` but also `repo` and `commit`.", - "Ignoring `repo` and `commit`.", - "Please only set either `auto` or both, `repo` and `commit`." + 'The `setCommits` options includes `auto` but also `repo` and `commit`.', + 'Ignoring `repo` and `commit`.', + 'Please only set either `auto` or both, `repo` and `commit`.', ); } } - if ( - options.release?.deploy && - typeof options.release.deploy === "object" && - !options.release.deploy.env - ) { + if (options.release?.deploy && typeof options.release.deploy === 'object' && !options.release.deploy.env) { logger.error( - "The `deploy` option was specified but is missing the required `env` property.", - "Please set the `env` property." + 'The `deploy` option was specified but is missing the required `env` property.', + 'Please set the `env` property.', ); return false; } @@ -219,18 +216,15 @@ export function validateOptions(options: NormalizedOptions, logger: Logger): boo if (options.project && Array.isArray(options.project)) { if (options.project.length === 0) { logger.error( - "The `project` option was specified as an array but is empty.", - "Please provide at least one project slug." + 'The `project` option was specified as an array but is empty.', + 'Please provide at least one project slug.', ); return false; } // Check each project is a non-empty string - const invalidProjects = options.project.filter((p) => typeof p !== "string" || p.trim() === ""); + const invalidProjects = options.project.filter(p => typeof p !== 'string' || p.trim() === ''); if (invalidProjects.length > 0) { - logger.error( - "The `project` option contains invalid project slugs.", - "All projects must be non-empty strings." - ); + logger.error('The `project` option contains invalid project slugs.', 'All projects must be non-empty strings.'); return false; } } diff --git a/packages/bundler-plugins/src/core/sentry/telemetry.ts b/packages/bundler-plugins/src/core/sentry/telemetry.ts index d0ed98369f3a..cb0709a6b468 100644 --- a/packages/bundler-plugins/src/core/sentry/telemetry.ts +++ b/packages/bundler-plugins/src/core/sentry/telemetry.ts @@ -1,16 +1,16 @@ -import SentryCli from "@sentry/cli"; -import type { Client } from "@sentry/types"; -import type { ServerRuntimeClientOptions } from "@sentry/core"; -import { applySdkMetadata, ServerRuntimeClient } from "@sentry/core"; -import type { NormalizedOptions } from "../options-mapping"; -import { SENTRY_SAAS_URL } from "../options-mapping"; -import { Scope } from "@sentry/core"; -import { createStackParser, nodeStackLineParser } from "@sentry/core"; -import { makeOptionallyEnabledNodeTransport } from "./transports"; -import { getProjects } from "../utils"; -import { LIB_VERSION } from "../version"; - -const SENTRY_SAAS_HOSTNAME = "sentry.io"; +import SentryCli from '@sentry/cli'; +import type { Client } from '@sentry/types'; +import type { ServerRuntimeClientOptions } from '@sentry/core'; +import { applySdkMetadata, ServerRuntimeClient } from '@sentry/core'; +import type { NormalizedOptions } from '../options-mapping'; +import { SENTRY_SAAS_URL } from '../options-mapping'; +import { Scope } from '@sentry/core'; +import { createStackParser, nodeStackLineParser } from '@sentry/core'; +import { makeOptionallyEnabledNodeTransport } from './transports'; +import { getProjects } from '../utils'; +import { LIB_VERSION } from '../version'; + +const SENTRY_SAAS_HOSTNAME = 'sentry.io'; const stackParser = createStackParser(nodeStackLineParser()); @@ -18,25 +18,25 @@ export function createSentryInstance( options: NormalizedOptions, shouldSendTelemetry: Promise, buildTool: string, - buildToolMajorVersion: string | undefined + buildToolMajorVersion: string | undefined, ): { sentryScope: Scope; sentryClient: Client } { const clientOptions: ServerRuntimeClientOptions = { - platform: "node", - runtime: { name: "node", version: global.process.version }, + platform: 'node', + runtime: { name: 'node', version: global.process.version }, - dsn: "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737", + dsn: 'https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737', tracesSampleRate: 1, sampleRate: 1, release: LIB_VERSION, integrations: [], - tracePropagationTargets: ["sentry.io/api"], + tracePropagationTargets: ['sentry.io/api'], stackParser, - beforeSend: (event) => { - event.exception?.values?.forEach((exception) => { + beforeSend: event => { + event.exception?.values?.forEach(exception => { delete exception.stacktrace; }); @@ -44,7 +44,7 @@ export function createSentryInstance( return event; }, - beforeSendTransaction: (event) => { + beforeSendTransaction: event => { delete event.server_name; // Server name might contain PII return event; }, @@ -54,7 +54,7 @@ export function createSentryInstance( transport: makeOptionallyEnabledNodeTransport(shouldSendTelemetry), }; - applySdkMetadata(clientOptions, "node"); + applySdkMetadata(clientOptions, 'node'); const client = new ServerRuntimeClient(clientOptions); const scope = new Scope(); @@ -69,55 +69,55 @@ export function setTelemetryDataOnScope( options: NormalizedOptions, scope: Scope, buildTool: string, - buildToolMajorVersion?: string + buildToolMajorVersion?: string, ): void { const { org, project, release, errorHandler, sourcemaps, reactComponentAnnotation } = options; - scope.setTag("upload-legacy-sourcemaps", !!release.uploadLegacySourcemaps); + scope.setTag('upload-legacy-sourcemaps', !!release.uploadLegacySourcemaps); if (release.uploadLegacySourcemaps) { scope.setTag( - "uploadLegacySourcemapsEntries", - Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1 + 'uploadLegacySourcemapsEntries', + Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1, ); } - scope.setTag("module-metadata", !!options.moduleMetadata); - scope.setTag("inject-build-information", !!options._experiments.injectBuildInformation); + scope.setTag('module-metadata', !!options.moduleMetadata); + scope.setTag('inject-build-information', !!options._experiments.injectBuildInformation); // Optional release pipeline steps if (release.setCommits) { - scope.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual"); + scope.setTag('set-commits', release.setCommits.auto === true ? 'auto' : 'manual'); } else { - scope.setTag("set-commits", "undefined"); + scope.setTag('set-commits', 'undefined'); } - scope.setTag("finalize-release", release.finalize); - scope.setTag("deploy-options", !!release.deploy); + scope.setTag('finalize-release', release.finalize); + scope.setTag('deploy-options', !!release.deploy); // Miscellaneous options - scope.setTag("custom-error-handler", !!errorHandler); - scope.setTag("sourcemaps-assets", !!sourcemaps?.assets); - scope.setTag("delete-after-upload", !!sourcemaps?.filesToDeleteAfterUpload); - scope.setTag("sourcemaps-disabled", !!sourcemaps?.disable); + scope.setTag('custom-error-handler', !!errorHandler); + scope.setTag('sourcemaps-assets', !!sourcemaps?.assets); + scope.setTag('delete-after-upload', !!sourcemaps?.filesToDeleteAfterUpload); + scope.setTag('sourcemaps-disabled', !!sourcemaps?.disable); - scope.setTag("react-annotate", !!reactComponentAnnotation?.enabled); + scope.setTag('react-annotate', !!reactComponentAnnotation?.enabled); - scope.setTag("node", process.version); - scope.setTag("platform", process.platform); + scope.setTag('node', process.version); + scope.setTag('platform', process.platform); - scope.setTag("meta-framework", options._metaOptions.telemetry.metaFramework ?? "none"); + scope.setTag('meta-framework', options._metaOptions.telemetry.metaFramework ?? 'none'); - scope.setTag("application-key-set", options.applicationKey !== undefined); + scope.setTag('application-key-set', options.applicationKey !== undefined); - scope.setTag("ci", !!process.env["CI"]); + scope.setTag('ci', !!process.env['CI']); scope.setTags({ organization: org, - project: Array.isArray(project) ? project.join(", ") : (project ?? "undefined"), + project: Array.isArray(project) ? project.join(', ') : (project ?? 'undefined'), bundler: buildTool, }); if (buildToolMajorVersion) { - scope.setTag("bundler-major-version", buildToolMajorVersion); + scope.setTag('bundler-major-version', buildToolMajorVersion); } scope.setUser({ id: org }); @@ -151,14 +151,14 @@ export async function allowedToSendTelemetry(options: NormalizedOptions): Promis // We need to check and decide to use telemetry based on the CLI's response to this call // because only at this time we checked a possibly existing .sentryclirc file. This file // could point to another URL than the default URL. - cliInfo = await cli.execute(["info"], false); + cliInfo = await cli.execute(['info'], false); } catch { return false; } const cliInfoUrl = cliInfo .split(/(\r\n|\n|\r)/)[0] - ?.replace(/^Sentry Server: /, "") + ?.replace(/^Sentry Server: /, '') ?.trim(); if (cliInfoUrl === undefined) { diff --git a/packages/bundler-plugins/src/core/sentry/transports.ts b/packages/bundler-plugins/src/core/sentry/transports.ts index 0626e3b194c2..a679ed968a19 100644 --- a/packages/bundler-plugins/src/core/sentry/transports.ts +++ b/packages/bundler-plugins/src/core/sentry/transports.ts @@ -1,19 +1,19 @@ /** * This is a simplified version of the Sentry Node SDK's HTTP transport. */ -import * as https from "node:https"; -import { Readable } from "node:stream"; -import { createGzip } from "node:zlib"; -import { createTransport, suppressTracing } from "@sentry/core"; +import * as https from 'node:https'; +import { Readable } from 'node:stream'; +import { createGzip } from 'node:zlib'; +import { createTransport, suppressTracing } from '@sentry/core'; import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest, TransportRequestExecutor, -} from "@sentry/types"; -import { join } from "node:path"; -import { appendFileSync, mkdirSync } from "node:fs"; +} from '@sentry/types'; +import { join } from 'node:path'; +import { appendFileSync, mkdirSync } from 'node:fs'; // Estimated maximum size for reasonable standalone event const GZIP_THRESHOLD = 1024 * 32; @@ -44,48 +44,48 @@ function createRequestExecutor(options: BaseTransportOptions): TransportRequestE const headers: Record = {}; if (request.body.length > GZIP_THRESHOLD) { - headers["content-encoding"] = "gzip"; + headers['content-encoding'] = 'gzip'; body = body.pipe(createGzip()); } const req = https.request( { - method: "POST", + method: 'POST', headers, hostname, path: `${pathname}${search}`, port, protocol, }, - (res) => { - res.on("data", () => { + res => { + res.on('data', () => { // Drain socket }); - res.on("end", () => { + res.on('end', () => { // Drain socket }); - res.setEncoding("utf8"); + res.setEncoding('utf8'); // "Key-value pairs of header names and values. Header names are lower-cased." // https://nodejs.org/api/http.html#http_message_headers - const retryAfterHeader = res.headers["retry-after"] ?? null; - const rateLimitsHeader = res.headers["x-sentry-rate-limits"] ?? null; + const retryAfterHeader = res.headers['retry-after'] ?? null; + const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null; resolve({ statusCode: res.statusCode, headers: { - "retry-after": retryAfterHeader, - "x-sentry-rate-limits": Array.isArray(rateLimitsHeader) + 'retry-after': retryAfterHeader, + 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader) ? rateLimitsHeader[0] || null : rateLimitsHeader, }, }); - } + }, ); - req.on("error", reject); + req.on('error', reject); body.pipe(req); }); }); @@ -103,29 +103,26 @@ function makeNodeTransport(options: BaseTransportOptions): Transport { /** A transport that can be optionally enabled as a later time than it's * creation */ export function makeOptionallyEnabledNodeTransport( - shouldSendTelemetry: Promise + shouldSendTelemetry: Promise, ): (options: BaseTransportOptions) => Transport { - return (nodeTransportOptions) => { + return nodeTransportOptions => { const nodeTransport = makeNodeTransport(nodeTransportOptions); return { - flush: (timeout) => nodeTransport.flush(timeout), - send: async (request) => { + flush: timeout => nodeTransport.flush(timeout), + send: async request => { // If global.__SENTRY_INTERCEPT_TRANSPORT__ is an array, we push the // envelope into it for testing purposes. - if ( - "__SENTRY_INTERCEPT_TRANSPORT__" in global && - Array.isArray(global.__SENTRY_INTERCEPT_TRANSPORT__) - ) { + if ('__SENTRY_INTERCEPT_TRANSPORT__' in global && Array.isArray(global.__SENTRY_INTERCEPT_TRANSPORT__)) { global.__SENTRY_INTERCEPT_TRANSPORT__.push(request); return { statusCode: 200 }; } if (await shouldSendTelemetry) { - if (process.env["SENTRY_TEST_OUT_DIR"]) { - const outDir = process.env["SENTRY_TEST_OUT_DIR"]; + if (process.env['SENTRY_TEST_OUT_DIR']) { + const outDir = process.env['SENTRY_TEST_OUT_DIR']; mkdirSync(outDir, { recursive: true }); - const path = join(outDir, "sentry-telemetry.json"); + const path = join(outDir, 'sentry-telemetry.json'); appendFileSync(path, `${JSON.stringify(request)},\n`); return { statusCode: 200 }; } diff --git a/packages/bundler-plugins/src/core/types.ts b/packages/bundler-plugins/src/core/types.ts index 2d197e3b25a0..5f641d3a21a4 100644 --- a/packages/bundler-plugins/src/core/types.ts +++ b/packages/bundler-plugins/src/core/types.ts @@ -110,7 +110,7 @@ export interface Options { * * @default false */ - disable?: boolean | "disable-upload"; + disable?: boolean | 'disable-upload'; /** * A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry. @@ -434,7 +434,7 @@ export type RewriteSourcesHook = (source: string, map: any, context?: { mapDir: export type ResolveSourceMapHook = ( artifactPath: string, - sourceMappingUrl: string | undefined + sourceMappingUrl: string | undefined, ) => string | undefined | Promise; export interface ModuleMetadata { diff --git a/packages/bundler-plugins/src/core/utils.ts b/packages/bundler-plugins/src/core/utils.ts index 3a24e4ead126..608929407fd8 100644 --- a/packages/bundler-plugins/src/core/utils.ts +++ b/packages/bundler-plugins/src/core/utils.ts @@ -1,12 +1,30 @@ /* oxlint-disable max-lines */ -import findUp from "find-up"; -import path from "path"; -import fs from "fs"; -import os from "os"; -import crypto from "crypto"; -import childProcess from "child_process"; -import type { SourceMap } from "magic-string"; -import MagicString from "magic-string"; +import findUp from 'find-up'; +import path from 'path'; +import fs from 'fs'; +import os from 'os'; +import crypto from 'crypto'; +import childProcess from 'child_process'; +import type { SourceMap } from 'magic-string'; +import MagicString from 'magic-string'; + +// Only escape characters that `JSON.stringify` leaves literal but that are +// unsafe to inline into generated JavaScript: `<`/`>`/`&` (so a `` +// sequence can't break out of an inline